Il mio recente aggiornamento a Office 365/Excel 2016 ha causato alcune modifiche comportamentali indesiderate. La cartella di lavoro ("Apprezzamento del portafoglio") contiene una procedura Workbook_open che controlla se la cartella di lavoro ("Resi dell'indice") è aperta; se non lo è, aprirà quel libro di esercizi.Finestra di Excel errata a fuoco dopo la cartella di lavoro
Con Excel 2007, Index Returns
si apre in background e resta lì, che è il comportamento desiderato. Sarebbe "in una finestra" e potrebbe essere visualizzato, nella stessa finestra di Excel, utilizzando l'opzione Arrange All
nella scheda Window
della barra View
.
Con Excel 2016, se viene aperto dalla procedura Workbook_Open, Index Returns
si apre nella relativa finestra di Excel e si conclude davanti. (Non può più essere visualizzato nella stessa finestra di Excel come Portfolio Appreciation
).
Il fatto che Index Returns
sia davanti è il problema.
Ho provato a selezionare e deselezionare l'opzione per ignorare altre applicazioni utilizzando DDE; Ho provato il metodo AppActivate
(mostrato nel codice di seguito) e verificato, utilizzando un MsgBox
, che l'argomento corrisponde alla barra del titolo pertinente.
Non so dove andare dopo. Suggerimenti apprezzati.
Inoltre: Index Returns
non contiene macro o connessioni. Portfolio Appreciation
non contiene macro diverse da Workbook_Open
e ha una query Web che viene aggiornata quando si apre (la query scarica alcune informazioni sull'indice azionario).
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
Grazie per il consiglio. L'ho provato, e non ha cambiato il comportamento. Tuttavia, mi ha portato a fare alcuni test che indicavano un problema di temporizzazione. Vedi la mia risposta. –