Excel: マクロでデータソースを変更する

Excel: マクロでデータソースを変更する

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タイプのコマンドを挿入して接続コマンドを変更します。

関連情報