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

Probleme mit QueryTable (Schreibgeschützt)

Probleme mit QueryTable (Schreibgeschützt)
Hockmock
Hallo an alle Xperten,
Per Makro und definierten Queries importiere ich eine ganze Zahl von daten. Das funzt soweit auch problemlos. Allerdings habe ich immer dann ein Problem, wenn die zugrunde liegende datei bereits durch einen anderen User geöffnet ist. Dann gerät alles ins stocken, eine fehlermeldung geht auf die man mit "Abbrechen" wegdrücken muss und dann geht's weiter im Programm.
Idealerweise hätte ich gerne im Vorfeld bereits eine Prüfung ob die QueryDatei bereits geöffnet ist. Wenn nein dann Aktualisierung; wenn ja dann protokiollierung in einem separaten tabellenblatt (z.B. "History")
Ist sowas möglich?
Hier mein bisheriger Code:
Sub Import_Abfragewerte()
' Alle Tabellenblätter mit hinterlegten Abfragen werden aktualisiert
Dim LQuery As Long
Dim myTab As Worksheet
On Error Resume Next
For Each myTab In ThisWorkbook.Worksheets
For LQuery = 1 To myTab.QueryTables.Count
myTab.Select
myTab.QueryTables.Item(LQuery).Refresh
Next LQuery
Next myTab
Sheets("History").Select
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Probleme mit QueryTable (Schreibgeschützt)
28.04.2010 16:29:12
Hockmock
Hallo nochmals an alle,
ich habe selbst noch ein bischen rumgedoktort' !! Eigentlich könnte es so laufen wie nachstehend beschrieben. Problem ist jetzt nure mein resume - next. Konkret: Bei einem Fehler (zugrunde liegende Query-Datei ist schreibgeschützt geöffnet) geht er aus der for-Anweisung zur Sprungmarke. Danach erzwingt er aber keinen next-Befehl sondern wechselt wieder in die for-Anweisung ?
Das kann doch nur ne' Kleinigkeit sein oder?
Danke im voraus.
Grüße,
Hockmock
Sub AktDieZweite()
'Namen der Tabellenblätter werden im Blatt "Checksummen - Splate AU ausgegeben
Dim i As Long
Application.DisplayAlerts = False
Sheets("History").Select
Range("e1").Select
On Error GoTo 1
For i = Sheets("Anfang").Index + 1 To Sheets("Ende").Index - 1
Sheets(i).Select
Range("A1").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
Sheets("History").Select
ActiveCell = "o.k."
ActiveCell.Offset(0, 1).Range("A1").Select
Next i
Application.DisplayAlerts = True
1:
Sheets("History").Select
ActiveCell = "xxx"
Resume Next
End Sub

Anzeige
AW: Probleme mit QueryTable (Schreibgeschützt)
29.04.2010 07:53:48
fcs
Hallo Hockmock,
du kannst mit Resume in einer Fehlerbehandlung auch an eine benamte Zeile springen.
Außerdem solltest du die Fehlerbehandlung so aufbauen, dass sie am Ende der Makroausführung übersprungen wird.
Durch Definition eines Range-Objekts für das Eintragen von "o.k."/"xxx" ist der Ablauf etwas "ruhiger".
Versuche auch mal die For-Next-Schleife, wie folgt einzukürzen:
For i = Sheets("Anfang").Index + 1 To Sheets("Ende").Index - 1
Sheets(i).QueryTables(1).Refresh BackgroundQuery:=False
Zelle = "o.k."
Set Zelle = Zelle.Offset(0, 1)
NextQuerry:
Next i

Gruß
Franz
Sub AktDieZweite()
'Namen der Tabellenblätter werden im Blatt "Checksummen - Splate AU ausgegeben
Dim i As Long, Zelle As Range
Application.DisplayAlerts = False
Sheets("History").Select
Set Zelle = Sheets("History").Range("e1") 'Startzelle für "o.k."/"xxx"
On Error GoTo Fehler
For i = Sheets("Anfang").Index + 1 To Sheets("Ende").Index - 1
Sheets(i).Select
Range("A1").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
Zelle = "o.k."
Set Zelle = Zelle.Offset(0, 1)
NextQuerry:
Next i
Application.DisplayAlerts = True
Err.Clear
Fehler:
With Err
Select Case .Number
Case 0 'alles ok
Case 999 'hier die Nummer des Fehler einsetzen
Zelle = "xxx"
Set Zelle = Zelle.Offset(0, 1)
Resume NextQuerry
Case Else
MsgBox "Fehler-Nr: " & .Number & vbLf & .Description
End Select
End With
End Sub

Anzeige
AW: Probleme mit QueryTable (Schreibgeschützt)
29.04.2010 08:21:06
Hockmock
Hallo Franz,
wow !!! Das ging schnell und ist um LÄNGEN besser als ich mir das erhofft hatte :-)
Vielen dank.
Grüße,
Hockmock

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige