Quali azioni Excel VBA sono possibili nei fogli di lavoro nascosti o nelle cartelle di lavoro?

I fogli di lavoro o le cartelle di lavoro nascosti hanno alcune limitazioni a ciò che può essere fatto nel codice VBA, come la maggior parte delle istruzioni di Selection e Selection e qualsiasi cosa proveniente da ActiveSheet , ma non riesco a trovare un elenco di ciò che sono le limitazioni.

Google, la documentazione integrata nel sistema di aiuto e il sito web di MSDN sono tutti falliti. Qualcuno può dirmi nella giusta direzione?

Modifica: la cartella di lavoro viene aperta con

 Set WB_Master = Workbooks.Open(Filename:=PATH_Master, ReadOnly:=False) 

e poi nascosto con

 WB_Master.Windows(1).Visible = False 

Dalla Guida di Visual Basic per Applications:

Quando un object è nascosto, viene rimosso sullo schermo e la properties; Visible è impostata su False. I controlli dell'object nascosto non sono accessibili dall'utente, ma sono disponibili a livello di programmazione per l'applicazione in esecuzione, ad altri processi che possono comunicare con l'applicazione tramite l'automazione e in Windows, agli events di controllo Timer.

Non ho molto aiuto, ho paura, e non ho potuto trovare altro.

Come si è detto, il metodo Select e la properties; di selezione non funzionano in un foglio di lavoro nascosto, dovrebbero lavorare su una cartella di lavoro nascosta però. (Per favore, corregimi se sono sbagliato). In generale, tuttavia, non è sempre così efficiente select gli intervalli nei fogli di lavoro comunque, è meglio lavorare con la properties; Range (che funziona su un foglio di lavoro nascosto).

EDIT:

Il seguente codice cambierà il colore di A1: A8 in Cyan anche quando il foglio di lavoro non è visibile:

 Dim book2 As Workbook Set book2 = Workbooks.Open("C:\Book2.xls") book2.Worksheets("Sheet1").Visible = False book2.Windows(1).Visible = False With book2.Worksheets("Sheet1").Range("A1:E8").Interior .ColorIndex = 8 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With book2.Windows(1).Visible = True book2.Worksheets("Sheet1").Visible = True 

È ansible aggirare eventuali limitazioni sui fogli nascosti distriggersndoli senza che l'utente lo renda conto, facendo quello che ti serve e poi nascondendolo.

Questo esempio presuppone che Sheet2 sia nascosta.

 Sub DoStuffToAHiddenSheetWithoutTheUserKnowingIt() 'turns off screen repainting so the user can't see what you're doing 'incidentally, this dramatically speeds up processing of your code Application.ScreenUpdating = False 'note that if you're stepping through your code, screenupdating will be true anyway 'unhide the sheet you want to work with Sheets("sheet2").Visible = True 'do whatever you want here, including selecting cells if you want 'Scagnelli is right though, only select cells if you have to 'when you're finished, hide the sheet again Sheets("sheet2").Visible = False 'make sure you turn screenupdating back on, or Excel will be useless Application.ScreenUpdating = True End Sub 

Un altro trucco utile se si desidera che i fogli nascosti siano impostarli su xlVeryHidden, che impedirà di essere elencati all'utente se cercano di sfogliarli tramite il menu o il nastro.