none
Excel2016のVBAで複数bookを開いている際に画面の表示が切り替わらない、不具合修正依頼 RRS feed

  • 質問

  • windows10 pro 64bit CU(1703.15063.786)

    Excel2016 32bit MSO(16.0.4591.1000) 

    booka.xlsm マクロ用

    bookb.xlsx データ用

    の環境で、

    1.bookaからVBAでbookbを開く

    2.bookbのデータを処理し、bookaにコピーする

    3.処理完了時bookaを表示し、操作出来る状態(アクティブウィンドウ)にする

    ということが出来ません。

    Excel2010では正常に動作していました。

    Sub ボタン1_Click()

      On Error GoTo openbook:
    Loop1:
        Windows("bookb.xlsx").Activate
      On Error GoTo 0

      bookb処理
      Windows("booka.xlsm").Activate
       booka処理
        With Application
        .Calculation = xlAutomatic
        .ScreenUpdating = True
      End With
      Exit Sub

    openbook:
      Application.DisplayAlerts = False
        Workbooks.Open Filename:="d:\bookb.xlsx"
      Application.DisplayAlerts = True
      GoTo Loop1:

    End Sub

    windows7 32bit+Excel2010 32bitの環境では正常に動作しました。

    End WithとExitSubの間に下記の対応をしても効果がありませんでした。

    1 windowの最小化、最大化を順番を工夫して行う

         Application.Windows(booka.xlsm).WindowState = xlMinimized

         Application.Windows(bookb.xlsx).WindowState = xlMinimized

         Application.Windows(bookb.xlsx).WindowState = xlMaximized

         Application.Windows(booka.xlsm).WindowState = xlMaximized

    →bookaが後ろに隠れてしまい、bookbが表示される

    2. Application.Windows(booka.xlsm).activateを追加

     なぜかbookbがアクティブのまま(VBAでbookaは操作出来るがユーザから見ると非アクティブ)

    activateが効かないのは不具合だと思いますので、MS担当者様は修正をお願い致します。

    2017年12月22日 1:24

すべての返信

  • 少なくとも私の環境

    Windows10 Pro 1709 64ビット
    Microsoft Office Professional Plus 2016 32ビット
     バージョン1711(ビルド 8730.2127 クイック実行)

    で、添付のコードを実行してみましたが
    期待通り、
    booka.xlsmが最前面に表示され、
    booka.xlsmがアクティブな状態になります。

    OS依存、Officeのバージョン依存なのかもしれません。
    または、何か常駐アプリの影響かもしれません。

    なお、
    >MS担当者様は修正をお願い致します。
    私は承ることができません。 ($・・)/~~~

    2017年12月22日 14:15
  • ありがとうございます。

    実はほかのofficeが絡む業務用ソフトでも、

    office2016 MSO版の最新版では不具合が発生して、

    C2R版だと正常に動作するものがあります。

    その差かもしれませんのでしばらく修正パッチの配信を待ちたいと思います。

    2017年12月25日 7:47
  • 補足です。

    投稿の不具合が出るのはbooka.xlsm、bookb.xlsxいずれも閉じた状態のときにbooka.xlsmを起動すると発生します。

    事前にbookb.xlsxが開いている状態の場合は正常に動作します。

    2017年12月25日 8:09
  • Windows10 Pro 64bit 1709
    Excel 2016 64ビット(16.0.8202.2213)

    こちらでどうなりますか?
    (既にbookbが開かれた状態でも使えます。Excel 2013では警告が出ますが Excel 2016 64bit版では出ません。)

    Sub ボタン1_Click()
        Workbooks.Open Filename:="c:\var\bookb.xlsx", UpdateLinks:=0

       '(bookbでコピー)
       With Workbooks("bookb.xlsx").Sheets(1)
          .Cells(3, 8).Value = 123
          .Cells(4, 8).Value = 456
          .Cells(5, 8).Value = 789
          .Cells(6, 8).Value = _
          WorksheetFunction.Sum(Range(Cells(3, 8), Cells(5, 8)))
          .Range(Cells(3, 8), Cells(6, 8)).Copy
       End With
      
       Windows("booka.xlsm").Activate
       '(bookaでペースト)
       Workbooks("booka.xlsm").Sheets(1).Cells(2, 10).Value = 456
       Cells(3, 10).Select
       Selection.PasteSpecial Paste:=xlPasteValues, _
          SkipBlanks:=False, Operation:=xlPasteSpecialOperationNone
       Cells(3, 11).Select
      
       With Application
         .CutCopyMode = False
         .Calculation = xlAutomatic
         .ScreenUpdating = True
       End With
    End Sub

    [注意!]
    bookaでJ2:J6 が上書.
    bookbでH2:H6が上書
    bookbの所在が "c:\var\bookb.xlsx"

    2018年1月10日 23:59
  • ご回答ありがとうございます。

    検証したところ意図した動作になりました。

    何が原因か調査し、わかりましたらまたここに残したいと思います。

    2018年1月18日 6:14