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
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
"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
app.Quit
Peter
"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" 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.
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
"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
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
Es geht anscheined doch.
http://www.herber.de/forum/archiv/148to152/t151768.htm
Peter
Es geht anscheined doch.
http://www.herber.de/forum/archiv/148to152/t151768.htm
Peter
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