Discussion:
Dateiauswahl Dialog im VBA Makro unterdrücken
(zu alt für eine Antwort)
Claudia
2007-08-22 18:48:03 UTC
Permalink
Hallo,

ich verwende eine EXCEL-Datei mit Verweisen auf andere Dateien. Die Formeln
in den Zellen sehen dann in etwa folgendermaßen aus:

='D:\[Mappe1.xls]Tabelle1'!$A$1

Nun ändere ich (per Makro) den Dateinamen von "Mappe1.xls" in "Mappe3.xls."

Mappe3.xls existiert nicht, daher erscheint der Dateiauswahldialog.

Frage: Wie kann ich (im VBA Makro) verhindern, dass der Dialog erscheint?

Für Hinweise bin ich sehr dankbar.

Claudia
Robert Jakob
2007-08-22 21:12:38 UTC
Permalink
Post by Claudia
Hallo,
ich verwende eine EXCEL-Datei mit Verweisen auf andere Dateien. Die Formeln
='D:\[Mappe1.xls]Tabelle1'!$A$1
Nun ändere ich (per Makro) den Dateinamen von "Mappe1.xls" in "Mappe3.xls."
Mappe3.xls existiert nicht, daher erscheint der Dateiauswahldialog.
Frage: Wie kann ich (im VBA Makro) verhindern, dass der Dialog erscheint?
Für Hinweise bin ich sehr dankbar.
Claudia
Hallo Claudia,

aus Deiner Beschreibung kann ich leider noch nicht entnehmen
was Du vor hast.

Wie änderst Du den DateiNamen, durch ReName oder durch Speichern unter

Wann, unter welchen Umständen kommt welche Meldung ?

Beschreibe das mal genau, dann sehen wir weiter.

MfG
Robert
Claudia
2007-08-22 22:06:01 UTC
Permalink
Hallo Robert,

da habe ich mich missverständlich ausgedrückt. Ich ändere nicht den Namen
meiner Arbeitsmappe, sondern die Dateinamen in den Formeln (Verknüpfungen).

In den Formeln steht z.B.

='D:\[Mappe1.xls]Tabelle1'!$A$1

Dann ändere ich durch „Suchen und Ersetzen“ die Dateinamen in den Formeln
von „Mappe1“ auf „Mappe3“.

Im Makro sieht das dann so aus:

Cells.Replace What:="Mappe1", Replacement:="Mappe3", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Da Mappe3.xls nicht existiert, erscheint bei der Ausführung des Makros bei
jeder Ersetzung der Dateiauswahldialog (von Windows), damit die Verknüpfung
manuell geändert werden kann. Und diesen Dialog möchte ich unterdrücken.

Viele Grüße

Claudia
Alexander Wolff
2007-08-23 05:34:28 UTC
Permalink
Post by Claudia
Da Mappe3.xls nicht existiert, erscheint bei der Ausführung des Makros bei
jeder Ersetzung der Dateiauswahldialog (von Windows), damit die Verknüpfung
manuell geändert werden kann. Und diesen Dialog möchte ich unterdrücken.
1) DisplayAlerts = False ausprobieren (danach wieder auf True setzen)

2) Mir fällt sonst spontan dazu ein:

Aus ='D:\[Mappe1.xls]Tabelle1'!$A$1

mache vorläufig

#^^#='D:\[Mappe3.xls]Tabelle1'!$A$1,

und sobald aktualisiert werden kann, darf und soll, Suchst/Ersetzst Du #^^#
durch nichts.
--
Moin+Gruss Alexander - MVP für MS Excel - www.xxcl.de - mso2000sp3 --7-2
Claudia
2007-08-23 17:32:02 UTC
Permalink
Hallo Alexander,
Post by Alexander Wolff
1) DisplayAlerts = False ausprobieren (danach wieder auf True setzen)
Das habe ich ausprobiert, produziert aber das gleiche Ergebnis wie vorher.

Ich habe inzwischen alles, von dem ich vermute, dass es mit Updates von
Zellen zu tun hat, ausgeschaltet.
Das sieht dann im Makro so aus:

With Application
.Calculation = xlManual
.MaxChange = 0.001
End With
With ActiveWorkbook
.UpdateRemoteReferences = False
.PrecisionAsDisplayed = False
.SaveLinkValues = False
End With
Application.AskToUpdateLinks = False
DisplayAlerts = False

-> Immer noch der gleiche Effekt.

Gibt es noch andere Parameter, Variablen, o.ä., die da eine Rolle spielen
können?
Post by Alexander Wolff
Aus ='D:\[Mappe1.xls]Tabelle1'!$A$1
mache vorläufig
#^^#='D:\[Mappe3.xls]Tabelle1'!$A$1,
und sobald aktualisiert werden kann, darf und soll, Suchst/Ersetzst Du #^^#
durch nichts.
Gute Idee, aber in meinem echten Anwendungsfall hilft mir das nicht weiter,
weil es mehr als eine Datei gibt, die von den Ersetzungen betroffen ist
(siehe nächstes Posting).

Viele Grüße

Claudia
Thomas Ramel
2007-08-23 16:22:59 UTC
Permalink
Grüezi Claudia

