みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

データの取込におけるドライブの指定について

エクセルのSheet1に設置した集計ボタンによって、Sheet2にCSVを取り込む処理をさせました。
しかし、csvのあるドライブが常に固定されていないためにドライブを選択できるようにしたいのです。

下記はマクロの記録で作成した記述ですが、3行目のHをSheet1のセルA1の値で指定させる方法を教えて下さい。

Sheets2.Select
Cells.Select
With ActiveSheet.QueryTables.Add(Connection:="TEXT;H:\売上集計表.csv", _
 Destination:=Range("A1"))
.Name = "売上集計表_29"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.Refresh BackgroundQuery:=False
End With

素人のため、上記マクロをApplication.Run"@"で処理させています。
他にスマートな記述がありましたらその方法も教えて下さい。

投稿日時 - 2007-11-22 00:40:11

QNo.3537610

困ってます

質問者が選んだベストアンサー

>集計ボタンによって、Sheet2にCSVを取り込む処理
CSVファイルをSheet2に取り込む程度なら、MsQueryを使わなくてもシートに取り込めると思うが。
その回答するにはCSVファイルのフィールドのフォーマットを知ることが必要。
ーー
ドライブレター(Hなど)を文字列と考えて処理してみてうまくいきませんか。
A1に「H」があるとして
s=Worksheets("Sheet2").Range("A1")
x=s & ":" & ・・

のような。

投稿日時 - 2007-11-22 13:29:09

補足

s=Worksheets("Sheet1").Range("A1")
x=s & ":\売上集計表.csv"

Sheets2.Select
Cells.Select
Selection.Delete Shift:=xlUp

With ActiveSheet.QueryTables.Add(Connection:="TEXT;x",Destination:=Range("A1"))

と置き換えてみましたが実行できませんでした。
間違っているのでしょうか?

現在、Application.GetOpenFilenameを利用したVBAの記述に方針変更しました。

sheet1のコマンドボタンによって、任意のフォルダにある13列×5000行程度のCSVを
1~3列目だけ文字列としてSheet2に取り込む記述を教えて下さい。

丸一日WEB検索して試行錯誤していますが、この部分で止まっています。
よろしくお願いします。

投稿日時 - 2007-11-23 19:49:49

お礼

やはり間違ってました。
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & X, Destination:=Sheets("Sheet2").Range("A1"))
で動きました。

ありがとうございました。

Application.GetOpenFilenameを利用したものも動かすことができましたが、操作者が誤ったファイルを選択した場合、あるいはダイアログをキャンセルした場合にSheet1のレイアウトが崩れてしまいます。

結局ドライブの選択での処理に戻そうとしたのですが、こちらも該当ファイルが無い場合はエラー表示で止まります。

どちらの方法でも良いのですが、「売上集計表.CSV」が見つからない時点で処理を中止させたいです。
WEB上で検索できた記述では応用できませんでした。
質問が変わってしまいますが、どのような記述で回避できますか?
あつかましいとは思いましたがよろしくお願いします。

投稿日時 - 2007-11-25 20:15:25

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問