Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1744to1748
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler nach Umst.auf Office 2019

Laufzeitfehler nach Umst.auf Office 2019
04.03.2020 11:41:15
Gode
Hallo,
wir bereiten im Unternehmen gerade die Umstellung von Office 2010 auf Office 2019 vor.
Die Umstellung wurde bisher lediglich bei wenigen ausgesuchten Test-Usern vorgenommen.
Jetzt zu meinem Problem:
Wir erstellen direkt aus dem ERP-System programmgesteuert Excel-Dateien.
Häufig werden diese Daten dann in darauf basierenden Controlling-Auswertungen weiterverarbeitet (i.d.R. indem sich Makros in diesen anderen Dateien diese Daten holen).
Hier kann es zwei Szenarien geben:
Im ersten Fall ist die aus dem ERP-System erstellte Excel-Datei (Datenquelle) bereits erstellt und an einem definierten, bekannten Speicherort abgelegt worden -> UNPROBLEMATISCH
Im anderen Fall erfolgt die Weiterverarbeitung der Daten im gleichen Atemzug.
D.h. die ERP-Excel-Datei wurde erstellt, die Datei ist noch offen und eine andere Datei übernimmt hieraus Daten.
Um dies korrekt zu handlen wird im Makro über eine Funktion geprüft, ob die Datei der Excel-Datenquelle bereits geöffnet ist.
Entsprechend dem Rückgabewert der Funktion „DateiGeoeffnet“ erfolgt die Initialisierung des Workbook-Objektes
If DateiGeoeffnet(strPfad) = False Then
Set wbOpen = Workbooks.Open(strPfad)
Else
Set wbOpen = Workbooks(strDatei)
End If

Das hat bei mir bis zur Umstellung der Office-Version auf 2019 auch immer hervorragend geklappt.
Jetzt bekomme ich bei der Makro-Verarbeitung immer einen Laufzeitfehler beim Initialisieren des (bereits geöffneten) WB-Objekts.
Ich habe dann festgestellt, dass das übers ERP erstellte Excel seit der Umstellung auf 2019 in einer neuen Excel-Instanz erstellt wird (ist bei Office 2010 nicht so! … habe ich nochmal an einem anderen Rechner getestet).
Das Problem ist also das Initialisieren über „Set wbOpen = Workbooks(strDatei)“, da diese Excel-Instanz die geöffnete Arbeitsmappe nicht kennt (denke ich zumindest ?!)
Ich hätte mir eigentlich gedacht, dass Die Funktion „DateiGeoeffnet“ in diesem Fall den Rückgabewert „False“ zurückliefert … aber scheinbar wird hierüber das auch in einer anderen Instanz geöffnete Excel dennoch als geöffnet erkannt:
Private Function DateiGeoeffnet(DerPfad As String) As Boolean
On Error Resume Next
Open DerPfad For Binary Access Read Lock Read As #1
Close #1
If Err.Number  0 Then
DateiGeoeffnet = True
Err.Clear
End If
End Function

Meine Frage ist nun:
Wie könnte das Makro angepasst werden, so dass auch eine in einer anderen Instanz geöffnete Excel-Mappe initialisiert und angesprochen werden kann?
Gleichzeitig muss aber auch weiter die Verarbeitung unter Office 2010 gewährleistet bleiben! (zumindest so lange, bis die Umstellung komplett vollzogen ist).
Vielen Dank im Voraus für eure Hilfe hierzu !!
Gode

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler nach Umst.auf Office 2019
04.03.2020 20:54:29
Luschi
Hallo Gode,
ich habe Folgendes gemacht:
- in Excel 2013 eine xlsx-Datei geöffnet
- in Excel 2019 mit Deinem Code getestet, ob die xlsx-Datei geöffnet ist
- Excel 2019 liefert das Ergebnis: False
- drehe ich die Verhältnisse um, dann liefert Excel 2013: True
Sind die Makro- und xlsx-Datei in Excel 2019 in der gleichen oder in 2 getrennten Instanzen geöffnet, dann wird jedes mal True geliefert.
Gruß von Luschi
aus klein-Paris
Es ist einfach nicht mehr nachvollziehbar, was die M$-Leute sich da leisten, um den Anwender die letzte Lust an Office zu vermiesen
Anzeige
AW: Laufzeitfehler nach Umst.auf Office 2019
05.03.2020 08:51:27
Gode
Hallo,
vielen Dank mal für deine Rückmeldung!
Deine Erkenntnisse sind natürlich auch strange! ;-)
Diese Konstellation sollte es aber bei uns so nicht geben, da i.d.R. der Ersteller der ERP-Auswertung auch die Weiterverarbeitung auf dem gleichen Rechner (also gleiche Office Version) vornimmt.
Mein Problem ist im Moment nicht der Rückgabewert aus der Funktion (der passt ja eigtl. immer), sondern dass im Falle von 2 Instanzen das Initialisieren des Workbook-Objektes nicht funktioniert und auf Fehler läuft! :-(
Also ich habe die Verarbeitungs-Logik gestern nochmal "prozesssicher" auf 2 Rechnern durchgetestet und nachvollzogen:
Bei Office 2010 (Windows 10):
Hier spielt es keine Rolle, ob zuerst die Excel-Datei übers ERP (proAlpha) generiert oder eine darauf basierende Folgeauswertung geöffnet wird.
Letztlich sind immer beide Excel-Dateien in einer Instanz geöffnet!
Bei Office 2019 (W10) spielt hingegen die Reihenfolge eine Rolle:
a) Ist bereits eine Excel-Instanz vorhanden, wird die über das ERP erstellte Excel-Datei auch unter dieser bereits vorhandenen Instanz erstellt.
b) Ist noch kein Excel geöffnet und die erste Instanz entsteht durch das Erstellen der Excel-Datei aus dem ERP-System, so öffnen sich weitere, danach geöffnete Excel-Dateien in einer zweiten, zweiten Instanz.
Vll. hast du mir ja noch einen Hinweis zur Lösung meines o.a. Problems ?!
Gode
Anzeige
AW: Laufzeitfehler nach Umst.auf Office 2019
05.03.2020 10:18:45
Gode
Wenn ich statt
If DateiGeoeffnet(strPfad) = False Then
Set wbOpen = Workbooks.Open(strPfad)
Else
Set wbOpen = Workbooks(strDatei)
End If

im Else-Zweig folgende Anpassung vornehme sollte das eigentlich schon passen?
If DateiGeoeffnet(strPfad) = False Then
Set wbOpen = Workbooks.Open(strPfad)
Else
Set wbOpen GetObject(strPfad)
End If

Bei "GetObject" spielt es dann keine Rolle, ob die Excel-Datei in der gleichen oder einer anderen Excel-Instanz geöffnet ist ?
Oder übersehe ich hier noch was Wesentliches?
Gode
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige