Excel2013で複数のブックの表示を切換たい

このQ&Aのポイント
  • Excel2013で複数のブックを開いている時、フォームのボタンで表示するブックを切り替えたい方法を解説します。
  • Excel2013で複数のブックを開いているときにVBAを使って特定のブックを最前面に持ってくる方法について詳しく説明します。
  • Excel2013で複数のブックを開いている状態で、特定のブックを最前面に表示する方法についてお教えします。
回答を見る
  • ベストアンサー

Excel2013で複数のブックの表示を切換たい

Excel2013で複数のブックを開いている時、フォームのボタンで表示するブックを切り替えたいのですが・・・。 Excel2013で複数のブック1~5を開いているときにVBA(ブック5.Activate)を使って、ブック5を前面に持ってきたいのですがうまく行きません。 詳細は、ブック1~5が既に開いている状態で、「ブック1の作業を終了しますか?」というフォームの「終了」ボタンを押すと新しいフォーム(ブック5で行う作業内容や手順の書かれたもの)を最前面に表示し、その背面にブック5を表示したいのですが、現状は、新しいフォームは最前面に表示されるのですが、ブック5は、ちゃんと新しいフォームの背面に表示されるときもあれば、ブック1~4のさらに背面に表示されたり、ブック1の背面に表示されたりとランダムな位置に表示されてしまいます。何か良い方法がございましたら教えて頂きますようお願い致します。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.5

> 何か考えることがありましたら、引き続きよろしくお願いします。 こちらの環境ではうまくいかないことがないので、これで直りますという実証が出来ないのですが AppActivate "Book5.xlsm - Excel" や VBA.AppActivate Excel.Application.Caption などのコードを Workbooks("Book5.xlsm").Activate の前に入れるという方法があるようです。 他のアプリからエクセルに戻す場合には DoEvents を前に入れておくというのもありました。 このあたりのコードを入れてみてはいかがでしょう。

kuku008110
質問者

お礼

Excel2013ではフォームがメモリに読み込まれた時点でのExcel表の上にフォームが表示されるようです。 編集するブックを開く毎に、操作するフォームを読み直す事で解決できました。 ご協力ありがとうございました。

その他の回答 (4)

回答No.4

少々前の話題に横から失礼します。 私も ScreenUpdating = False が悪戯してると思う口です。 ま、正直なところ >現在のコード >Private Sub CommandButton1_Click() >Application.ScreenUpdating = False >Workbooks("Book5.xlsm").Activate >ActiveWindow.WindowState = xlMaximized >フォーム2.Show vbModeless >Application.ScreenUpdating = True >End Sub この程度の処理であればウィンドウのちらつきも気にならないと思いますし。 ボタンを押してからフォーム2を表示するまでに何らかの別処理をしているなら別ですけどね。 どうしても、というなら ScreenUpdating = True のあとに 改めてブック5をアクティベート、最大化したらいかがでしょう?

kuku008110
質問者

お礼

編集するブックを開く毎に、操作するフォームを読み直す事で解決できました。 ご協力ありがとうございました。

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.3

こちらでkuku008110さんのコードを現状開いているファイルの表示順を変えて10回程度試してみましたが、異常な動きはありませんでした。Win10Excel2013 試しに Application.ScreenUpdating をやめてみてはいかがでしょう。 古い記述のようですが、下記のページにApplication.ScreenUpdatingの問題点が記載されています。 http://excel-ubara.com/excelvba4/EXCEL252.html ThisWorkbook.Activateとかで、ウインドウが正しく切り変わりません。 という記述も見られます。

kuku008110
質問者

補足

大変お世話になっております。 早速試してみましたが、10回に1回ぐらいしか正常に動作しません でした。 何か考えることがありましたら、引き続きよろしくお願いします。

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.2

> 元のフォームは手順等表示用のブックで、ブック1~5は作業ごとに作られるブックですのでご教授頂いた方法は使えないと思います。 そうですか、それで kuku008110さんは現状どのような仕様やコードで作られているのでしょうか?

kuku008110
質問者

補足

現在のコード Private Sub CommandButton1_Click() Application.ScreenUpdating = False Workbooks("Book5.xlsm").Activate ActiveWindow.WindowState = xlMaximized フォーム2.Show vbModeless Application.ScreenUpdating = True End Sub

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.1

