Hallo,
ich verwende in einem Excel-Sheet "Archiv" eine Intelligente Tabelle und mehrere Makros um
a) den Inhalt der Intelligenten Tabelle aus einer anderen Excel-Datei zu aktualisieren
b) Verknüpfungen auf PDF-Dateien in einem bestimmten Verzeichnis zu erzeugen
c) Die Daten in der intelligenten Tabelle nach Datum und Uhrzeit zu sortieren
Alle verwendeten Makros liegen im gleichen Modul.
Über drei Buttons im Excel-Sheet "Archiv" starte ich jeweils eines der drei Makros, welche dann
fehlerfrei abgearbeitet werden und das erwartete Ergebnis bringen.
Bis hierher alles in Ordnung.
Nun möchte ich aus dem Makro "Aktualisieren" (über den Button "Aktualisieren" gestartet) zusätzlich die beiden anderen Makros "Links erzeugen" und "Sortieren" aufrufen,
damit bei einem Klick auf den Button "Aktualisieren" alle drei Makros abgearbeitet werden.
"Aktualisieren" und "Links erzeugen" werden fehlerfrei abgearbeitet, jedoch tritt im dritten Makro "Sortieren" ("Aktualisieren" ruft "Links erzeugen" auf, danach das Makro "Sortieren")
die Fehlermeldung "400" auf.
Wenn ich im Debugger die gleiche Makroabfolge beginnend mit "Aktualisieren" durchsteppe, tritt der Fehler nicht auf.
Nachfolgend die Makros um die es geht.
Hat jemand eine Erklärung dafür und vielleicht einen Tipp, wie ich dieses Problem lösen kann?
Ich verwende MS Office 2016 Professional
in einer VM mit Windows 7 Professional (ohne Zugang ins Internet).
Bitte Bescheid geben, wenn weitere Infos benötigt werden.
Gruß
Rodario
ich verwende in einem Excel-Sheet "Archiv" eine Intelligente Tabelle und mehrere Makros um
a) den Inhalt der Intelligenten Tabelle aus einer anderen Excel-Datei zu aktualisieren
b) Verknüpfungen auf PDF-Dateien in einem bestimmten Verzeichnis zu erzeugen
c) Die Daten in der intelligenten Tabelle nach Datum und Uhrzeit zu sortieren
Alle verwendeten Makros liegen im gleichen Modul.
Über drei Buttons im Excel-Sheet "Archiv" starte ich jeweils eines der drei Makros, welche dann
fehlerfrei abgearbeitet werden und das erwartete Ergebnis bringen.
Bis hierher alles in Ordnung.
Nun möchte ich aus dem Makro "Aktualisieren" (über den Button "Aktualisieren" gestartet) zusätzlich die beiden anderen Makros "Links erzeugen" und "Sortieren" aufrufen,
damit bei einem Klick auf den Button "Aktualisieren" alle drei Makros abgearbeitet werden.
"Aktualisieren" und "Links erzeugen" werden fehlerfrei abgearbeitet, jedoch tritt im dritten Makro "Sortieren" ("Aktualisieren" ruft "Links erzeugen" auf, danach das Makro "Sortieren")
die Fehlermeldung "400" auf.
Wenn ich im Debugger die gleiche Makroabfolge beginnend mit "Aktualisieren" durchsteppe, tritt der Fehler nicht auf.
Nachfolgend die Makros um die es geht.
Hat jemand eine Erklärung dafür und vielleicht einen Tipp, wie ich dieses Problem lösen kann?
Code:
Sub Aktualisieren8()
'
' Aktualisieren Makro - Zelle innerhalb der intelligenten Tabelle selektieren
Worksheets("Archiv").Range("C5").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
'
Call SetLinks_and_Sort
' Alternativ einzelne Aufrufe der Makros führen zu dem gleichen Problem wie bei Call SetLinks_and_Sort
' Call LinksSetzen
' Call Sortierung_Datum_und_Zeit
'
End Sub
Sub SetLinks_and_Sort()
' Sheets("Archiv").Select
Call LinksSetzen
Call Sortierung_Datum_Zeit
End Sub
Sub LinksSetzen()
' Dateilinks wieder herstellen.
Dim AnzPDF As Integer
Dim aktZeile As Integer
Dim StartZeile As Integer
Dim LetzteZeile As Integer
Dim PfadKomplett As String
AnzPDF = Worksheets("Archiv").Range("$H$1").Value
StartZeile = 5
LetzteZeile = StartZeile + AnzPDF - 1
' Schleife über alle Datensätze, um die Dateilinks zu aktualisieren
For aktZeile = StartZeile To LetzteZeile
' Link zum PDF-Dokument einfügen
PfadKomplett = Worksheets("Archiv").Range("$J" & aktZeile).Value
Sheets("Archiv").Range("$I" & aktZeile).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=PfadKomplett, TextToDisplay:="[PDF]"
Next aktZeile
End Sub
Sub Sortierung_Datum_Zeit()
'
' Sortierung über zwei Spalten Zeit, Datum
' Sortierung absteigend (jüngste Einträge oben)
ActiveWorkbook.Worksheets("Archiv").ListObjects("Archiv_Zeile").Sort.SortFields _
.Clear
' Diese Meldung wird direkt vor Auftreten des Fehlers angezeigt.
MsgBox ("Sortierung Zeit")
' Fehlermeldung '400' bei Ausführung des folgenden Kommandos.
' Archiv_Zeile ist ein benannter Bereich, welcher die erste Datenzeile der intelligenten Tabelle umfasst
' Zeit und Datum sind zwei Spaltenköpfe der intelligenten Tabelle
ActiveWorkbook.Worksheets("Archiv").ListObjects("Archiv_Zeile").Sort.SortFields _
.Add Key:=Range("Archiv_Zeile[[#All],[Zeit]]"), SortOn:=xlSortOnValues, _
Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Archiv").ListObjects("Archiv_Zeile").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' Diese Meldung wird nicht mehr angezeigt
MsgBox ("Sortierung Datum")
ActiveWorkbook.Worksheets("Archiv").ListObjects("Archiv_Zeile").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Archiv").ListObjects("Archiv_Zeile").Sort. _
SortFields.Add Key:=Range("Archiv_Zeile[[#All],[Datum]]"), SortOn:= _
xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Archiv").ListObjects("Archiv_Zeile").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Ich verwende MS Office 2016 Professional
in einer VM mit Windows 7 Professional (ohne Zugang ins Internet).
Bitte Bescheid geben, wenn weitere Infos benötigt werden.
Gruß
Rodario