/ CSVインポート用のExcel内の相対パス/相対パス - excel、excel-vba、vba

CSVインポート用のExcel内の相対パス - Excel、Excel-VBA、VBA

私はこれが私がしてきたことと同じようにできることを願っています。これまでのところ、Excelはブック接続の相対パスをサポートしていません。ここにあるのは、CSVファイルからワークシートを自動更新するExcelワークブックです。これらはハードコードされたフォルダ(c:temppremiumreportsname_of_CSV_file.csv)からデータを取り込みます。この方法では、毎回c:temppremiumreportsにすべてのものを入れるように強制されます。または、ファイルを顧客に送信する場合、同じディレクトリ構造を作成する必要があります。 xlsxファイルを必要なCSVファイルを含む任意のフォルダ(c:reportまたはユーザーのデスクトップ)に配置し、xlsxを開くとデータが自動的にインポートされます。これは可能ですか?

現在のワークブック接続

ここに画像の説明を入力 ありがとう!

回答:

回答№1は0

ワークブックファイルが常にCSVファイルと同じフォルダにある場合は、ActiveWorkbook.Pathメソッドを使用して相対パスを設定できます。

csvファイル名と接続名が同じであると仮定した例:

Sub refreshMsgConnection()
Dim csvFileName As String
csvFileName = "msg_by_weeks.csv"

Dim filePath As String
filePath = ActiveWorkbook.path

Dim conString As String
conString = "TEXT;" & filePath & "" & csvFileName

With ActiveWorkbook.Connections("msg_by_weeks").Ranges.Item(1).QueryTable
.connection = conString
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.TextFilePromptOnRefresh = False
.Refresh BackgroundQuery:=False
End With
End Sub

あなたはいくつかの設定で遊ぶ必要があるかもしれません区切り文字などの設定に基づいています。問題がある場合は、目的のフォーマットで新しい接続を設定している間にマクロを記録してから、このサブの設定をコピーしてください。

ファイルが見つからない場合は、ユーザーが目的のファイルを見つけるためのファイル選択ボックスがポップアップ表示されます。