MENU

【実務向けVBA】選択したCSVファイルを読み込んでシートにコピー&自動で閉じる手順

A子さん

ユーザーが自由にCSVファイルを選べるようにしたい
CSVの内容をワークシートにコピーしたい
処理後、CSVファイルは自動的に閉じたい

結論:GetOpenFilename+Workbooks.Open+Paste+Close で全て自動化可能!

先輩

CSVの取り込み処理は実務で頻繁に登場しますが、下記コードを使えば「選択→読み込み→コピー→閉じる」までをスマートに実現できます。

目次

実行イメージ

  • 実行するとファイル選択ダイアログが開く
  • 選んだCSVファイルの内容が、現在アクティブなシートにコピーされる
  • CSVファイルは自動的に閉じられる

ステップ別で解説

① ファイル選択ダイアログでCSVを選ばせる

Dim csvPath As String
csvPath = Application.GetOpenFilename("CSVファイル (*.csv), *.csv", , "CSVファイルを選択してください")
If csvPath = "False" Then Exit Sub ' キャンセル時は終了

② CSVをブックとして開く

Dim csvBook As Workbook
Set csvBook = Workbooks.Open(Filename:=csvPath)

③ CSVの内容をコピーして、アクティブシートに貼り付け

csvBook.Sheets(1).UsedRange.Copy Destination:=ThisWorkbook.ActiveSheet.Range("A1")

④ CSVファイルを保存せずに閉じる

csvBook.Close SaveChanges:=False

全体のコード(そのまま使えます)

Sub ImportCSVtoSheet()
    Dim csvPath As String
    Dim csvBook As Workbook

    ' CSVファイルを選択
    csvPath = Application.GetOpenFilename("CSVファイル (*.csv), *.csv", , "CSVファイルを選択してください")
    If csvPath = "False" Then Exit Sub

    ' CSVを開く
    Set csvBook = Workbooks.Open(Filename:=csvPath)

    ' 内容をアクティブシートへコピー
    csvBook.Sheets(1).UsedRange.Copy Destination:=ThisWorkbook.ActiveSheet.Range("A1")

    ' CSVを保存せず閉じる
    csvBook.Close SaveChanges:=False
End Sub

補足|よくあるカスタマイズ

カスタマイズ内容方法
特定のシートに貼り付けたいWorksheets("Sheet1").Range("A1") など指定
貼り付け前にシートをクリアCells.ClearContents を追加
別ファイルとして保存したいThisWorkbook.SaveAs を追加する

注意点

このコードでは CSVの最初のシートを対象としています(通常CSVには1シートのみ)

ファイル選択でキャンセルすると、マクロは自動終了します

上書き保存の操作は行っていないため、取り込んだ側のブックは手動保存が必要です

まとめ

処理内容使用するVBA構文
CSVファイルを選ぶApplication.GetOpenFilename
CSVファイルを開くWorkbooks.Open
データを貼り付けるUsedRange.Copy Destination:=~
CSVを閉じる(保存しない)Workbook.Close SaveChanges:=False
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次