• ベストアンサー

Excel マクロ 別ブックの情報をコピーする方法

他のブックの情報をコピーして貼り付けるマクロを作成しています。 2種類のブックから情報をコピーして貼り付けます。 Sub MailTemp() Dim myCellall As Range Dim myCellyoso As Range Dim myCellfor As Range Set myCellall = Sheets("すべて").Range("A3") With Workbooks.Open("\") With .Worksheets("すべて") .Range(.Range("A3"), .Cells.SpecialCells(xlCellTypeLastCell)).Copy myCellall End With .Close False End With Set myCellyoso = ThisWorkbook.Worksheets("予測").Range("A3") Set myCellfor = ThisWorkbook.Worksheets("結果").Range("A3") With Workbooks.Open("\別ブック") With .Worksheets("予測") .Range(.Range("A3"), .Cells.SpecialCells(xlCellTypeLastCell)).Copy myCellyoso End With With .Worksheets("結果") .Range(.Range("A3"), .Cells.SpecialCells(xlCellTypeLastCell)).Copy myCellfor End With .Close False End With End Sub 下記の箇所でエラーが発生して、先に進みません。 原因を調べていましたが、わかりません。 Set myCellfor = ThisWorkbook.Worksheets("結果").Range("A3") エラーメッセージ 実行時エラー'9' インデックスが有効範囲にありません。 アドバイスを頂けますでしょうか。 よろしくお願いいたします。

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

  • ベストアンサー
  • yasheeki
  • ベストアンサー率20% (14/67)
回答No.2

こんばんは ThisWorkbook は、マクロのあるワークブック。 ActiveWorkbook は、現在アクティブになっているワークブック。 という区別のうえでのコードでしょうか? Worksheets("結果")のあるワークブックが"別ブック"だとすると、 Workbooks("別ブック").Activate としたうえで、 Set myCellfor = ActiveWorkbook..Worksheets("結果").Range("A3") という感じで、OKと思いますし、 アクティブにしようがしまいがということであれば、 Set myCellfor = Workbooks("別ブック").Worksheets("結果").Range("A3") という風でしょう。 ご紹介のコードを見る限り、Worksheets("予測").は、ThisWorkbook で、 貼り付け先のWorksheets("結果")は、ThisWorkbook とは違うワークブックでしょう。 'ThisWorkbook' の'This' は、With 構文の指すものではなくて、コードのあるワークブックです。 承知の上だとすると、原因は全く違うところにありそうですが、いかがでしょうか?

hyogara777
質問者

お礼

ご回答ありがとうございました。ThisWorkbookを理解していませんでした。再度見直ししてマクロが作成できました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

>Set myCellfor = ThisWorkbook.Worksheets("結果").Range("A3") >実行時エラー'9' インデックスが有効範囲にありません。 「すべて」と「予測」シートはありますが,「結果」シートがありません。 そもそも無ければ勿論アウトですが,あるいは「結果□」(□はスペース)など,間違ったシート名になっているのかもしれません。シート名を付け直してみてください。

hyogara777
質問者

お礼

ご回答ありがとうございました。シート名が異なるところがありました。修正しマクロを完成しました。

関連するQ&A