AW: VBA Anwendungs- oder objekdefinierter Fehler '1004'
Yal
Hallo Burghard,
es könnte daran liegen, dass Du "QueryTables.Add" verwendest: ist eine QueryTable in J2 bereits vorhanden, wird der code nicht in der Lage eine neue QueryTable zu erzeugen, und somit zu refreshen.
Falls das, das Problem ist (aus der Ferne...), dann musst Du den Code so umbauen, dass er testet, ob bereits eine QT vorliegt. Idealerweise mit einem fixierten Namen.
Sub IMPORT5_NAR()
Dim sFile As String
Dim QT As QueryTable
Const cPath = "Z:\L-Preise-2024\ALIAS 70127\"
Const cQueryName = "myQuery"
'prüfen, ob bereits vorhanden
On Error Resume Next 'Fehlertoleranz einführen
Set QT = ActiveSheet.QueryTables(cQueryName)
On Error GoTo 0 'Fehlertoleranz zurücknehmen
If QT Is Nothing Then
'wenn nicht vorhanden, erzeugen
sFile = Dir(cPath & "*-2024*.txt")
Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & cPath & sFile, Destination:=Range("J2"))
With QT
.Name = cQueryName 'WICHTIG
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 3
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 9, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Else
'wenn vorhanden, nur refresh
QT.Refresh
End If
End Sub
Es gäbe auch die Möglichkeit zu testen, ob in Zelle J2 eine QT aktiv ist. Siehe bitte dafür die Onlinehilfe.
Wenn eine QT bereits existiert, brauchst Du VBA nicht mehr: einfach auf die QT rechtsklicken und "Aktualisieren" auswählen.
VG
Yal