- ベストアンサー
Excelマクロ/ファイル名を指定してインポート
テキストファイルからExcelへインポートする作業を自動化させたいのですが。 毎回インポート元のファイル名(格納しているフォルダは同じです)が異なるので、マクロ記録ではうまく作成できません。VBAでないと無理でしょうか? できればファイル名をその都度入力するようなダイアログボックスが表示されれば理想的です。VBA初心者なので教えてください。
- みんなの回答 (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
その他の回答 (2)
- shishishishi
- ベストアンサー率39% (362/921)
質問者: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
- shishishishi
- ベストアンサー率39% (362/921)
組み込みダイアログですね? ファイルを開くダイアログボックスなら以下のマクロで呼び出せます。 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
お礼
No.1,2共とても参考になりました。試してみてすごい便利で助かります。。 御礼が遅くなりましたが、本当にありがとうございました。