EXCEL VBAで複数のブックからタブ区切りテキストに一括で別名保存する

 最近,Lancersを利用する機会があった.月次のファイルを10年分,計120個のブックをダウンロードし,テーブル形式に整形したブックが納品された.これらをSQL Serverにインポートしたいのだが,手動でタブ区切りテキストに別名保存するのは骨が折れる.

 結局VBAで処理することにした.その際の備忘録である.

前提条件

 処理前のブックはすべて同一フォルダ内にあるものとし,6桁の固定長文字列でブック名が命名されているものとする.処理を行うコードの記載されたマクロブックも同一フォルダ内にあるものとする.

 別名保存するテキストファイルも同一フォルダ内に出力するものとする.

 「ツール」メニューの「参照設定」でMicrosoft Scripting Runtimeにチェックを入れる.

コード

Sub sample()
Dim myFSO   As Scripting.FileSystemObject
Dim myFiles As Scripting.Files
Dim myFile  As Scripting.File
Dim myWB    As Workbook
Dim i       As Long

Set myFSO = New Scripting.FileSystemObject
Set myFiles = myFSO.GetFolder(ThisWorkbook.Path).Files
Application.ScreenUpdating = False
i = 0
For Each myFile In myFiles
    With myFile
        If Left(.Name, 3) = "201" And Right(.Name, 3) <> "txt" Then
            Set myWB = Workbooks.Open(myFile.Path)
            myWB.SaveAs Filename:=myFile.ParentFolder.Path & "\" & Left(myFile.Name, 6) & ".txt", FileFormat:=xlText
            myWB.Close
            i = i + 1
        End If
    End With
Next myFile
Application.ScreenUpdating = True
MsgBox prompt:=i
End Sub

まとめ

 複数のエクセルブックをタブ区切りテキストに一括で別名保存する方法を記した.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください