電子書籍の厳選無料作品が豊富!

Excel VBA でBook2にシートを移動した後、元のBook1に自動で戻る
VBAを教えたください。

Sub シートを移動する()
Windows("Book1.xls").Activate
Sheets(エリカ).Select
Sheets(エリカ).Move After:=Workbooks("Book2").Sheets(1)
このあとBook1に戻りたい!
End Sub

A 回答 (4件)

>このあと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)
というような内容にされた方がよいかも知れません。
    • good
    • 0
この回答へのお礼

DOUGLAS_さん
感謝します。

新規ブックを作ってそこにシートエリカを
移動させたかったのですが、おっしゃる通り、実行するたびに、Book2、Book3、Book4...になってしまって、できなかったので、先にファイルを作って自動で開いて、そこにシートを移動するようにしていました。でもDOUGLAS_さんのおかげで理想の形に一歩近づきました。

ただ、これだと実行するたびに新しいブックができて、そこにシートが
移動してしまいます。できれば一度新規ブックを作ったら、そのブックに移動させていきたいんです。

また、新規に作ったブックにシートを移動したあと、
「Windows("Book1.xls").Activate」と記載しても
Book1.xlsに戻りません。なんででしょうか?
ご教授いただければ助かります。

お礼日時:2009/04/05 11:33

>実行するたびに新しいブックができて、そこにシートが移動してしまいます。


>できれば一度新規ブックを作ったら、そのブックに移動させていきたいんです。
 そういうことでしたら、マクロの中で新規ブックを作るのではなくて、「そのブック」は一旦保存しておいて、マクロの中では、
1)「そのブック」を開く
2)処理をする
3)「そのブック」を保存終了する
という作業をされればよいかと存じます。

>また、新規に作ったブックにシートを移動したあと、
>「Windows("Book1.xls").Activate」と記載しても
>Book1.xlsに戻りません。なんででしょうか?
 戻らないときに、何かエラーメッセージが出ないでしょうか?

 どうしてもお分かりにならないときには、個人情報を伏せ字にして、すべてのコードを呈示なさってみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/13 21:57

Workbooks("Book1.xls").Activate と一行追加するだけです。


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

 

この回答への補足

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

補足日時:2009/04/05 12:06
    • good
    • 0

こんにちは。


エリカが変数なのか文字列なのか良くわからないですが、
例えば、こんな感じです。

Sub シートを移動する()
Dim エリカ As String
エリカ = "エリカ"
With Windows("Book1.xls")
.Activate
Sheets(エリカ).Select
Sheets(エリカ).Move After:=Workbooks("Book2").Sheets(1)
'このあとBook1に戻りたい!
.Activate
End With
End Sub

この回答への補足

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

補足日時:2009/04/04 23:42
    • good
    • 0

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