• ベストアンサー

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

  • シートを別のブックに移動させたいのですが、

    シートを別のブックに移動させたいのですが、 マクロで作成するとこうなりました。 Workbooks.Open Filename:= _ "C:\Documents and Settings\YUUKORON\My Documents\YYYY.xls" Windows("GGGG.xls").Activate Sheets("2010.4YY").Select Sheets("2010.4YY").Move Before:=Workbooks("YYYY.xls").Sheets(1) が、移動先のブック名が移動させたいシートのセルF1に入力されているので、ブック名YYYYをどのようにすればよいのか教えてください。  Workbooks.Open Filename:= _   "C:\Documents and Settings\YUMIKO\My Documents\" & Range("F1").Value & ".xls" Windows("GGGG.xls").Activate Sheets("2010.4YY").Select  Sheets("2010.4YY").Move Before:=Workbooks("YYYY.xls").Sheets(1) 試してみた方法 Sheets("2010.4YY").Move Before:=Workbooks("("2010.4YY").Range("F1").Value.xls").Sheets(1)  Sheets("2010.4YY").Move Before:=Workbooks _ ("C:\Documents and Settings\YUMIKO\My Documents\" & Range("F1").Value & ".xls").Sheets(1) どれもダメでした。 あと、今は、Sheet(1)の前となっていますが、常にブックの先頭に移動させることはできるのでしょうか? シート名は、2010.5YY、2010.6YY というふうに毎月増えていく予定です。 初心者です。よろしくお願いします。

  • ブック間のシート移動

    EXCEL VBA初心者です。 ブックAのシートAをブックBのシートの一番左側に移動させようと思います。 以下を実行するとエラーが出ますがなぜでしょうか? エラーの原因と対策方法を教えて下さい。 Sub シート移動() Worksheets("シートA").Move _ Before:=Workbooks("ブックB.xls").Sheets(1) End Sub ブックAはブック名が毎回変わります。 ブックAはメール添付を開いたブックです。 ブックAはシートがシートAしかありません。 シートAは名前が変わりません。 マクロコードはブックBあるいは個人用マクロブックに置きます。 よろしくお願いします。

  • エクセルVBA 無駄な部分をおしえてください

    VBA初心者です。 多数のシートを条件によって二つのブックに分ける、というVBAを作ろうとしています。 なにぶん素人なので、無駄な文章が多いのではないかと心配で、 お知恵を拝借できればと思い投稿いたしました。どうぞよろしくお願いいたします。 やりたいこと:Book1のA列に100程度の文字列があり、そのいずれかと一致するシート名(Book1のSheets(2)以降)を持つシートはBook2の最終シートの後ろへ、どの文字列ともシート名が一致しないシートはBook3の最終シートの後ろへ移動。(「最終シートの後ろへ移動」がうまくいっていません) VBAの内容:Book1のH1に「=countif(A:A,G1)」と入力しておき、G1にシート名を入力させ H1>0ならば該当シートをBook2へ、それ以外はBook3へ移動 の繰り返し   Application.ScreenUpdating = False Dim j As Integer, k As Integer j = Workbooks("Book2.xls").Worksheets.Count k = Workbooks("Book3.xls").Worksheets.Count Do While Workbooks("Book1.xls").Sheets.Count > 1 Range("G1").Value = Worksheets(2).Name If Range("H1").Value > 0 Then Worksheets(2).Move after:=Workbooks("Book2.xls").Sheets(j) Else Worksheets(2).Move after:=Workbooks("Book3.xls").Sheets(k) End If Loop

  • .xlsにワイルドカードを使うには?

    あい20060925.xls  を下記のように記述してはいけないようですが、 ワイルドカードをどのように使用すればよろしいでしょうか? 以上 よろしくお願い致します。 -------------------- Sub tes1() '任意のブックの全シートを1つのブックにまとめる Workbooks("あい*.xls").Activate ActiveWorkbook.Worksheets. _ Copy after:=Workbooks("集計.xls").Sheets(Workbooks("集計.xls").Sheets.Count) End Sub --------------------

  • エラーになる理由とならない理由は?

    同じアプリケーション内にBook1.xlsとBook2.xlsを開き、 Book1.xlsのSheet1に アクティブエックスのコマンドボタンを設置して、 Private Sub CommandButton1_Click() Range("a1").Select End Sub としました。 このコードは問題なく実行できますが、 Book1.xlsのコマンドボタンから、 「Book2.xlsのSheet1を選択する」というコードをしたい時に、 Private Sub CommandButton1_Click() Windows("Book2.xls").Activate Range("a1").Select End Sub をすると、 「実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。」 になります。 しかしなぜかRangeの前にSheets("Sheet1")を入れて Private Sub CommandButton1_Click() Windows("Book2.xls").Activate Sheets("Sheet1").Range("a1").Select End Sub にすると、問題なく実行できます。 Book1.xlsにもBook2.xlsにも「Sheet1」と言う名のシートはあります。 なぜ、Sheets("Sheet1").を入れるとエラーにならないのか教えてください。

  • Excel VBAで他のブックを選択する方法を教えてください。

    こんにちは。VBA初心者です。 ブックを2つ開いた状態で、 マクロを保存してあるブック〔Book1〕から、 毎回ブック名が異なる[Book2]の選択されている2枚のシートを新しいブックに(仮Book3)コピーしたいのですが、どのように記述したらよいのでしょうか。(選択されるシートも毎回異なります。) 特に教えていただきたい部分は、 1.マクロが記録されているBOOK1以外のBookを操作する方法。 2.私以外の方が利用する為、Book1に保存したマクロから実行させる予定なのですが、Book1を毎回開いて実行させる方法がベストのやり方なのでしょうか。 マクロの記録では下記の感じになります。 Sub Macro4() Windows.Arrange ArrangeStyle:=xlVertical Windows("Book2.xls").Activate Sheets(Array("Sheet3", "Sheet4")).Select Sheets("Sheet4").Activate Sheets(Array("Sheet3", "Sheet4")).Copy End Sub 宜しくお願い致します。

  • エクセル bookの名称

    Sub 登録() Workbooks.Open Filename:= _ "\\buckup1\センタ\データ\連絡をください\シート.xls" Windows("入力.xls").Activate Sheets("管理").Select Sheets("管理").Copy Before:=Workbooks("シート.xls").Sheets(1) End Sub 上記はマクロの自動記録で行ったものですが、このマクロが入ってるbookを名前を変えて保存して(例えば"顧客管理"など)上記を実行すると、上記3行目のbookの名前でないのでエラーが出てきます。上記のbookを名前を変えて保存すると3行目の部分もそれに合わせて自動で変わるように(入力→顧客管理)出来ますでしょうか。

  • エクセル2000のマクロについて再び

    新しいブックを作りさらに他のブックで作成されているシートをコピーして移動するというマクロを作ります。この時、新しく作ったブックの名前がBook1にならないとその時点でマクロのエラーになりなってしまいますが、たまにBook2になってしまうときがあります。必ずBook1になると指定することはできないのでしょうか。 Sheets(Array("sheet1", "sheet2", "sheet3")).Select Sheets(Array("sheet1", "sheet2", "sheet3")).Copy →新しいシートを作成 Workbooks.Open Filename:="C:xxx\○○\△△.xls" Sheets.Copy after:=Workbooks("book1").Sheets(2) →ここで、Book1が存在しないとエラーになってしまう。 お願いします。

  • EXCEL VBA のブック操作

    完全に自己流でEXCEL2000のVBAを作成しています。 とても単純な操作なのですが、思い通り動きません。 どうかご教授ください。 よろしくお願いします。 Main ファイルとSubファイルがあります。【パス名とファイル名は指定済み】 ブック内のシートの構成は全く同じになっています。 (MainファイルのVBAを実行後Subファイルが作成されます ファイル名は作成日を入れて保存していっています。) それで以前作成したデータを利用するために、 MainファイルのVBAを実行中にSubファイルを開き参照したいシートを Mainファイルにコピーし、Subファイルを閉じたいのですが フォーカスがうまくいかず、Mainファイルが閉じてしまいます。 何がおかしいのでしょうか? Workbooks.Open Filename:=SubFile Sheets("Sheet1").Select Worksheets("Sheet1").Name = "ASheet" Sheets("ASheet").Copy After:=Workbooks(MainFile).Sheets(TotalSheet) Workbooks(SubFile).Activate ActiveWorkbook.Close Workbooks(MainFile).Activate Sheets(TsumSheet).Select オープンしてコピーまではできているのですが・・・

  • 「 このコード 」 のチェック を お願い致します。

    下記コードは何とか動作しますが、チェックお願い致します。 1、 MsgBox "「 空白シート 」 は ありません。"    の    追加編集が、よくわかりません。 2、 1以外に、おかしな箇所をご教示お願い致します。 --------------------------- '「 ブック1 」 に空白シートがあったら、そこへ貼り付ける Sub 空白シートへコピー() Dim ws As Worksheet For Each ws In Workbooks("ブック1.xls").Sheets If IsEmpty(ws.UsedRange) = True Then Workbooks("ブック2.xls").Activate Cells.Select Selection.Copy Workbooks("ブック1.xls").Activate ws.Select Range("A1").Select ActiveSheet.Paste Else MsgBox "「 空白シート 」 は ありません。" End If Next End Sub