最近、Office 365/Excel 2016にアップグレードした結果、動作が変更されました。ワークブック(「ポートフォリオ評価」)には、ワークブック(「インデックス返品」)が開いているかどうかを確認するWorkbook_openプロシージャが含まれています。そうでなければ、そのワークブックを開きます。Workbook_Open後にフォーカスが間違ったExcelウィンドウ
Excel 2007では、Index Returns
はバックグラウンドで開いてそこにとどまり、これが望ましい動作です。これは "ウィンドウ内"で、リボンのWindow
タブのArrange All
オプションを使用して、同じExcelウィンドウで表示できます。
Excel 2016では、Workbook_Openプロシージャで開くと、Index Returns
が独自のExcelウィンドウで開き、手前に表示されます。 (これは、Portfolio Appreciation
と同じExcelウィンドウでは表示できなくなります)。
Index Returns
が前にあるという事実が問題です。
DDEを使用して他のアプリケーションを無視するオプションを選択して選択を解除しようとしました。私はAppActivate
メソッド(以下のコードに示されています)を試して、MsgBox
を使って、引数が関連するタイトルバーと一致することを確認しました。
次にどこに行くのかわかりません。提案は高く評価されました。
また、Index Returns
にはマクロまたは接続が含まれていません。 Portfolio Appreciation
にはWorkbook_Open
以外のマクロは含まれておらず、開いたときに更新されるWebクエリがあります(クエリーはいくつかの株価情報をダウンロードします)。
Option Explicit
Private Sub Workbook_Open()
Dim wbs As Workbooks, wb As Workbook
Dim IndexReturns As String
Dim re As RegExp
Const sPat As String = "(^.*\\DATA\\).*"
Const sRepl As String = "$1EHC\Investment Committee\indexreturns.xlsb"
Dim sTitle As String
sTitle = Application.Caption
Set wbs = Application.Workbooks
Set re = New RegExp
With re
.Pattern = sPat
.Global = True
.IgnoreCase = True
End With
IndexReturns = re.Replace(ThisWorkbook.FullName, sRepl)
For Each wb In wbs
If wb.FullName = IndexReturns Then Exit Sub
Next wb
Application.ScreenUpdating = False
wbs.Open (IndexReturns)
Set re = Nothing
AppActivate sTitle 'sTitle contains title of thisworkbook
'The below doesn't work either
'AppActivate ThisWorkbook.Application.Caption
Application.ScreenUpdating = True
End Sub
ありがとうございました。私はそれを試して、それは行動を変更しませんでした。しかし、それはタイミングの問題を指摘していくつかのテストを行うようになった。私の答えを見てください。 –