- ベストアンサー
VBA初心者のためのテキストファイルをエクセルにインポートする方法
- VBA初心者の方に向けて、テキストファイルをエクセルのシートごとにインポートする方法を教えてください。
- 条件として、テキストファイルが保存されているフォルダは一つであり、テキストファイルのファイル名に規則性はなく、保存されているテキストファイルの数も不特定です。
- 具体的な動作例として、フォルダ内に10個のテキストファイルが保存されている場合、それぞれのテキストファイルがエクセルのシートにインポートされることになります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ANo2です 全体的な一例です。 インポートのところはマクロの記録で自分のやりたい形式でコードを取得してください。 Sub test() Dim buf As String, i As Long buf = Dir("D:\*.TXT") Do While buf <> "" i = i + 1 If ActiveWorkbook.Worksheets.Count < i Then Worksheets.Add.Move after:=Worksheets(Worksheets.Count) End If Worksheets(i).Select With ActiveSheet.QueryTables.Add(Connection:="TEXT;D:\" & buf, _ Destination:=ActiveSheet.Range("A1")) .Name = buf .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With buf = Dir() Loop End Sub
その他の回答 (3)
- layy
- ベストアンサー率23% (292/1222)
「フォルダ内の複数のテキストファイルを・・・」 フォルダ内ファイルをダイアログ表示し人が選ぶ方法と、 VBAが勝手にフォルダ内ファイルを検知する方法とあります。 「テキストファイル」 カンマ区切りにでもしないと、1セルにテキストファイル1行そのままセットされますが それでも良いですか。 仕掛けは機能的、段階を踏んで切り分けて考えてください。 ・ファイルを選ぶ機能→【ファイル選択ダイアログ表示】 ・1ファイル分読み込んでインポートする機能→【テキストファイルを読み込むVBA】 ・2ファイル目以降は次のシートとする機能→【シート追加させるEXCELマクロ】 ・一連の処理の繰り返し ・文字制御(,有無、”有無など) ・シート数制限、終了判定などの制御 EXCELでお仕事 http://www.asahi-net.or.jp/~ef2o-inue/menu/menu01.html 新しくマクロを作って、モジュール画面を見るとそれがコーディングされています。 マクロでできる部分はマクロを作ってモジュール流用しアレンジさせましょう。
お礼
layyさん。ご回答ありがとうございました。 貴重なアドバイスを頂き、処理工程を整理することがでました(^.^) VBA・・深いですね・・(^_^;)
- kmetu
- ベストアンサー率41% (562/1346)
ファイルの検索はこちら http://officetanaka.net/excel/vba/file/file07.htm buf = Dir("D:\*.TXT") にすればいいでしょう。 インポートはマクロの記録で実際にインポートしてコードを取得して 一部書き換えてください。 たとえば With ActiveSheet.QueryTables.Add(Connection:="TEXT;D:\" & buf, _ Destination:=Range("A1")) .Name = buf .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With こんな感じになります。
- leaveme
- ベストアンサー率54% (6/11)
簡単じゃなくて、かなり高度なほうです。 説明も大変なので、 1、フォルダ内のファイル名の一覧を取得(↓参考 下のほうをみてください) http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html 2、テキストファイル読み込み(↓参考 下のほうをみてください) http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110.html 3、シートを追加して書き出す。 を組み合わせればいいかと思いますが。
お礼
leavemeさん。ご回答ありがとうございました。 こういったサイトがあることを全然知りませんでした(^_^;) 参考になるサイトを教えて頂きとても助かります<m(__)m>
お礼
kmetuさん。ご回答ありがとうございました。 教えて頂いたVBAで解決しました(>_<)