ここから本文です

エクセルマクロに詳しい方、宜しくお願いしますm(_ _)m マクロの自動記録後にエ...

yam********さん

2018/7/1109:38:04

エクセルマクロに詳しい方、宜しくお願いしますm(_ _)m

マクロの自動記録後にエラーが出て、自分なりに修正しても
“450”“438”エラーが
出てしまいます。。

何も分かっていない超初心者です。。解決方法を教えてください。
m(_ _)m

マクロ自動記録でしたことは、

①まずsheet1に、C:\買い物リスト\TXT\買い物.csvを、
テキストファイルウィザードでカンマ区切りのみで、「データのプレビュー」を全選択して“文字列”で$A$1に開く。

②次にsheet2に、C:\買い物リスト\TXT\欲しかったもの.csv.を
テキストファイルウィザードでカンマ区切りのみで、「データのプレビュー」を全選択して“文字列”で$A$1に開く。

③sheet1のC2に、=IFERROR(VLOOKUP(A2,Sheet2!$A$2:$C$2976,3,0),20)を入力して実行。

④そのVLOOKUP関数で返ってきた値を、一番下までオートフィル。

⑤sheet1のD2に、=B2&","&C2 を入力

⑥返ってきた値を、一番下までオートフィル。

⑦その返ってきた値を“ctrl+shift+↓”で全選択し(D列のみ全選択)コピー。

これで完了です。

マクロの記録を行ったところ、エラーで返ってきて、デバッグを開いたら、
1行目の
ActiveSheet.QueryTables.Add Destination:=Selection

のところに“450”エラーが返ってきたので、まずActiveSheet.QueryTables.Add(Connection:="C:\買い物リスト\TXT\買い物.csv", Destination:=ws.Range("A1"))
と入力したのですが、

その次は2行目の
ActiveSheet.QueryTables.QueryTable.Refresh

のところで“438”エラー“オブジェクトは、このプロパティーをサポートしていないません。”と返ってきました。ここは何をしてもエラーが直らなかったです。。


Sub Macro2()
'
' Macro2 Macro
' ○○によるマクロの記録、 日付:2018/07/11
'

'
ActiveSheet.QueryTables.Add Destination:=Selection
ActiveSheet.QueryTables.QueryTable.Refresh
ActiveWindow.ScrollRow = 1
Sheets("Sheet1").Activate
Windows("Book17").Activate
Sheets("Sheet2").Activate
ActiveSheet.QueryTables.Add Destination:=Selection
ActiveSheet.QueryTables.QueryTable.Refresh
Sheets("Sheet1").Activate
Range("C2").Select
Selection.FormulaR1C1 = "=IFERROR(VLOOKUP(A2,Sheet2!$A$2:$C$2976,3,0)," & """" & "20" & """" & ")"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C513"), Type:=xlFillDefault
Range("C2:C513").Select
ActiveWindow.ScrollRow = 487
Range("D1").Select
ActiveWindow.ScrollRow = 1
Range("D2").Select
Selection.FormulaR1C1 = "=B2&" & """" & "," & """" & "&C2"
Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D513"), Type:=xlFillDefault
Range("D2:D513").Select
ActiveWindow.ScrollRow = 487
Selection.Copy
End Sub


分からないことだらけなのですが、、
解決方法を教えて下さい!どうぞ宜しくお願いします!!

補足どこを直せば取り敢えず動くのでしょうか?
教えて下さいm(__)m

閲覧数:
69
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hot********さん

2018/7/1110:01:35

>ActiveSheet.QueryTables.Add Destination:=Selection
>ActiveSheet.QueryTables.QueryTable.Refresh

は文法的に間違っているので、最低でも

ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\買い物リスト\TXT\買い物.csv", Destination:=ws.Range("A1"))
ActiveSheet.QueryTables(ActiveSheet.QueryTables.Count).Refresh



または変数に入れて

Dim qt As QueryTable
Set qt = ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\買い物リスト\TXT\買い物.csv", Destination:=ws.Range("A1"))
qt.Refresh


としないと、文法的にエラーになります。
しかし、上では文法的にエラーにならないけれど、省略しすぎています。
CSVを読むなら、最低これくらいは必要です。
それとファイル名は変数にした方がいいと思います。


Sub sample()
Dim file As String
Dim qt As QueryTable
file = "C:\買い物リスト\TXT\買い物.csv"
Set qt = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & file, Destination:=Range("A1"))
qt.TextFileParseType = xlDelimited '区切り文字によるデータタイプル
qt.TextFileCommaDelimiter = True 'カンマ区切り
qt.Refresh
End Sub

  • 質問者

    yam********さん

    2018/7/1111:45:02

    ご回答いただきありがとうございます!

    書いていただいた文を
    ActiveSheet.QueryTables.Add Destination:=Selection
    ActiveSheet.QueryTables.QueryTable.Refresh

    に入れたところ、csvファイルが抽出されました!

    ですがB列が数字18桁もあり、下の桁が000となってしまうので、000にならない様に取り敢えずテキスト形式(文字列)で開くことは可能でしょうか?m(_ _)m

    OpenTextをどこかに入れたらいいのですか?

    あと、その後の
    Selection.FormulaR1C1 = "=IFERROR(VLOOKUP(A2,Sheet2!$A$2:$C$2976,3,0)," & """" & "20" & """" & ")"

    が、
    “formura R1C1メソッドは失敗しました。'RANGE'オブジェクト”

    とエラーが出ます。VLOOKUP関数の構文は、手入力の時は有っています。。



  • その他の返信を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる