Excel VBAで特定のシートをCSV出力する方法
エクセルでデータ作ってCSV保存→システムで取り込みってよくあるパターンかと思うのですが、ユーザに保存するときにCSVで保存してくださいって毎回言うのめんどくさいなーと思うのは自分だけじゃないはず。
という事で今回は、今開いているファイルの特定のシートを同一ディレクトリにCSVで保存する簡単なロジックをメモ
結構汎用的な作りにしてるからいろいろ便利なはず。
当初はExcel形式で保存する作りだったのでCSVでは必要なロジックも含まれてますが、まぁご愛嬌で
Public Function ExportCSV() On Error GoTo func_Err Application.ScreenUpdating = False 'レンダリングを止める Application.DisplayAlerts = False 'メッセージを出さない Dim strNewBookName As String strNewBookName = "新しいファイル名" 'このファイルと同一ディレクトリに[変数:strNewBookName]の名前でCSV形式で保存(FileFormat:= の部分を変えると違う形式で保存できる。) Workbooks.Add.SaveAs Filename:=ThisWorkbook.Path & "\" & strNewBookName, FileFormat:=xlCSV 'このファイルの[シート:strNewBookName]をコピーし上記で新しく作ったファイルの[シート:Sheet1]にペースト→保存→閉じる SheetCSV.Cells.Copy With Workbooks(strNewBookName & ".csv") 'ファイル名の指定(別形式で保存する際はちゃんと拡張子あわせる) .Worksheets(strNewBookName).Range("A1").PasteSpecial Paste:=xlPasteAll 'すべて貼り付ける .Worksheets(strNewBookName).Range("A1").Select 'シート全選択状態から[セル:A1]のみ選択状態に .Save .Close End With Call MsgBox("出力完了", vbInformation) GoTo func_End func_Err: Call MsgBox("出力失敗", vbCritical) func_End: Application.CutCopyMode = False 'コピーモードをオフ(コピー時に出る点線を消す) Application.DisplayAlerts = True 'メッセージを出す Application.ScreenUpdating = True 'レンダリング再開 End Function