元のフォームがどこで作られてコードがどのようになっているのかわからないですが、とりあえず 新しいフォーム(ブック5で行う作業内容や手順の書かれたもの)はBook5のユーザーフォームで作成してください。以下のコードでは仮にフォームの名前をManualFormとしたものとして記述してます。 Book5の標準モジュールに Public Sub ManualFormShow() ManualForm.Show End Sub ブック1の「ブック1の作業を終了しますか?」の終了ボタン(CommandButton1として)に以下のコードを記載します。 Private Sub CommandButton1_Click() Unload Me Workbooks("Book5.xlsm").Activate Application.Run "Book5.xlsm!ManualFormShow" End Sub

kuku008110
質問者

補足

早速ありがとうございます。 元のフォームは手順等表示用のブックで、ブック1~5は作業ごとに作られるブックですのでご教授頂いた方法は使えないと思います。

関連するQ&A

  • Excel2010で複数ブックを一度に閉じる方法

    Excel2010で複数ブックを一度に閉じる方法 数人で別々に編集したExcelのシートを一つのブックにまとめて提出することが多いのですが、その際、画面上には7つほどのブックが開きます。いままで使っていたExcel2003では右上の「×」ボタンをクリックし、出てくるダイアログボックスの中の「すべて変更」をクリックするなどで一気にすべてのファイルを閉じることができましたが、Excel2010のデフォルトでは同じ手順とはなっていないようです。 「ファイル」タブの「終了」をクリックすることで同様のダイアログが出てきますが、少し手間です。 ボタン1クリックなどですべてのブックを閉じるようにはできないのでしょうか。

  • EXCEL2013でモードレスフォームを最前面に表

    EXCEL2013でモードレスフォームを最前面に表示したままにしたい。 フォームから複数のブックを開いて編集したいのですが、開いたブックを選ぶとフォームが後ろへ隠れてしまいます。 最前面に表示したままにする方法はありませんか?

  • excel2007立上げ時にpersonalブックが表示される。

    excel2007立上げ時に、新規空白ブックは表示されず、何故か「personal」ブックが表示されてしまいます。(1)どうしたらexcel立ち上げ時の「personal」ブックの自動立ち上がりの設定を解除することができるのでしようか教えてください。(2)空白の新規ブックをexcel立ち上げ時に自動的に表示させるにはどうしたらよいでしょうか?なお、excel終了時に右肩にある「×」ボタンを押したら、ブックが閉じられるだけで中が灰色のexcelがたちあがったままになります。(つまり×ボタンを1回押しただけではexcelは終了しないのです。)(1)、(2)と関係があるのでしょうか。できたら (3)一度の×ボタンのクリックでexcelを終了させるにはどうしたらよいでしょうか。よろしくお願いします。

  • 【Excel 2003】複数のブックのシートを一つのブックにコピーにしたい

    お世話になっております。 【Excel 2003】を使っております。 複数のブックには、複数のシートがありまして、 複数のシートを一つのブックにコピーしたいのですが、 手作業ですと、大変時間がかかります。 現在は、一つ一つブックをあけて、シートのコピーで 一つの新しいブックにいれてます。 なにか、これを簡単にできる方法は、ありませんでしょうか? フリーのソフトでも、マクロでも、教えていただけたら 助かります。よろしくお願いします。

  • Excel VBAでブックを閉じる時、複数のブックが開いていると・・・。

    WinXP+Excel2002なのですが、 ExcelのVBAでつくったアプリの中に、 Application.Quit ThisWorkbook.Close False と記述し、終了させる部分があります。 複数のブックが開いているときにこのプログラムを実行すると、 他のブックまで閉じようとするのですが、 これは何ともならないのでしょうか。 複数のブックを開いた状態でVBEを開くと、 どのブックをアクティブにしておいても、他のブックの モジュールが出てきますよね。これに関係あるのでしょうか。 VBAはそのブックだけに記述することができる・・・のでしょうか? 調べてみたのですがよくわかりませんでした。 基本的なことで恐縮ですが、こんな私にわかるよう 教えてくださる方いらしたらお願いいたします。

  • Excel VBAで複数のExcelブックからある文字列を検索→抽出したものをまとめたい

    Excel VBAで以下の操作は可能でしょうか。 私はAccessVBAを少しさわる程度でExcel VBAはまったくわかりませんし、 まだ現物データを見ていないので説明不足ですが、 ご存知の方がいらっしゃいましたらどうぞご回答をお願いします。 コード等もあわせて教えて下さるととても助かります。 複数のExcelブックからある文字列を検索→抽出したものをまとめたい。 ・検索抽出したい文字列の入っているセル位置は固定。 ・抽出したデータを新たなファイルにするか、どうするかはまだ未定。 ・Excelブックは100個ほどある。

  • Excel97で「ブック内のキーワード検索」がしたい(VBA?)

    Excelの表を、月別にシート分けしています(計12枚) 自宅→Excel2002、会社→Excel97を使っているのですが、 複数のシートにわたってキーワード検索したいと思い、自宅のExcel2002で[編集]-[検索]-「ブック」を指定して検索しました。 ところが会社に行って同じ操作をしてみると、Excel97のためシート内検索しか出来ません。 Shiftキーで複数のシートを選択してから検索をしてみましたが、思うような結果になりませんでした。 (Excel2000だと複数シート選択-検索が出来るようなのですが・・) 会社のExcel97で、Excel2002のような「ブック内検索」がしたいのです。 VBAのユーザーフォームで作成するしかないのでしょうか? もしそうであれば、どのように作成していけばよいのか、わかる方ご教授ください<(_ _)> 【希望】 ・テキストボックスにキーワード(氏名・数字など)を入力→検索ボタンを押す→該当のセルがアクティブになる(該当セルが複数あれば、検索ボタンを押すたびにアクティブになる、など) ・「該当のデータはSheet1のC5とSheet3のC10にありますよ」みたいな感じで、データの位置が表示される、など よろしくお願いいたします。

  • (Excel+VBA)ユーザーフォームのみ表示で完結させたい。

    ExcelのVBAを使った複雑なアプリケーションを開発中です。  本体のWorkBookは、終始必要なくて、ユーザーフォームだけで完結するものです。結果的には、あたかもVBで作成されたもののように見えることになる。 【手順】 1) xslファイルを開くとユーザーフォームのみ表示される。 2) ユーザーフォームで一連の作業を行う。本体のWorkBook上のsheetは処理中に使用はする(作業用の一時データ貼り付けなど)けど、表示させたくない。 3) 作業終了時・・・これがわからない。      (終了ボタンまたは閉じるボタンクリック)            |      <他のWorkBookが開いているか>    |                 |    yes                 No    |                 | [現在のworkBookのみ閉じる]   |   saveの必要なし    [アプリケーションを終了する]                    saveの必要なし

  • 【Excel】複数のブックの保存について

    Excel2003を使用しています。 帳簿の書式を作って、それに手書きのような感じで入力しています。 (合計金額をチェックするために簡単なリンクが貼ってあります) 取引会社ごとにコードNo.があって、そのNo.をもとに複数のブックに 分けて保存しています。 具体的には コードNo.100~120は『仕入帳No.100~120』のように名前をつけて 保存し、同じようなブックが1つのフォルダ内に12~3個あります。 毎月、帳簿を作成する際は、フォルダ内のブックを10個ほど 開いた状態で作業するのですが、その開いているブックすべてを 1回の操作で上書き保存することはできるのでしょうか? 入力する量が多いので、ある程度上書き保存しながら 作業を進めていきたいのです。 よろしくお願いします。

  • ブックの終了がうまくいきません

    Excel2003 でマクロ作成中の超初心者です。マクロ完成まであと一歩になりました。次から進みません。お願いします。 ブックA ブックB ブックCの3個のブックがあります。 ブックAのコマンドボタン→ ブックBに飛びます。 ブックBには、フォームコントロール(終了するコマンドボタン)と、特定セルにコントロールが張り付けてあります。 ブックA→ブックBの終了ボタン →正常に終了します。 ところが、ブックBのコントロールから、ブックCに移り、 ここからも一度ブックBに戻って終了ボタンを押すとBブックは終了するものの、Cブックが閉じられません。なぜでしょうか? -----Bブックのセルに貼り付けたコントロールのマクロ----- Sub ブックCへ() Application.ScreenUpdating = False Dim wb As Workbook On Error Resume Next '開いて作業中の場合。 Set wb = Workbooks("21年計算01.xls") On Error GoTo 0 If wb Is Nothing Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\21年計算01.xls") End If '開いて作業中の場合。 Workbooks("21年計算01.xls").Activate ActiveWindow.WindowState = xlMaximized - ---最大化 Worksheets(12).Select End Sub -----Bブックのフォームコントロールのマクロ----- Private Sub CommandButton5_Click() Unload Me ActiveWorkbook.Close SaveChanges:=True End Sub -----Cブックのフォームコントロールのマクロ----- Private Sub データ入力_Click() Unload Me Application.ScreenUpdating = False On Error GoTo err: Workbooks("21年計算02.xls").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\21年計算02.xls" '''データ処理.Show Application.ScreenUpdating = True End Sub

専門家に質問してみよう