Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1556to1560
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

Unterschied workbook.open und händisches öffnen

Unterschied workbook.open und händisches öffnen
23.05.2017 12:31:37
Nils
Hallo liebe VBA Experten,
vielleicht könnt ihr mir bei diesem Problem helfen:
Ich habe ein Add-In (xlam) welches mir auf Knopfdruck in die aktive Arbeitsmappe ein neues Tabellenblatt "Auswertung1" einfügt. In dem Tabellenblatt befindet sich ein Diagramm.
Die Bezüge in dem Diagramm sind dynamisch. Die Werte für X und Y beziehen sich auf lokale Namen, die in dem Tabellenblatt "Auswertung1" angelegt wurden.
LokalTabX =
BEREICH.VERSCHIEBEN(INDIREKT(VERKETTEN("Auswertung1!";ADRESSE(2;2);":";ADRESSE(2;6)));0;0;;5-ZÄHLENWENN(INDIREKT(VERKETTEN("Auswertung1!";ADRESSE(2;2);":";ADRESSE(2;6)));""))
LokalTabY =
BEREICH.VERSCHIEBEN(INDIREKT(VERKETTEN("Auswertung1!";ADRESSE(3;2);":";ADRESSE(3;6)));0;0;;5-ZÄHLENWENN(INDIREKT(VERKETTEN("Auswertung1!";ADRESSE(2;2);":";ADRESSE(2;6)));""))
Mein code zum einfügen lautet:

Public Sub Auswertung(ByVal Control As IRibbonControl)
'    MsgBox "Auswertung einfügen..."
Dim PfadVorlagen, VorlageAuswertung, WahlAuswertung, Aktuell, PfadAktuell As String
PfadVorlagen = "C:\Users\" & Environ("username") & "\Desktop\Testumgebung\Vorlagen\"
VorlageAuswertung = "Auswertung_Lokal.xlsx"
WahlAuswertung = Array("Auswertung1", "Auswertung2", "Auswertung3")
i = 0
Aktuell = ActiveWorkbook.Name
PfadAktuell = ActiveWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Workbooks.Open PfadVorlagen & VorlageAuswertung
Workbooks(VorlageAuswertung).Sheets(WahlAuswertung(i)).Copy after:=Workbooks(Aktuell). _
Worksheets(Workbooks(Aktuell).Worksheets.Count)
Workbooks(VorlageAuswertung).Close savechanges = False
ActiveWorkbook.Save
Workbooks(Aktuell).Close savechanges = True
Workbooks.Open Filename:=PfadAktuell & Aktuell, UpdateLinks:=3
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Nun zum Problem:
Wenn ich eine Excel-Datei von einem Netzlaufwerk öffne und das Script ausführe, fügt das Script erfolgreich das Tabellenblatt "Auswertung1" ein. Nach dem erneuten öffnen
Workbooks.Open Filename:=PfadAktuell & Aktuell, UpdateLinks:=3

werden allerdings die Bezüge im Diagramm nicht aktualisiert. Der Bereich der Variablen X und Y verändert sich nicht trotz bereich.verschieben. Erst wenn ich die Excel-Mappe händisch schließe und händisch öffne, ist mein Diagramm wieder dynamisch und alles funktioniert so wie es soll (sehr merkwürdig).
Anders herum, wenn ich die Zeile Worbook.open... auskommentiere, und die Excel-Mappe von vornherein händisch öffne, funktioniert es auf Anhieb. Meine Diagramme sind dynamisch.
Es muss also einen Unterschied geben zwischen workbook.open und händischem öffnen der Mappe. Kurioserweise habe ich das Phänomen nur auf einem eingebundenen Netzlaufwerk. Liegt meine Ziel-Mappe lokal auf einem Laufwerk, dann geht der Code so wie er ist.
Kann mir jemand erklären, woran das liegt?
Vielen dank!
Nils

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Unterschied workbook.open und händisches öffnen
23.05.2017 19:27:21
Nils
Nach stundenlangem rumprobieren habe ich festgestellt, dass es weder am Netzlaufwerk liegt, noch an Sonderzeichen im Pfad oder Dateinamen. Es liegt einfach am Inhalt mancher Excel-Dateien. Vielleicht an der ungünstig vorhandenen Nummerierung der bereits vorhandenen Tabellenblätter, an vorhandenen Diagrammen, was auch immer. Bei manchen Dateien geht es tadellos, bei manchen nicht.
Wenn ich allerdings
CreateObject("Shell.Application").Open (PfadAktuell & Aktuell)

anstelle von
Workbooks.Open PfadAktuell & Aktuell

verwende, scheint es bei allen Dateien auf Anhieb zu funktionieren.
Ich weiß zwar nicht wieso, aber das scheint die Lösung zu sein...
Grüße
Nils
Anzeige
AW: Unterschied workbook.open und händisches öffnen
25.05.2017 10:08:52
Werner
Hallo Nils,
versuch mal folgendes:
das hier
Workbooks(VorlageAuswertung).Sheets(WahlAuswertung(i)).Copy after:=Workbooks(Aktuell). _
Worksheets(Workbooks(Aktuell).Worksheets.Count)
ändern in:
Workbooks(VorlageAuswertung).WorkSheets(WahlAuswertung(i)).Copy after:=Workbooks(Aktuell) _
. _
Worksheets(Workbooks(Aktuell).Worksheets.Count)
Diagramme sind auch Sheets, könnte sein, dass es deshalb zu Problemen kommt weil du das Blatt nicht explizit mit Worksheets ansprichst.
Gruß Werner
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige