プロが教えるわが家の防犯対策術!

テキストファイルからExcelへインポートする作業を自動化させたいのですが。
毎回インポート元のファイル名(格納しているフォルダは同じです)が異なるので、マクロ記録ではうまく作成できません。VBAでないと無理でしょうか?
できればファイル名をその都度入力するようなダイアログボックスが表示されれば理想的です。VBA初心者なので教えてください。

A 回答 (3件)

No1&2です。



InputBoxはやはり使いづらいですね。
変えました。これでどうでしょう?
常にデスクトップ\フォルダ1を開くと思いますのでテキストファイルを選択してください。

Sub TEST02()
ChDir "C:\WINDOWS\デスクトップ\フォルダ1"
Dim strFileName As Variant
strFileName = Application.GetOpenFilename(FileFilter:="テキストファイル (*.txt), *.txt")

If strFileName = "False" Then Exit Sub

Workbooks.OpenText Filename:=strFileName, StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, _
Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1))

mytxtfile = ActiveWorkbook.Name
Cells.Select
Selection.Copy
ThisWorkbook.Activate
ThisWorkbook.Sheets.Add
ActiveSheet.Paste
Application.CutCopyMode = False
Workbooks(mytxtfile).Close
End Sub
    • good
    • 2
この回答へのお礼

No.1,2共とても参考になりました。試してみてすごい便利で助かります。。
御礼が遅くなりましたが、本当にありがとうございました。

お礼日時:2004/04/19 09:49

質問者:kalmitさんの意図がよくわかってないのでぜんぜん違うかもしれませんが・・・・。



まずエクセルからはじめるのですよね?
そして特定のフォルダから名前を指定したテキストファイルを開く。
それをエクセルにもってこれればいいのですよね?

では以下のではいかがでしょうか?


Sub TEST01()

Dim Inp As Variant

Inp = InputBox("入力してください。", "ファイル名入力", ".txt")
Workbooks.OpenText Filename:="C:\WINDOWS\デスクトップ\フォルダ1\" & Inp, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1))

Cells.Select
Selection.Copy
ThisWorkbook.Activate
ThisWorkbook.Sheets.Add
ActiveSheet.Paste
Application.CutCopyMode = False

Windows(Inp).Activate
ActiveWindow.Close

End Sub
    • good
    • 3

組み込みダイアログですね?



ファイルを開くダイアログボックスなら以下のマクロで呼び出せます。

Sub hiraku()
Application.Dialogs(xlDialogOpen).Show
End Sub

この回答への補足

ありがとうございます。せっかくなのですが、これだと開くフォルダがその都度変わってしまう可能性がないでしょうか?
一定のフォルダから、ファイル名だけ毎回変わっていく処理なのですが。。
あと、ファイル名を毎回指定したあと、インポートしていく手順も自動化したいのですが、現状のマクロとどう組み合わせたらよいでしょうか。やってみたのですが、うまくいきませんでした。
現状のマクロとは、「開く」から始まってテキストファイルインポートを完了していく手順をマクロ記録しただけのものです。
以下その内容です。

Sub Macro1()

Workbooks.OpenText Filename:="C:\WINDOWS\デスクトップ\フォルダ1\インポート用1.txt", _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1))

End Sub

補足日時:2004/04/16 09:16
    • good
    • 0

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