| Top Page | プログラミング | テキスト保存/読み込み |
2006-01-23
updated on 2010-09-06
' ディレクトリ中のテキストファイルを,それぞれ一枚のワークシートとして, ' ひとつのワークブック(ファイル)に一括して読み込む. ' ' Coded by TAKENAKA, A. 2006-01-23 ' Revised by TAKENAKA, A. 2010-09-06 Sub LoadTextFiles() n_Suffix = Cells(4, 1).Value ' 対象ファイルの拡張子の情報 suf_File = Cells(5 + n_Suffix, 1).Value n_separator = Cells(4, 2).Value ' 一行中のデータの区切り文字の情報 byTab = True byComma = False bySpace = False conseq = False If (n_separator = 1) Then ' タブ区切り byTab = True byComma = False bySpace = False conseq = False ElseIf (n_separator = 2) Then ' コンマ区切り byTab = False byComma = True bySpace = False conseq = False ElseIf (n_separator = 3) Then ' スペース区切り byTab = False byComma = False bySpace = True conseq = True ' 連続したスペースはひとつの区切りとみなす Else MsgBox "データ区切りの選択が不正です." Exit Sub End If ' 作製するファイル名を指定 ver = Application.Version If ver * 1 >= 12 Then ' 2007 以降 file_filter = "Excel File,*.xlsx;*.xlsm,Excel 2003,*.xls" Else ' 2003 以前 file_filter = "Excel File,*.xls" End If Target = Application.GetSaveAsFilename(InitialFileName:="", _ FileFilter:=file_filter) If Target = False Then ' ファイル名を指定しなかったら終了 Exit Sub End If ' 新規作成ブックのシート数の設定を保存してから,1枚に設定. With Application n_Sheets = .SheetsInNewWorkbook .SheetsInNewWorkbook = 1 End With ' MsgBox ("Target = " & Target) ' 新しいワークブックを作り,上で指定した名前で保存. Workbooks.Add ActiveWorkbook.SaveAs Filename:=Target Set TargetBook = ActiveWorkbook ' フォルダ内の,指定した拡張子を持つファイル名(ひとつ)を取得 file = Dir(TargetBook.Path & "\*" & suf_File) If file = "" Then MsgBox "テキストファイルはありません。" Exit Sub End If count_file = 0 '該当テキストファイル数を数える. While file <> "" count_file = count_file + 1 file = Dir Wend rvl = MsgBox(count_file & "個のテキストファイルを読み込みます", 33, "確認") If (rvl <> vbOK) Then ' [OK] でないなら中止 Exit Sub End If ' あらためて,指定した拡張子を持つファイル名(ひとつ)を取得 file = Dir(TargetBook.Path & "\*" & suf_File) count_file = 1 While file <> "" ' テキストファイルを読み込む Workbooks.OpenText Filename:=file, DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=conseq, _ Tab:=byTab, Semicolon:=False, Comma:=byComma, Space:=bySpace, _ Other:=False, TrailingMinusNumbers:=True ' ファイルを読み込んで作られたシートを , 作成中のファイルへのコピー Sheets(1).Select Sheets(1).Move After:=TargetBook.Sheets(count_file) file = Dir ' 次のファイル名を取得 count_file = count_file + 1 Wend Application.DisplayAlerts = False ' 確認メッセージを抑止 Sheets(1).Select ' 最初にできた空のシートを選択. ActiveWindow.SelectedSheets.Delete ' シートの削除 TargetBook.SaveAs Filename:=Target ' ファイルを保存 Application.DisplayAlerts = True ' 確認メッセージの抑止を解除 ' 新規作成ブックのシート数の設定をもとに戻す. Application.SheetsInNewWorkbook = n_Sheets End Sub