• ベストアンサー

Excelのシート移動

初めまして。エクセル超初心者です。  早速ですが、ここにBook1とBook2の二つのブックがあるとします。Book1で現在参照しているSheetをBook2の例えばSheet2の前に移動、というマクロ(VBA?)を作成し、ボタン一つで移動するようにしたいのですが、どの様にすればよいのでしょうか。お教えください。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 単独で使ってみたかったら、 Private Sub ShCopy()のPrivate をとって Sub ShCopy()  を使ってみてください。シートの移動自体は、簡単なコードです。しかし、 >ボタン一つで移動するようにしたいのですが とお書きになっていますが、そのボタンをシート上に置くわけにはいきません。したがって、ツールバー、メニューバーになります。手動でつけることも可能ですが、それでは、ブックに常時残ってしまいます。それで、臨時でコマンド・ボタンをメニューに乗せるように、#3で私が考えました。 いずれにしても、#3の回答に対するお礼のご様子では、手動でされたほうがよいのではありませんか?しょせん、こういう掲示板で発表されるのは、完璧というような作りのコードではなく、ある程度、ユーザーに、その使用を託されているものですから、その理解の度合いに関わらず、VBAの利用は、良く考えてお使いになるのが懸命かと思います。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 エラーが出るのは、 Workbooks("Book2.xls") とファイル名が入っていないからだと思います。 私も作ってみました。「移動元のシート」の標準モジュールに貼り付けたら、保存して、そのブックを閉じたら、再度、立ち上げます。 メニューの右端に[電球]アイコンがつくと思いますから、それをクリックしてください。 なお、以下は、「実際のファイル名」、「シート名」を必ず入れてください。 また、マクロを起動させずに立ち上げる場合は、シフトキーを押しながら開くと、ボタンが設定されません。その登録したブックを閉じると、[電球]もなくなります。 '------------------------------------------------------ Option Explicit Sub AddButton()  Dim cnt As Integer  On Error Resume Next  Application.CommandBars("Worksheet Menu Bar").Controls("シート移動").Delete  On Error GoTo 0  cnt = CommandBars("Worksheet Menu Bar").Controls.Count  With Application.CommandBars("Worksheet Menu Bar").Controls.Add( _   Type:=msoControlButton, ID:=2950, Before:=cnt + 1, _   Temporary:=True)   .Caption = "シート移動"   .FaceId = 351   .OnAction = "ShCopy"  End With End Sub Private Sub ShCopy()  Dim BkName As String, ShName As String, wb As Workbook, flg As Boolean  '===========================  '要設定:コピーされる側のブック名とシート名  BkName = "Book2.xls"  ShName = "Sheet2"  '===========================  If ActiveWorkbook.Name <> ThisWorkbook.Name Then MsgBox _  "コピー元のブックを開いてください": Exit Sub  For Each wb In Workbooks   If wb.Name = BkName Then    flg = True    Exit For   End If  Next wb  If flg = False Then   On Error GoTo ErrHandler   Workbooks.Open (BkName)  End If  Application.ScreenUpdating = False  ActiveWorkbook.ActiveSheet.Move _  Before:=Workbooks(BkName).Worksheets(ShName)  Application.ScreenUpdating = True  Exit Sub ErrHandler:  MsgBox "Err: " & BkName & "が開くことができません。" End Sub Sub DelButton() On Error Resume Next Application.CommandBars("Worksheet Menu Bar"). _  Controls("シート移動").Delete End Sub Sub Auto_Open()  Call AddButton End Sub Sub Auto_Close()  Call DelButton End Sub '------------------------------------------------------

otomonija2005
質問者

お礼

ありがとう御座います。しかし初心者の私にはこれが何を意味するVBAなのかよく分かりません。いずれ使わせて頂くと思います。勉強してから。

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

No.1さんに補足しますが、 ActiveSheet.Move Sheet2 だと、同じブック内の移動になります。 移動させるためのマクロがBook1に書いてあるなら、 ActiveSheet.Move Before:=Workbooks("Book2").Sheet2 のようになりますね。

otomonija2005
質問者

お礼

ありがとう御座います。記載頂いたものを入力しましたが、 「インデックスが有効範囲にありません」と表示されてしまいます。何がいけないのでしょう。 それから、「移動させるためのマクロがBook1に書いてあるなら」とはどういう意味ですか?

  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.1

シート「あ」をシート「い」の前に移動するなら、 Sheets("あ").Move Sheets("い") ということで、現在参照しているシートをSheet2の前に移すなら、 ActiveSheet.Move Sheet2 となります。

