2016-11-10 20 views
0

これまでのところ、Excelはワークブック接続の相対パスをサポートしていないことがわかっているので、これを行うことができます。ここでは、ワークシートをCSVファイルから自動更新するExcelワークブックです。これらは、ハードコードされたフォルダ(c:\ temp \ premiumreports \ name_of_CSV_file.csv)からデータを取得します。この方法では毎回すべてをc:\ temp \ premiumreportsに入れるか、同じディレクトリ構造を作成する必要がある顧客にファイルを送るかどうかを強制します。私がしたいことは、xlsxファイルを必要なCSVファイルを持つ任意のフォルダ(c:\ reportまたはユーザーのデスクトップ)に置き、xlsxを開くとデータが自動的にインポートされます。これは可能ですか?CSVインポート用のExcel内の相対パス

現在のワークブック接続

enter image description here ありがとう!

答えて

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 

あなたは問題が発生した場合など、区切り文字としてご使用の構成に基づいて設定の一部でプレイする必要があり、記録あなたが望むフォーマットで新しい接続をセットアップして、このサブの設定をコピーしている間は、マクロ。

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

+0

最後に、これを試してみると、1004エラーが発生します。デバッグに行くと、私はこの行を指しています。 ActiveWorkbook.Connections( "msg_by_weeks")。Ranges.Item(1).QueryTable –