Claudia schrieb am 23.08.2007
Post by Claudia
In den Formeln steht z.B.
='D:\[Mappe1.xls]Tabelle1'!$A$1
Dann ändere ich durch „Suchen und Ersetzen“ die Dateinamen in den Formeln
von „Mappe1“ auf „Mappe3“.
Cells.Replace What:="Mappe1", Replacement:="Mappe3", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Da Mappe3.xls nicht existiert, erscheint bei der Ausführung des Makros bei
jeder Ersetzung der Dateiauswahldialog (von Windows), damit die Verknüpfung
manuell geändert werden kann. Und diesen Dialog möchte ich unterdrücken.
Wmmm, wird es denn einen Zeitpunkt geben zu dem 'Mappe3' existert?

- Wenn ja, dann würde ich den Namen erst dann ersetzen. Das erspart ein
mehrfaches Ersetzen.

- Wenn nein, warum setzt Du den Namen zu einer Datei die es nicht
gibt/geben wird?


Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-2]
Microsoft Excel - Die ExpertenTipps
Claudia
2007-08-23 17:50:01 UTC
Permalink
Hallo Thomas
Post by Thomas Ramel
Wmmm, wird es denn einen Zeitpunkt geben zu dem 'Mappe3' existert?
- Wenn ja, dann würde ich den Namen erst dann ersetzen. Das erspart ein
mehrfaches Ersetzen.
Ja, es wird (wahrscheinlich) einen Zeitpunkt geben, zu dem "Mappe3"
existiert.

Ich habe das Problem anhand eines einfachen Beispiels dargestellt, das
zugegebenermaßen etwas aus dem Kontext gerissen wirkt. In meinem wirklichen
Anwendungsfall gibt es mehrere Dateien, auf die verwiesen wird, und die jeden
Monat ein neues Suffix erhalten. Also z.B. Dateiname_Monat.xls.

Zu dem Zeitpunkt zu dem das Makro läuft, sind einige dieser Dateien schon
vorhanden und andere kommen später. Durch Ausführung eines Makros möchte ich
u.a. auf eine manuelle Prüfung, ob alle Dateien da sind, verzichten.

Das funktioniert auch alles prima. Verweise auf nicht vorhandene Dateien
zeigen #Bezug an und da sieht man dann gleich, dass die Datei nicht vorhanden
ist.
Das einzige Problem ist, dass ich beim Ausführen des Makros zigmal
<Abbrechen> drücken muss, weil der Dateiauswahldialog erscheint.

Viele Grüße

Claudia
Claudia
2007-09-08 16:34:48 UTC
Permalink
Hallo,

hat wirklich niemand eine Idee, wie ich den Dateiauswahldialog unterdrücken
kann?

Ich habe mein Problem noch nicht gelöst und würde mich sehr freuen, wenn mir
jemand weiterhelfen kann.

Viele Grüße

Claudia
Post by Claudia
Hallo,
ich verwende eine EXCEL-Datei mit Verweisen auf andere Dateien. Die Formeln
='D:\[Mappe1.xls]Tabelle1'!$A$1
Nun ändere ich (per Makro) den Dateinamen von "Mappe1.xls" in "Mappe3.xls."
Mappe3.xls existiert nicht, daher erscheint der Dateiauswahldialog.
Frage: Wie kann ich (im VBA Makro) verhindern, dass der Dialog erscheint?
Für Hinweise bin ich sehr dankbar.
Claudia
Thomas Ramel
2007-09-08 16:51:35 UTC
Permalink
Grüezi Claudia

Claudia schrieb am 08.09.2007
Post by Claudia
hat wirklich niemand eine Idee, wie ich den Dateiauswahldialog unterdrücken
kann?
...wir hatten uns ja schon darüber unterhalten...

Nein, das ist IMO nicht zu unterbinden.

Der einzige Weg, der mir für dich einfällt ist, per VBA zu prüfen ob die
Datei auf die Du zugreifen willst/wirst. Diese Namen sind dir ja offenbar
bekannt.
Wenn die Mappe (noch) nicht existiert dann schreibst Du die Formel nur als
Text in die Zelle oder sorgst sonst dafür, dass der Bezug nicht hergestellt
wird.

Alles andere sind Mechanismen, die dazu da sind im Falle einer 'verlorenen'
Verknüpfung die Mappe komfortabel wieder zu finden - leider gibt es meines
Wissens keine Möglichkeit per VBA auf dieses Feature Einfluss zu nehmen.


Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-2]
Microsoft Excel - Die ExpertenTipps
Alexander Wolff
2007-09-10 10:03:43 UTC
Permalink
Du könntest eine Dummydatei verwenden, auf die sich das Makro zunächst
bezieht. Sie sollte mit Deiner Datei immer mitgegeben werden. Der
Auswahldialog kommt nicht, wenn die Quelle gültig ist. Es könnte sogar sein,
dass Du Dich auf Deine Datei selbst beziehen kannst.
--
Moin+Gruss Alexander - MVP für MS Excel - www.xxcl.de - mso2000sp3 --7-2
Loading...