質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

4881閲覧

VBAマクロでCSV取込をしたい

javabigineer

総合スコア87

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2017/06/26 05:21

VBAマクロでCSVファイルを取り込みたいと思っています。
下記のように記述してみたのですが、
With trSh.QueryTables.Add(Connection:= _
"TEXT;" & csvPath _
, Destination:=Range("A1"))
の行で「実行時エラー'5' プロシージャの呼び出し、または引数が不正です」エラーが発生します。
どこが悪いのでしょうか?
お気づきの方いらっしゃいましたらご指摘ください。

'取込み対象CSVファイルパス取得 csvPath = ws.Cells(8, 1).Value 'CSV取込み処理 '取込用シートを変数に入れる Set trSh = Worksheets("Sheet1") '前回データをクリア trSh.Cells.Clear With trSh.QueryTables.Add(Connection:= _ "TEXT;" & csvPath _ , Destination:=Range("A1")) 'カンマ区切りでインポート .TextFileCommaDelimiter = True 'テキストファイルの各列に適用されるデータ型を指定する定数を配列形式で設定。 .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1) '外部データ範囲(QueryTable)を更新。(上で作られたクエリはRefreshして初めて実行される。) .Refresh BackgroundQuery:=False 'QueryTableを削除してただのデータにする。 .Delete End With

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mattn

2017/06/26 05:40

CSV ファイルが存在しない、もしくは CSV ファイルじゃない物を指定している、などないでしょうか?エラーメッセージでエスパーすると後者なのですが。
javabigineer

2017/06/26 07:07

CSVファイルは存在していますし、csvPathの中身はCSVファイルでした。
guest

回答1

0

ベストアンサー

とりあえず出してもらったコードで動きますが…

再現方法

  1. Sheet2のA8のセルにD:\test.csvと記入します。
  2. D:\test.csvの中身を以下にします。

1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1, 1, 1, 1, 1, 1, 1, 1, 1, 1
3. 以下のvbaをsheet1で走らせます。

VBA

1Sub test() 2 3 '取込み対象CSVファイルパス取得 4 csvPath = Worksheets("Sheet2").Cells(8, 1).Value #<---ここを修正 5 6 '取込用シートを変数に入れる 7 Set trSh = Worksheets("Sheet1") 8 9 '前回データをクリア 10 trSh.Cells.Clear 11 12 'CSV取込み処理 13 With trSh.QueryTables.Add(Connection:= _ 14 "TEXT;" & csvPath _ 15 , Destination:=Range("A1")) 16 17 'カンマ区切りでインポート 18 .TextFileCommaDelimiter = True 19 20 'テキストファイルの各列に適用されるデータ型を指定する定数を配列形式で設定。 21 .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1) 22 23 '外部データ範囲(QueryTable)を更新。(上で作られたクエリはRefreshして初めて実行される。) 24 .Refresh BackgroundQuery:=False 25 26 'QueryTableを削除してただのデータにする。 27 .Delete 28 29 End With 30End Sub 31

投稿2017/06/26 22:04

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

javabigineer

2017/06/27 10:26

Sheetに記述していたマクロを呼び出していたため、失敗していたようです。Moduleに記述しなおしたらうまくいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問