エクセルVBAでのCSV出力方法について
エクセルVBAを使ってCSVを出力しようとしているのですが、
狙った範囲を上手くCSV化することが出来ずに苦戦しています。
どなたかアドバイスを頂けませんでしょうか。
使用してるエクセルは2010になります。
シート2のコマンドボタンを押すことでシート1の内容をCSV化したいと考えています。
シート1のA1に入力した内容がCSVのタイトルになります。
2行目はヘッダーですが、CSVには反映しないように制御をかけています。
↓が実際に書いてみたVBAですが、どうしてもシート1の内容を持ってきてしまいます。
どのように改修したらシート2の内容を持ってこれるでしょうか。
Private Sub CommandButton1_Click()
Dim MyFile, FileType, Prompt As String
Dim FileNamePath As Variant
Dim StartRow, StartCol, EndRow, EndCol As Integer
Dim Rowcnt, Colcnt As Integer
Dim UsedCell As Range
Dim ch1 As Long
'対象のシートをアクティブにする
Worksheets("シート1").Activate
'ファイル名の取得
MyFile = ActiveSheet.Range("A1") & ".csv"
FileType = "CSV ファイル (*.csv),*.csv"
Prompt = "保存するファイルの名前を付けてください"
'保存するファイルのパスを取得します
FileNamePath = SaveFileNamePath(MyFile, FileType, Prompt)
If FileNamePath = False Then 'キャンセルボタンが押された
End
End If
'空いているファイル番号を取得します
ch1 = FreeFile
'FileNamePath のファイルをオープンします
Open FileNamePath For Output As #ch1
'使用しているセルの取得
Set UsedCell = ActiveSheet.UsedRange
StartRow = UsedCell.Cells(3).row
StartCol = UsedCell.Cells(1).Column
EndRow = UsedCell.Cells(UsedCell.Count).row
EndCol = UsedCell.Cells(UsedCell.Count).Column
For Rowcnt = StartRow To EndRow
For Colcnt = StartCol To EndCol - 1
'改行を挿入しないで書き出す ; を最後に付ける
Write #ch1, Cells(Rowcnt, Colcnt);
Next
'改行を挿入する
Write #ch1, Cells(Rowcnt, EndCol)
Next
'ファイルを閉じます
Close #ch1
End Sub
Function SaveFileNamePath(MyFile, FileType, Prompt) As Variant
SaveFileNamePath = Application.GetSaveAsFilename(MyFile, FileType)
End Function
アドバイスを頂けたらと思います。
どうぞ宜しくお願いします。
お礼
おかげさまでできました。ありがとうございます。 ただ、セレクトをいれることによって画面遷移が発生していまうのがたまにきずですね。