アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBA初心者です。質問があまりに簡単という方もいらっしゃるかも知れませんが、
仕事上非常に困っているので何とぞよろしくお願い致します。

以下のようなマクロを教えてください(>_<)
動作:フォルダ内の複数のテキストファイルをエクセルのシートごとにインポートする。

条件:1.テキストファイルが保存されているフォルダは一つ

2.テキストファイルのファイル名に規則性はなし

3.保存されているテキストファイルのファイル数は不特定

動作例:フォルダ内に、10コのテキストファイルが保存されている場合
→それぞれのテキストファイルがエクセルの各シート(この場合、10枚のシート)に
インポートされる。

以上、何とぞご教授のほどお願い致します!

A 回答 (4件)

簡単じゃなくて、かなり高度なほうです。



説明も大変なので、
1、フォルダ内のファイル名の一覧を取得(↓参考 下のほうをみてください)
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
2、テキストファイル読み込み(↓参考 下のほうをみてください)
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
3、シートを追加して書き出す。

を組み合わせればいいかと思いますが。
    • good
    • 0
この回答へのお礼

leavemeさん。ご回答ありがとうございました。
こういったサイトがあることを全然知りませんでした(^_^;)
参考になるサイトを教えて頂きとても助かります<m(__)m>

お礼日時:2010/05/15 12:48

ファイルの検索はこちら


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

こんな感じになります。
    • good
    • 0

「フォルダ内の複数のテキストファイルを・・・」


フォルダ内ファイルをダイアログ表示し人が選ぶ方法と、
VBAが勝手にフォルダ内ファイルを検知する方法とあります。

「テキストファイル」
カンマ区切りにでもしないと、1セルにテキストファイル1行そのままセットされますが
それでも良いですか。

仕掛けは機能的、段階を踏んで切り分けて考えてください。
・ファイルを選ぶ機能→【ファイル選択ダイアログ表示】
・1ファイル分読み込んでインポートする機能→【テキストファイルを読み込むVBA】
・2ファイル目以降は次のシートとする機能→【シート追加させるEXCELマクロ】
・一連の処理の繰り返し
・文字制御(,有無、”有無など)
・シート数制限、終了判定などの制御

EXCELでお仕事
http://www.asahi-net.or.jp/~ef2o-inue/menu/menu0 …

新しくマクロを作って、モジュール画面を見るとそれがコーディングされています。
マクロでできる部分はマクロを作ってモジュール流用しアレンジさせましょう。
    • good
    • 0
この回答へのお礼

layyさん。ご回答ありがとうございました。
貴重なアドバイスを頂き、処理工程を整理することがでました(^.^)
VBA・・深いですね・・(^_^;)

お礼日時:2010/05/15 12:46

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
    • good
    • 0
この回答へのお礼

kmetuさん。ご回答ありがとうございました。
教えて頂いたVBAで解決しました(>_<)

お礼日時:2010/05/15 12:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!