Excelワークシートで特定のセルに日付を入力して、マクロがテキストファイルを含むフォルダーに移動するマクロを開発したいと思います。あなたが言うことができるデータベース。日付として書き込まれている対応するファイル名を検索し、データを区切り記号で区切り、最初に日付を入力した場所のすぐ下のセルに貼り付けます。
フォルダーは常に同じ場所にあり、テキストファイルはすべてDD_MM_YYYYでフォーマットされます。そして、下のセルは常に空になります
私が求めているものを理解しやすくするためのいくつかの写真。
マクロ内からテキストインポートWizard(または、その機能を使用できます)を呼び出すことができるため、これは思ったよりも簡単です。CSVパーサーを記述したり、そのような空想は何でも。
実際、以下のマクロで行ったのは、組み込みのレコード関数を使用し、ニーズに合わせて少し調整することだけです。
何か問題が発生した場合に備えて、現在のExcelファイルをバックアップします。
マクロのfolder
の定義を、すべてのデータファイルを含むパスに変更します。末尾にスラッシュが含まれていることを確認してください。
必須ファイルの名前を含む列のヘッダーセルを選択しますファイル拡張子を含む。拡張子を削除したい場合は、データのロード後にこのフィールドを編集できます。
マクロを実行します。
現在のセルからファイル名を取得し、指定されたfolder
を調べて、セルで指定されたファイルを開きます。次に、CSVとしてインポートします。正確に1つのセル下選択したセル(マクロの開始時).
そのため、マクロを実行すると、選択したセルの下のセルが上書きされる可能性があります。注意が必要です。
ファイルが見つからない場合、またはその他のエラーが発生した場合、これは通常のVBAエラーボックスで失敗し、わかりやすいエラーメッセージは表示されません。
QueryTables
を自分で使用する方法を学ぶのではなく、録音から取得すると言ったように、これの一部はおそらくトリミングできますが、そのままでは問題はなく、確実に機能するようです。
Sub LoadFromFile()
Dim fileName As String, folder As String
folder = "C:\Path\To\Your\Files\"
fileName = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("A1").Select
With ActiveSheet.QueryTables _
.Add(Connection:="TEXT;" & folder & fileName, Destination:=ActiveCell)
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub