Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Excel-Datei per VBA UNSICHTBAR öffnen

9,696 views
Skip to first unread message

Bjoern

unread,
Jul 15, 2008, 4:26:01 AM7/15/08
to
Excel 2003 unter WXPPro

Ich habe schon stundenlang rumprobiert, und gegoogelt und gesucht, aber ich
hab's nicht geschafft, per VBA eine Excel-Datei UNSICHTBAR zu öffnen

Normal kann man eine Datei ja wie folgt öffnen:
Workbooks.Open Filename:= "[Pfad], ReadOnly:=True

Aber wie krieg ich's hin, dass die Datei unsichtbar geöffnet wird? Ich kann
keinen passenden Parameter finden. Oder ist der Format-Parameter dafür
geeignet?
Ich kann auch nirgends eine Erklärung der einzelnen parameter der
Workboos.Open methode finden. Im Objektexplorer sind zwar alle aufgelistet,
aber eine Erklärung gibt es nicht.

Freue mich auf Tipps!

Vielen Dank und schöne Grüße,

Björn

Peter Schleif

unread,
Jul 15, 2008, 7:09:06 AM7/15/08
to
Bjoern schrieb am 15.07.2008 10:26 Uhr:
>
> Ich habe schon stundenlang rumprobiert, und gegoogelt und gesucht, aber ich
> hab's nicht geschafft, per VBA eine Excel-Datei UNSICHTBAR zu öffnen

Ich kenne nur den Umweh über eine neue Excel-Instanz

Dim app As New Excel.Application
app.Workbooks.Open "C:\test.xls", , True
'/app.Visible = True/

Die ist zunächst unsichtbar. Wenn Du also app.Visible=True weglässt,
erscheint auch nichts in Taskleiste.

Peter

Bjoern

unread,
Jul 15, 2008, 6:51:01 AM7/15/08
to

"Peter Schleif" wrote:

Moin Peter!

Das ist doch schon mal was! Vielen Dank! Gibt es auch eine Möglichkeit,
diese neue Instanz von Excel wieder zu schließen, wenn ich in der anderen
Instanz meine Datei wieder schließe?

Danke und viele Grüße,

Björn

Peter Schleif

unread,
Jul 15, 2008, 8:03:53 AM7/15/08
to
Bjoern schrieb am 15.07.2008 12:51 Uhr:
>
> Gibt es auch eine Möglichkeit,
> diese neue Instanz von Excel wieder zu schließen, wenn ich in der anderen
> Instanz meine Datei wieder schließe?

app.Quit

Peter

Bjoern

unread,
Jul 15, 2008, 8:29:00 AM7/15/08
to

"Peter Schleif" wrote:

Hi Peter!

Supi, das funktioniert! Besten Dank!
Nun bin ich frohen Mutes an die Arbeit gegangen, und musste leider
feststellen, dass es mir nicht hilft. Der Hintergrund meiner Frage ist, dass
ich die Datei (quelle.xls) öffnen muss, damit externe Bezüge einer anderen
Datei (ziel.xls), die darauf verweisen, funktionieren.

Öffne ich ziel.xls, ohne dass quelle.xls geöffnet ist, werden manche
komplexere Formeln nicht berechnet, stattdessen gibt's einen WERT#-Fehler.
Ich habe dazu auch schon einen anderen Thread aufgemacht.

Trotzdem danke ich Dir sehr für Deine Tipps, sie kommen auf jeden Fall in
meinen "Goldene Excel-Tipps"-Ordner!

Viele Grüße,

Björn

Bjoern

unread,
Jul 15, 2008, 8:31:01 AM7/15/08
to

"Bjoern" wrote:

Noch ein kleiner Nachtrag, den ich vergessen hatte:
Offenbar muss die Quelldatei in der selben Excel-Instanz geöffnet sein,
sonst funktioniert's nicht.

Thomas Ramel

unread,
Jul 15, 2008, 9:12:56 AM7/15/08
to
Grüezi Bjoern

Bjoern schrieb am 15.07.2008

> Noch ein kleiner Nachtrag, den ich vergessen hatte:
> Offenbar muss die Quelldatei in der selben Excel-Instanz geöffnet sein,
> sonst funktioniert's nicht.

