CSV ファイル (Thing Party プログラムによって生成されたもの) を外部データ ソースとして使用していますが、マクロからそのパスを変更したいのですが... どうすればできますか?
私の問題に対するもう 1 つの受け入れ可能な答えは、Excel ファイルへの相対パスを指定する方法ですが、方法がわかりません。私のケースでは、csv と xls の両方が同じディレクトリにあるためです。
答え1
Sub Import()
Dim FilePath As String
FilePath = "TEXT;C:\directory\" & Cells(1, 1).Value
ActiveWorkbook.Worksheets.Add
With ActiveSheet.QueryTables.Add(Connection:=FilePath, Destination:=Range("$A$1"))
.Name = "Book1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
これにより、ファイル (たとえば book3.csv) を sheet1 A1 に配置すると、データを含む新しいシートが作成されます。C:\directory を入力が存在するディレクトリに変更し、5 行目の "Range" で出力の範囲を変更できます。
さらに、3 行目の「Cells(1,1)」は入力セルを示しているので、必要に応じて Sheet1 A1 から変更できます。参照セルにファイル拡張子を指定する必要があります。そうしないと、どのファイルをインポートするかがわかりません。このマクロを実行するだけで、ターゲット データを含む新しいシートが作成されます。新しいワークブックが必要な場合、または既存のシートに挿入する必要がある場合は、お知らせください。
また、プロパティを見ると、これはコンマ区切りのファイルです。これを変更するか、独自のマクロを記録し(開発者タブ -> マクロの記録)、上部にFilePathタイプのコマンドを挿入して接続コマンドを変更します。