2012-10-24 7 views
14

Ich verwende derzeit Workbooks.Open, um eine große Anzahl von Dateien in einem Verzeichnis zu verarbeiten. Aber beim Öffnen und Schließen dieser Dateien erscheinen die Dateien in der Taskleiste und ich wollte das ständige Flackern vermeiden.Unterschied zwischen CreateObject ("Excel.Application") .Workbooks.Open und nur Workbooks.Open

Ich habe einen Vorschlag von diesem Ich kann verwenden, um eine neue Instanz zu erstellen, seit das eine neue Excel-Instanz öffnet, die ausgeblendet ist.

  1. Gibt es einen anderen Unterschied zwischen den beiden Möglichkeiten, neue Arbeitsmappen in Bezug auf die Leistung zu öffnen?

  2. Auch sollte ich nur eine Instanz von Excel CreateObject erstellt mit allen Arbeitsmappen zu öffnen, oder muss ich für jede Arbeitsmappe eine Instanz erstellen ich verarbeiten müssen (, die wie eine Verschwendung von viel Speicher scheint und weniger Geschwindigkeit)?

Antwort

16

Workbooks.Open verwendet die aktuelle MS Excel-Instanz und CreateObject(“Excel.Application”) erstellt eine neue MS Excel-Instanz. Sie können auf CreateObjecthere nachlesen.

Das einfache Ausgeben einer Workbooks.Open nach dem Erstellen einer neuen Instanz stellt nicht sicher, dass die Arbeitsmappen in der neuen Instanz geöffnet werden. Du wirst dich damit verbinden müssen. Zum Beispiel

Dim oXLApp As Object, wb As Object 

Set oXLApp = CreateObject("Excel.Application") 

'~~> Hide Excel 
oXLApp.Visible = False 

'~~> Open files 
Set wb = oXLApp.Workbooks.Open("C:\Sample.xls") 

In Bezug auf Ihre andere Frage

Auch sollte ich alle Arbeitsmappen nur eine Instanz von Excel unter Verwendung von Create erstellt zu öffnen oder benötige ich eine Instanz für jede Arbeitsmappe zu erstellen, muss ich Prozess

Sie benötigen nicht mehrere Instanzen. Sie können mit einer Instanz arbeiten. Zum Beispiel

+0

@ Siddarth, ausgezeichnete Siddarth und danke. –

6

Späte Bindung ist etwas langsamer als frühe Bindung, aber Sie bemerken möglicherweise nicht einmal den Unterschied. Ja, Sie können nur eine Instanz für alle Arbeitsmappen verwenden. Beachten Sie, dass dies:

Dim xl As New Excel.Application 

xl.Workbooks.Open "z:\docs\test.xlsm" 

nicht sichtbar sind, wenn Sie sagen:

xl.Visible = True 

Seien Sie sicher, dass alle Instanzen in Ihrer Fehlerfall zu schließen.

Verwandte Themen