Ja, das ist korrekt - ansonsten 'wissen' die beiden Dateien nichts von
einander.


Mit freundlichen Grüssen
Thomas Ramel

--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-3]
Microsoft Excel - Die ExpertenTipps

Bjoern

unread,
Jul 15, 2008, 9:24:01 AM7/15/08
to

"Thomas Ramel" wrote:

Moin Thomas!

Ich hab's jetzt so gelöst:
Beim Öffnen der Zieldatei öffne ich die Quelldatei schreibgeschützt per VBA
und schließe sie sofort wieder (auch mit VBA). Die Verknüpfungen
aktualisieren sich vor dem Schließen und alles ist gut.
Nicht besonders elegant, aber es funktioniert.

Danke und viele Grüße,

Björn Krüger

Peter Schleif

unread,
Jul 15, 2008, 10:02:54 AM7/15/08
to
Bjoern schrieb am 15.07.2008 15:24 Uhr:
>
> Ich hab's jetzt so gelöst:
> Beim Öffnen der Zieldatei öffne ich die Quelldatei schreibgeschützt per VBA
> und schließe sie sofort wieder (auch mit VBA). Die Verknüpfungen
> aktualisieren sich vor dem Schließen und alles ist gut.
> Nicht besonders elegant, aber es funktioniert.

Hallo Bjoern.

Ich lese es jetzt den Bezug zu deinem anderen Thread. Dann macht das
mit der zweiten Instanz natürlich keinen Sinn. Aber Du hast ja
inzwischen eine Lösung gefunden. Vermutlich hast Du auch schon

Application.ScreenUpdating = False
'/Oeffnen, Aktualisieren, Schließen/
Application.ScreenUpdating = True

eingebaut, um das Aufblitzen der Quelldatei zu verhindern.

Ich frage mich allerdings noch, was passiert, wenn Die Formeln in der
Zieldatei neu berechnet werden müssen. Hast Du das Öffnen der
Qulledatei im Workbook_Open oder im Worksheet_Calculate?

Peter

Peter Schleif

unread,
Jul 15, 2008, 10:10:30 AM7/15/08
to Bjo...@discussions.microsoft.com
Bjoern schrieb am 15.07.2008 10:26 Uhr:
>
> Aber wie krieg ich's hin, dass die Datei unsichtbar geöffnet wird?

Es geht anscheined doch.

http://www.herber.de/forum/archiv/148to152/t151768.htm

Peter


Peter Schleif

unread,
Jul 15, 2008, 10:10:40 AM7/15/08
to
Bjoern schrieb am 15.07.2008 10:26 Uhr:
>
> Aber wie krieg ich's hin, dass die Datei unsichtbar geöffnet wird?

Es geht anscheined doch.

http://www.herber.de/forum/archiv/148to152/t151768.htm

Peter


Peter Schleif

unread,
Jul 16, 2008, 12:51:51 AM7/16/08
to
Bjoern schrieb am 15.07.2008 10:26 Uhr:
>
> Ich habe schon stundenlang rumprobiert, und gegoogelt und gesucht, aber ich
> hab's nicht geschafft, per VBA eine Excel-Datei UNSICHTBAR zu öffnen

Hallo Bjoern.

Kannst Du bei Gelegenheit mal diesen Code in "DieseArbeitsmappe" von
"Ziel.xls" ausprobieren - natürlich mit korrektem Pfad zur Quelle?!
Würde mich interessieren ob es damit klappt. Vielleicht kann man auch
noch irgendwie, die Nachfrage "Verknüpfungen aktualisieren" unterdrücken.

Peter

'/DieseArbeitsmappe/
'--------------------------------------------------
Const QUELLE = "E:\Eigene Dateien\TR\Quelle.xls"

Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.ShowWindowsInTaskbar = False

Workbooks.Open QUELLE, , True
Workbooks(Mid(QUELLE,InStrRev(QUELLE,"\")+1)) _
.Windows(1).Visible = False

Me.Saved = True

Application.ShowWindowsInTaskbar = True
Application.ScreenUpdating = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Workbooks(Mid(QUELLE,InStrRev(QUELLE,"\")+1)).Saved = True
Workbooks(Mid(QUELLE,InStrRev(QUELLE,"\")+1)).Close
End Sub

0 new messages