- ベストアンサー
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' インデックスが有効範囲にありません。 アドバイスを頂けますでしょうか。 よろしくお願いいたします。
- みんなの回答 (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 構文の指すものではなくて、コードのあるワークブックです。 承知の上だとすると、原因は全く違うところにありそうですが、いかがでしょうか?
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
>Set myCellfor = ThisWorkbook.Worksheets("結果").Range("A3") >実行時エラー'9' インデックスが有効範囲にありません。 「すべて」と「予測」シートはありますが,「結果」シートがありません。 そもそも無ければ勿論アウトですが,あるいは「結果□」(□はスペース)など,間違ったシート名になっているのかもしれません。シート名を付け直してみてください。
お礼
ご回答ありがとうございました。シート名が異なるところがありました。修正しマクロを完成しました。
お礼
ご回答ありがとうございました。ThisWorkbookを理解していませんでした。再度見直ししてマクロが作成できました。