dポイントプレゼントキャンペーン実施中!

エクセルファイル”202112xx集計表.xlsm"のシート名"マクロ"のA1に”20211212.csv"を事前に記入してあり、シート名"マクロ"のシート内のマクロ実行ボタンを押すとエクセルファイル”20211212.csv"を選択し、そのcsvファイルのB29を"202112xx集計表.xlsm"のF18にコピペしたいと考えています。

変更前のコードはマクロ内で名前を指定しています。

変更後の最初のコード部分でセル内と同じファイル名を選択すると思うのですが、うまくいきません。
エクセルファイルはすべて開かれている状態です。

変更後のコードが間違っている理由も簡単に説明していただけると幸いです。
よろしくお願いいたします。


・変更前
Windows("20211212.csv").Activate
Range("B29").Select
Selection.Copy
Windows("202112xx集計表.xlsm").Activate
Range("F18").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

・変更後
Windows(ThisWorkbook.Sheets("マクロ").Range("A1") & ".csv").Activate
Range("B29").Select
Selection.Copy
Windows("202112xx集計表.xlsm").Activate
Range("F18").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

A 回答 (2件)

No1です。



>インデックスが有効範囲にありませんというエラーが出ます。
「指定したブック名のウィンドウが存在しない」という意味と考えられます。

ご提示のマクロがどこに記述されているのか不明ですが、
 MsgBox ThisWorkbook.Sheets("マクロ").Range("A1") & ".csv"
としてみれば、どのようなブック名で指定しているかを確認できるでしょう。

また、指定されたブックが開いた状態でなければ、当然ながらエラーになります。
    • good
    • 0
この回答へのお礼

早速のご返答ありがとうございます。
MsgBoxでそのようなことができるのですね。
解決しました。ありがとうございました。

お礼日時:2022/01/02 17:48

こんにちは



>うまくいきません。
ではなくて、エラーが出る部分と、その時のエラー内容をきちんと確認しましょう。

想像するところ、
>A1に”20211212.csv"を事前に記入してあり、~~
というのが正しいとしてよいのなら、
>ThisWorkbook.Sheets("マクロ").Range("A1") & ".csv"
の結果は、"20211212.csv.csv"となると考えられますので、「そのようなウィンドウはないよ」と言われるかと・・・
そのような内容のエラーになってはいませんか??

これまた想像ですが、多分、そこを修正すれば、一応動作するのではないでしょうか。
    • good
    • 0
この回答へのお礼

コメントありがとうございます。
".csv"を抜いて、ThisWorkbook.Sheets("マクロ").Range("A1") で試しまたが、型が一致しませんというエラーで実行できません。
また、ThisWorkbook.Sheets("マクロ").Range("A1") & ".csv"でA1に”20211212"と記入して実行すると、インデックスが有効範囲にありませんというエラーが出ます。

お礼日時:2022/01/02 17:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!