none
VBA macro File Open  について RRS feed

  • 質問

  • 前提:Excel2010 では以下の現象は起きません。Excel2013 にて起きる現象です。

    Excel VBA Macro において

    フォルダ ASDESIGNVms にある ASDESIGNVms-Start.xlsm の Book を下記 Code にて開くとき

      ( Workbooks.Open Filename:="ASDESIGNVms¥ASDESIGNVms-Start.xlsm", UpdateLinks:=0 )

    白い画面が”パッ”と出ます。連続数個開くとその回数だけ”パッ、パッ、パッ・・・” と出ます。

    これが気になるので出ないようにしたい。 Excel2010 でプログラム開発をしているときは出ませんでした。

    尚、UpdateLinks:=0 を外しても現象は同じです。

           

    2016年8月8日 5:28

回答

  • 2010まではExcelのウィンドウの中に複数のワークブックのウィンドウが表示される形式(MDI)でした。
    2013からは各ワークブックのウィンドウはそれぞれ独立して表示される形式(SDI)になりました。
    そのためタスクバーには個別のウィンドウとして表示されます。

    白い画面というのは、ワークブックを開くと新しくウィンドウが作られますが、読み取りが完了するまでワークシート等が画面に描画されないために白くなっています。
    重いファイルを開いてみれば長時間白いウィンドウが表示されることで確認することができます。

    つまり、白いウィンドウが描画されないようにしたいということになるので、ワークブックを開く前に描画を抑制してやればいいことになります。

    Sub Test()
        Dim i As Integer
        Dim wb As Workbook
        For i = 1 To 100
            Application.ScreenUpdating = False
            Set wb = Workbooks.Open("C:\Test.xlsm")
            Application.ScreenUpdating = True
            DoEvents
            wb.Close
        Next
    End Sub

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2016年8月31日 9:44

すべての返信

  • 私の環境では再現しませんでした。一度、Office 2013 のクイック修復をしてみてはいかがでしょうか?

    1. 「コントロールパネル」→「プログラムと機能」を開く
    2. 「Microsoft Office 2013」を探し、右クリックして「変更」を選択
    3. 「クイック修復」ボタンをクリックして、修復を行う
    2016年8月8日 5:48
  • ご指示のOffice2013の修復を試みましたが解決しませんでした。

    何とも煩わしいので解決したくお願い致します。

    Excel2010では問題ないので、出来る方法があると思っているのですが---

    Excelの複数のBookを開いた時、下段にあるExcelのロゴをクリックすると、

    Excel2010では現在開いてActiveになっている画面だけのBook-Faile名が表示されますが、

    Excel2013では開いて総てのBook-Faile名が表示されます。

    これに何らかの関係がありそうなのですが,良く解かりません。

    よろしくお願いします。

    2016年8月31日 6:29
  • 2010まではExcelのウィンドウの中に複数のワークブックのウィンドウが表示される形式(MDI)でした。
    2013からは各ワークブックのウィンドウはそれぞれ独立して表示される形式(SDI)になりました。
    そのためタスクバーには個別のウィンドウとして表示されます。

    白い画面というのは、ワークブックを開くと新しくウィンドウが作られますが、読み取りが完了するまでワークシート等が画面に描画されないために白くなっています。
    重いファイルを開いてみれば長時間白いウィンドウが表示されることで確認することができます。

    つまり、白いウィンドウが描画されないようにしたいということになるので、ワークブックを開く前に描画を抑制してやればいいことになります。

    Sub Test()
        Dim i As Integer
        Dim wb As Workbook
        For i = 1 To 100
            Application.ScreenUpdating = False
            Set wb = Workbooks.Open("C:\Test.xlsm")
            Application.ScreenUpdating = True
            DoEvents
            wb.Close
        Next
    End Sub

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2016年8月31日 9:44