• ベストアンサー

Book間の移動

Excel VBA でBook2にシートを移動した後、元のBook1に自動で戻る VBAを教えたください。 Sub シートを移動する() Windows("Book1.xls").Activate Sheets(エリカ).Select Sheets(エリカ).Move After:=Workbooks("Book2").Sheets(1) このあとBook1に戻りたい! End Sub

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.3

>このあとBook1に戻りたい! のところに、 Windows("Book1.xls").Activate または Workbooks("Book1.xls").Activate を書けばよいだけなのですが、小さなことですが、せっかく Sheets(エリカ).Select するのでしたら、 Sheets(エリカ).Move After:=Workbooks("Book2").Sheets(1) ではなくて、 ActiveSheet.Move After:=Workbooks("Book2").Sheets(1) にするか、あるいは、 Sheets(エリカ).Select はなくてもよいかと存じます。 【これより憶測ですが。。。】  ちなみに、「Workbooks("Book2")」という書き方は、まだ保存していないブックについてですよね(保存済みのブックでしたら "Book2.xls" ですから)。  ということは、マクロの途中で新規ブックを開くような記述があるのかなと存じますが、そのタイミングでブック名が "Book2" になるとは限りませんので、 Workbooks.Add Template:="ブック" したタイミングで、 Dim myWB As Workbook Set myWB = ActiveWorkbook とでもしておいて、 Sheets(エリカ).Move After:=myWB.Sheets(1) というような内容にされた方がよいかも知れません。

dadada-yui
質問者

お礼

DOUGLAS_さん 感謝します。 新規ブックを作ってそこにシートエリカを 移動させたかったのですが、おっしゃる通り、実行するたびに、Book2、Book3、Book4...になってしまって、できなかったので、先にファイルを作って自動で開いて、そこにシートを移動するようにしていました。でもDOUGLAS_さんのおかげで理想の形に一歩近づきました。 ただ、これだと実行するたびに新しいブックができて、そこにシートが 移動してしまいます。できれば一度新規ブックを作ったら、そのブックに移動させていきたいんです。 また、新規に作ったブックにシートを移動したあと、 「Windows("Book1.xls").Activate」と記載しても Book1.xlsに戻りません。なんででしょうか? ご教授いただければ助かります。

その他の回答 (3)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.4

>実行するたびに新しいブックができて、そこにシートが移動してしまいます。 >できれば一度新規ブックを作ったら、そのブックに移動させていきたいんです。  そういうことでしたら、マクロの中で新規ブックを作るのではなくて、「そのブック」は一旦保存しておいて、マクロの中では、 1)「そのブック」を開く 2)処理をする 3)「そのブック」を保存終了する という作業をされればよいかと存じます。 >また、新規に作ったブックにシートを移動したあと、 >「Windows("Book1.xls").Activate」と記載しても >Book1.xlsに戻りません。なんででしょうか?  戻らないときに、何かエラーメッセージが出ないでしょうか?  どうしてもお分かりにならないときには、個人情報を伏せ字にして、すべてのコードを呈示なさってみてください。

dadada-yui
質問者

お礼

ご回答ありがとうございます。

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

Workbooks("Book1.xls").Activate と一行追加するだけです。   シート名は、"エリカ" として.. '---------------------------------------- Sub シートを移動する()  Workbooks("Book1.xls").Sheets("エリカ").Move After:=Workbooks("Book2.xls").Sheets(1)  Workbooks("Book1.xls").Activate End Sub '-----------------------------------------  

dadada-yui
質問者

補足

onlyromさん ご回答ありがとうございます。 新規に作ったブックにシートを移動したあと、 「Workbooks("Book1.xls").Activate」と記載しても Book1.xlsに戻りません。なんででしょうか? 省略 Workbooks.Add Template:="ブック" Dim myWB As Workbook Set myWB = ActiveWorkbook  Sheets(エリカ).Move After:=myWB.Sheets(1)  Windows("Book1.xls").Activate Sheets(エリカ).Select Sheets(エリカ).Move After:=myWB.Sheets(1) Workbooks("Book1.xls").Activate  Sheets("Sheet1").Select Range("A1").Select End Sub

  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

こんにちは。 エリカが変数なのか文字列なのか良くわからないですが、 例えば、こんな感じです。 Sub シートを移動する() Dim エリカ As String エリカ = "エリカ" With Windows("Book1.xls") .Activate Sheets(エリカ).Select Sheets(エリカ).Move After:=Workbooks("Book2").Sheets(1) 'このあとBook1に戻りたい! .Activate End With End Sub

dadada-yui
質問者

補足

ご回答いただきありがとうございます。 エリカは変数です。 でも、この回答でBook1にどうして戻れるのでしょうか?

関連するQ&A