関連するQ&A

  • excelでマクロシートをコピーしたとき

    excelでbook1のsheet1のセルA1に「1」を入力→プリントアウト→A1に「11」を入力→プリントアウト・・・以下「31」まで繰り返し。 というマクロが組んであります。 (ボタンにマクロが登録されています。) このシートをbook2にコピーをしたときに マクロを実行する(ボタンを押す)とbook1が開いてしまいます。 これをbook1を開かずにbook2でマクロを実行するには どのようにしたらよいでしょうか。 book2でマクロを作成し直して さらにボタンにマクロを登録していますが、 bookの数が多いのでけっこうな手間になります。 簡単な方法があれば教えて下さい。

  • EXCELシートのコピー移動について

    (1)EXCELシートのコピー移動について AとういうBOOKの中のシート1をBというBOOKへシートのコピー移動はできるのですが例えばBOOKA,B,C,D,EとBOOKを5つひらいておいてAとういうBOOKの中のシート1をBのBOOKへコピーしたりC,D,Eへもコピーすることは可能でしょうか?勝手な考えですがコピー先を選択する参照ボタンなどがあるとわかりやすいと思ったのですが・・・誰か複数のBOOKにシートのコピーができる方法を教えてください。 (2)作成したデータとグラフを移動する方法について データのコピー移動は問題なくできるのですがグラフが移動されなくて困っています。 よろしくお願いいたします。

  • EXCEL「シートの移動またはコピー」について

    EXCEL2003で下記の現象が発生し、理由が分からずにおります。 Book1とBook2が存在し、"その両方を開いた状態"でBook1のSheet1をBook2にコピーしようとします。 その時、通常であれば「シートの移動またはコピー」ダイアログの"移動先ブック名"に、現在開かれているEXCELファイルが全て表示されますが(今回の例であれば「Book1」「Book2」「新しいブック」)、ごくたまに「Book1(コピー元)」と「新しいブック」以外が表示されないことがあります。 Book2にコピーしたいので、Book1・Book2両方を数回開き直したりするのですが、どうやっても"移動先ブック名"にBook2が表示されず、PCの再起動後に正常に表示されたりします。 これは、メモリや内容のデータ量が関係するのでしょうか。

  • ブック間のシート移動

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

  • マクロ無しのbookでVBAを使う方法

    マクロなしbook1があります。 このbook1をマクロで参照するには 1.book1で、VBAを使う 2.VBAで新規にbook2を開き、book1のシートを取り込む の方法を考えました。 2.は多分できるかとおもうのですが、1.のbook1でVBAを開く方法がわかりません。 VBAはずいぶん昔なので、今はVBAを使うBOOKの作り方をネットで学んだところです。(excelの神髄など) 1.の方法の手順を教えてください。 この手順がわかる良いサイトが教えていただけてもよいです。

  • Excelで他のブックシートをボタンに登録する方法

    Excelで毎年の記録帳を作成し、2006というbookの中にsheetが1月~12月という様に12sheetあります。  同様に2000~2005のbookもあり、 例えば、book2006の11月のsheetを開いていて、2005のbookが見たい時に2006のsheetにボタンを置き、2005のbookが開く様に登録するやり方を教えて下さい。 sheet内でのボタンの登録の仕方はマクロの本にのっていましたが、他のbookを登録するやり方が分からないので・・・  お手数ですが、詳しく書いて頂けると助かります。

  • Book間の移動

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

  • Excel VBAエラー”マクロシートに対する・・

    Excel VBAを勉強している者です。VBAプログラムで Sub Iro1() ・・・ End Sub Sub Iro2() ・・・ End Sub という処理のプログラムを作成しエクセルシートにボタンを作りマクロ登録をしようとすると ”マクロシートに対する参照を指定ください”とエラーが出ます。 すみませんが、解決方法を教えてください。

  • Excel2007でBOOK間のシート移動をVBAで行うとエラーになる

    Excel VBAで開発されたソフトの改造を行ってますが、Excel2007で動作しないマクロがあり困ってます。 <開発環境> ・WindowsXP Pro SP3 ・Celeron 540(1.8GHz) ・メモリ1GB ・Excel2007 SP1 (Microsoft Office2007) 改造元ソフトはOffice2000で開発されており、Excel2007で動作するとマクロエラーが発生する処理があります。 因みにまだソフト改造はしてなく、そのままExcel2007で動作させるだけでマクロエラーが発生します。 発生する箇所はVBAで開発されており、下記のコマンドです。 Sheets(移動元シート名).Move Before:=Application.Workbooks(移動先ブック名).Sheets(1) 異常の内容は下記になります。 ------------------------------- ?err.Description 移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入できません。データを別のブックに移動またはコピーするには、データを選択して、[コピー] コマンドと [貼り付け] コマンドを使用して移動先またはコピー先のブックのシートに挿入してください。 ?err.Number 1004 ------------------------------- 移動元BOOKは1シート、移動先BOOKは1シートあります。 これをExcel2000で実行すると正常にシートが移動できます。 (移動元BOOKのシートがなくなりBOOKが終了して、移動先BOOKは2シートになります) Excel画面の移動元シートを選択して、右クリックメニューの「移動またはコピー」で移動先ブックを指定して移動すると 「移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入できません。データを別のブックに移動またはコピーするには、データを選択して、[コピー] コマンドと [貼り付け] コマンドを使用して移動先またはコピー先のブックのシートに挿入してください。」 とVBAから実行した時と同じ内容のエラーダイアログが表示されました。 (Excel2000では手動でも移動できました) Excel2007では1シートで構成されたBOOK間の移動はできないのでしょうか? また、これをVBAで対策しようとした場合にどうしたら良いのでしょうか? ネットで調べましたが判らず、ここで質問させて頂きました。 判りにくい説明で申し訳ありませんが、よろしくお願いします。

  • Excel シート上に配置したボタンを無効にするに

    Excelブックのワークシート上には いくつかのボタンが配置されていて 各ボタンをクリックすると 対応するマクロが呼び出されるようになっているのですが、 Excelブックを配布するユーザー毎に 使用するボタンと使用しないボタンがあります。 配布前に、シート上のボタンを手(VBAではなく)で 無効(グレー表示)にして、 ユーザーがクリックしても何も起きない (ボタンが押し込まれたりマクロが呼び出されたりしない) ようにしておきたいのですが マクロはいじらずに このようなことは可能でしょうか。 必要のないボタンを消す方法もありますが ボタンが消えてしまうと画面の表示の 見た目が悪くなるので、 ボタンが表示されていて機能しないように しておきたいです。 (Windows7 ,Excel2010)

専門家に質問してみよう