Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

refresh eines QueryTable verursacht manchmal VBA-Fehler 400

183 views
Skip to first unread message

sven.wuenschmann

unread,
Jun 24, 2008, 8:58:33 AM6/24/08
to
Hallo zusammen,

MS Excel 2002 quält mich seit einiger Zeit mit einem recht seltsamen
Fehler, der zudem leider nicht deterministisch auftritt.

Problembeschreibung:
----------------------------

Das Workbook muss einen externen Report aus einer csv-Datei
verarbeiten. Dieser Report wird periodisch von einem externen System
erstellt und jeweils in einer _neuen_ Datei gespeichert. Um eine
Tageshistorie abzubilden, wird die Datei also nicht aktualisiert,
sondern es wird eine neue Datei erstellt.

Wie sich vermuten lässt, wird die csv-Datei von Excel mit einem
QueryTable-Objekt eingelesen. Eine periodisch aufgerufene Funktion
pollt nun nach einer neuen Report-Datei. Liegt eine solche vor, so
wird die "Connection"-Eigenschaft des QueryTable neu gesetzt und
"Refresh" dieses Objekt aufgerufen.

Diese Vorgehen funktioniert in den meisten Fällen. Manchmal wirft
Excel jedoch zu meinem Leidwesen einen VBA-Fehler aus: "VBA ERROR
400".

Knowledgebase sagt dazu auf http://support.microsoft.com/kb/146864/en-us
:

400 Form already displayed; can't show modally (version 97)

Nachdem dieser Fehler aufgetreten ist, hat es Excel beim nächsten
Versuch stets geschafft, das QueryTable-Objekt aufzufrischen.

Quellcode:
--------------

===================================================

'
*****************************************************************************
' * Import new imagine data if available
' *
' * Polls for new imagine report and loads it if newer than currently
used one.
' *
' * Return:
' * - True if new data was imported, False otherwise
'
*****************************************************************************
Public Function RefreshQueryTable() As Boolean
Dim strDirName As String
Dim strCurFileName As String
Dim strLatestFileName As String
Dim curTimeStamp As Variant
Dim latestTimeStamp As Variant

RefreshQueryTable = False

strDirName =
GetDirName(ThisWorkbook.Sheets("Positions").QueryTables(1).Connection)
strCurFileName =
GetFileName(ThisWorkbook.Sheets("Positions").QueryTables(1).Connection)
strLatestFileName = GetLatestFileName(strDirName,
REPORT_NAME_PATTERN)

' nothing to do if no imagine report is available
On Error GoTo ReturnRefreshQueryTable:
latestTimeStamp = FileDateTime(strDirName & strLatestFileName)

' always refresh if currently loaded imagine report is no longer
available (e.g. first run in the morning)
On Error GoTo DoRefreshQueryTable:
curTimeStamp = FileDateTime(strDirName & strCurFileName)

' refresh if
' newest imagine report available is new than the currently
loaded one
' or
' forced to reload latest if imagine data cell in status info is
empty (we assured that it is available)
If ((latestTimeStamp > curTimeStamp) Or
(ThisWorkbook.GetImgReportTime() = "")) Then

DoRefreshQueryTable:
ThisWorkbook.SetImgReportTime ("L O A D I N G")

On Error GoTo CatchRefreshError:
With ThisWorkbook.Sheets("Positions").QueryTables(1)
.Connection = "TEXT;" & strDirName & strLatestFileName
.Destination =
ThisWorkbook.Sheets("Positions").Range(QUERY_TABLE_DESTINATION)
.TextFilePlatform = 20127 ' US-ASCII
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 5, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.Refresh BackgroundQuery:=False
End With

ThisWorkbook.SetImgReportTime (latestTimeStamp)
RefreshQueryTable = True

' force to evaluate our new positions
If (Not Application.Calculation = xlCalculationAutomatic)
Then
ThisWorkbook.Sheets("Positions").Calculate
End If
End If
Exit Function

CatchRefreshError:
ThisWorkbook.SetImgReportTime ("")
MsgBox "Excel could not refresh position data: " & Err.Description
& _
" (" & Err.Number & ")"

ReturnRefreshQueryTable:
End Function

===================================================

Weitere Fehlerbeschreibung:
--------------------------------------

Merkwürdigerweise zeigt sich der Fehler auch auf zweierlei Arten:

(1) Wird der Fehler wie im Code mit "On Error GoTo CatchRefreshError:"
abgefangen, so zeigt die MsgBox "Excel could not refresh position
data: (0)"

(2) Verzichtet man auf das Abfangen des Fehlers, so erscheint die
genannte Fehlermeldung "VBA Error 400"

Hilfegesuch:
----------------

Kennt jemand diesen Fehler? Gibt es ein von MS definiertes Vorgehen,
um die "refresh"-Methode des QueryTable-Objekts mit einer abgeänderten
"Connection"-Eigenschaft aufzurufen? Gibt es eine zuverlässige
Alternative, um die Problemstellung sauber zu lösen? Das QueryTable-
Objekt zunächst mit der "Delete"-Methode zu löschen führt nicht direkt
zu der gewünschten Lösung, da in mehreren Spalten rechts des
QueryTable-Objekts mit den Spalten des eingelesenen Reports gerechnet
werden muss.

Vielen Dank für die Hilfestellung im voraus!

Grüße,
Sven

Susanne Wenzel

unread,
Jun 26, 2008, 3:31:52 AM6/26/08
to
Hallo Sven,
da hier bisher keine(r) geantwortet hat, versuche ich es mal.

Am Tue, 24 Jun 2008 05:58:33 -0700 (PDT) schrieb sven.wuenschmann:

[...]

> Nachdem dieser Fehler aufgetreten ist, hat es Excel beim nächsten
> Versuch stets geschafft, das QueryTable-Objekt aufzufrischen.

Was heißt bei Dir "nächster Versuch"?
Makro beenden und neu aufrufen oder mit F5 nach dem Fehler das Makro
weiterlaufen lassen (als Versuch)?

[Code gesnipt]

> Merkwürdigerweise zeigt sich der Fehler auch auf zweierlei Arten:

> (1) Wird der Fehler wie im Code mit "On Error GoTo CatchRefreshError:"
> abgefangen, so zeigt die MsgBox "Excel could not refresh position
> data: (0)"

> (2) Verzichtet man auf das Abfangen des Fehlers, so erscheint die
> genannte Fehlermeldung "VBA Error 400"

Kennst Du die Codezeile, welche den Fehler auslöst?

> Hilfegesuch:
> ----------------

> Kennt jemand diesen Fehler?

Ich zumindest nicht. Die Fehlernummer 400 tauchte hier in dieser NG aber
auch in einem anderen Posting auf, dort ging es wohl um Excel2007 und wurde
ausgelöst durch eine nicht geöffnete Mappe (wenn ich das noch richtig
erinnere), also etwas ganz anderes.

Falls die Fehlerbeschreibung der KB bei Dir richtig ist: Hast Du denn
überhaupt ein Formular im Einsatz?

> Gibt es ein von MS definiertes Vorgehen, um die "refresh"-Methode des
> QueryTable-Objekts mit einer abgeänderten "Connection"-Eigenschaft
> aufzurufen?

Keine Ahnung, ich habe bisher nicht mit QueryTables zu tun gehabt.

> Gibt es eine zuverlässige Alternative, um die Problemstellung sauber zu
> lösen?

Ich habe zumindest eine Idee, weiß aber nicht ob die Rahmenbedingungen bei
Dir zutreffen. Ich meine folgende:

1. Das Problem tritt unregelmäßig auf
2. Nachdem das Makro in den Fehler gelaufen ist, kann man direkt mit F5
weitermachen, es kommt fehlerlos zum Ende. Alternativ "funktioniert" auch
ein stop vor der fehlerauslösenden Zeile und daran anschließend ein F5.
3. Ein Abfragen der Werte aller zur Zeit benutzten Variablen zeigt, dass
alle ordnungsgemäß gefüllt sind.

Deshalb fragte ich oben, ob Du die Zeile kennst.

Wenn also diese Situation (das läuft bei mir persönlich unter der Rubrik
sich selbst überholende Prozesse) auch bei Dir zu finden ist:
Ich habe mir in den meisten Fällen mit einem (ggf. auch mehreren) richtig
platzierten DoEvents helfen können.

> Vielen Dank für die Hilfestellung im voraus!

Ich habe es versucht, vielleicht hilfts ja.

Viele Grüße aus dem hohen flachen Norden Deutschlands
Susanne
--
Office XP, SP3, aktueller Patchstand
Windows 2000, SP4, aktueller Patchstand
KI-TRIPLE 2007

sven.wuenschmann

unread,
Jun 26, 2008, 5:18:37 AM6/26/08
to
Hallo Susanne,

vielen Dank für Deine Antwort. Gerne gehe ich noch weiter auf die von
Dir aufgeworfenen Fragen ein. Zudem kann in nun auch einen Screenshot
bei Auftreten des Fehlers posten.

>
> [...]
>
> > Nachdem dieser Fehler aufgetreten ist, hat es Excel beim nächsten
> > Versuch stets geschafft, das QueryTable-Objekt aufzufrischen.
>
> Was heißt bei Dir "nächster Versuch"?
> Makro beenden und neu aufrufen oder mit F5 nach dem Fehler das Makro
> weiterlaufen lassen (als Versuch)?
>

Wie beschrieben wird die Funktion RefreshQueryTable() periodisch über
einen Timer ausgeführt, um nach einem neuen Report zu pollen. Falls
nun ein solcher vorliegt aber der Refresh fehlschlägt, so beendet sich
die Funktion mit einer Fehlermeldung in einer MsgBox. Das Abfangen des
VBA-Fehler ist ziemlich wichtig, damit das Sheet weiterlaufen kann und
alle eingeplanten und periodischen Aufgaben weiterhin ausgeführt
werden. Mit "nächster Versuch" meine ich nun den nächsten Aufruf der
Funktion RefreshQueryTable() über dieses zyklische Task-Scheduling.

> [Code gesnipt]
>
> > Merkwürdigerweise zeigt sich der Fehler auch auf zweierlei Arten:
> > (1) Wird der Fehler wie im Code mit "On Error GoTo CatchRefreshError:"
> > abgefangen, so zeigt die MsgBox "Excel could not refresh position
> > data:  (0)"
> > (2) Verzichtet man auf das Abfangen des Fehlers, so erscheint die
> > genannte Fehlermeldung "VBA Error 400"
>
> Kennst Du die Codezeile, welche den Fehler auslöst?
>

Wenn man den Fehler nicht abfängt, erscheint lediglich eine VBA-MsgBox
"ERROR 400" mit einem OK-Knopf. Leider gibt es nicht den bekannten
Dialog mit den Auswahlmöglichkeiten "Beenden" "Debuggen", etc, mit dem
man an die Fehlerstelle springen könnten. Allerdings meine ich mich zu
erinnnern, dass bei einem manuellen Durchgehen durch die Prozedur mit
F8 der Fehler tatsächlich in der Zeile

".Refresh BackgroundQuery:=False"

aufgetreten ist. Also beim Aufruf der Refresh-Methode des QueryTable-
Objekts.

> > Hilfegesuch:
> > ----------------
> > Kennt jemand diesen Fehler?
>
> Ich zumindest nicht. Die Fehlernummer 400 tauchte hier in dieser NG aber
> auch in einem anderen Posting auf, dort ging es wohl um Excel2007 und wurde
> ausgelöst durch eine nicht geöffnete Mappe (wenn ich das noch richtig
> erinnere), also etwas ganz anderes.
>
> Falls die Fehlerbeschreibung der KB bei Dir richtig ist: Hast Du denn
> überhaupt ein Formular im Einsatz?

Nein, ich verwende in dem Workbook keine Formulare. Daher freue ich
mich ja auch so über diese aussagekräftige und präzise Fehlermeldung
von Excel...

> [...]


> Wenn also diese Situation (das läuft bei mir persönlich unter der Rubrik
> sich selbst überholende Prozesse) auch bei Dir zu finden ist:
> Ich habe mir in den meisten Fällen mit einem (ggf. auch mehreren) richtig
> platzierten DoEvents helfen können.

> [...]

Bin mir nicht sicher, ob ich soetwas in diesem Fall verwenden kann..


Ergänzung:
----------------

Eben trat der Fehler auf. Er wurde nicht durch "On Error Goto.."
abgefangen. Der Fehler trat auf, als das Excel _nicht in der
Taskleiste minimiert_ lief. Ich bin mir nicht sicher, ob ich den
Fehler bereits ebenfalls beobachten konnte, als das Excel minimiert in
der Taskleiste lief..

Hier der Screenshot:
http://pc56245.uni-regensburg.de/~wus03254/screenshots/wbw_error400_publ.PNG

Nach einem Klick auf "OK" wird die VBA-Verarbeitung zurück gesetzt und
die zyklische Event-Verarbeitung (mit Application.OnTime()) kommt zum
Erliegen.

Viele Grüße,
Sven

Susanne Wenzel

unread,
Jun 26, 2008, 6:03:24 AM6/26/08
to
Hallo Sven,

Am Thu, 26 Jun 2008 02:18:37 -0700 (PDT) schrieb sven.wuenschmann:

>> Was heißt bei Dir "nächster Versuch"?
>> Makro beenden und neu aufrufen oder mit F5 nach dem Fehler das Makro
>> weiterlaufen lassen (als Versuch)?

> Wie beschrieben wird die Funktion RefreshQueryTable() periodisch über
> einen Timer ausgeführt, um nach einem neuen Report zu pollen. Falls
> nun ein solcher vorliegt aber der Refresh fehlschlägt, so beendet sich
> die Funktion mit einer Fehlermeldung in einer MsgBox. Das Abfangen des
> VBA-Fehler ist ziemlich wichtig, damit das Sheet weiterlaufen kann und
> alle eingeplanten und periodischen Aufgaben weiterhin ausgeführt
> werden. Mit "nächster Versuch" meine ich nun den nächsten Aufruf der
> Funktion RefreshQueryTable() über dieses zyklische Task-Scheduling.

Verstanden.

>> [Code gesnipt]

>>> Merkwürdigerweise zeigt sich der Fehler auch auf zweierlei Arten:
>>> (1) Wird der Fehler wie im Code mit "On Error GoTo CatchRefreshError:"
>>> abgefangen, so zeigt die MsgBox "Excel could not refresh position
>>> data:  (0)"
>>> (2) Verzichtet man auf das Abfangen des Fehlers, so erscheint die
>>> genannte Fehlermeldung "VBA Error 400"

>> Kennst Du die Codezeile, welche den Fehler auslöst?

> Wenn man den Fehler nicht abfängt, erscheint lediglich eine VBA-MsgBox
> "ERROR 400" mit einem OK-Knopf. Leider gibt es nicht den bekannten
> Dialog mit den Auswahlmöglichkeiten "Beenden" "Debuggen", etc, mit dem
> man an die Fehlerstelle springen könnten.

Mal ganz schlicht gefragt: gibt er Dir bei dieser Fehlermeldung
verwertbares zurück, wenn Du auf den Button Hilfe drückst?

> Allerdings meine ich mich zu erinnnern, dass bei einem manuellen
> Durchgehen durch die Prozedur mit F8 der Fehler tatsächlich in der Zeile

> ".Refresh BackgroundQuery:=False"

> aufgetreten ist. Also beim Aufruf der Refresh-Methode des QueryTable-
> Objekts.

Hast Du die Möglichkeit, die Sache mal komplett zu debuggen?
Vom Screenshot her käme ich auf die Idee, dass jemand Fremdes dieses Teil
geschrieben hat.

Wenn Du das hast: kommentiere die Fehlerabfangsroutinen mal testmäßig aus
und setze im VBA-Editor die Eigenschaft "Unterbrechen bei Fehlern" auf "Bei
jedem Fehler". Jetzt solltest Du in der Lage sein, sicher die
fehlerauslösende Zeile zu ermitteln.

>>> Hilfegesuch:
>>> ----------------
>>> Kennt jemand diesen Fehler?

>> Ich zumindest nicht. Die Fehlernummer 400 tauchte hier in dieser NG aber
>> auch in einem anderen Posting auf, dort ging es wohl um Excel2007 und wurde
>> ausgelöst durch eine nicht geöffnete Mappe (wenn ich das noch richtig
>> erinnere), also etwas ganz anderes.

>> Falls die Fehlerbeschreibung der KB bei Dir richtig ist: Hast Du denn
>> überhaupt ein Formular im Einsatz?

> Nein, ich verwende in dem Workbook keine Formulare. Daher freue ich
> mich ja auch so über diese aussagekräftige und präzise Fehlermeldung
> von Excel...

Habe mal (allerdings ultrakurz) nach dem Fehler 400 gegoogelt, kommt mir so
vor, als wenn dieser ausgelöst wird, sobald Excel auf irgendetwas nicht
zugreifen kann. Eine Datei, die es nicht finden kann (weil die Berechtigung
fehlt oder weil die Datei nicht existiert usw.), einen Bereich, der
geschützt ist oder sonstwas. Gibt es so etwas bei Dir bzw. kann es so etwas
mal geben?

>> [...]
>> Wenn also diese Situation (das läuft bei mir persönlich unter der Rubrik
>> sich selbst überholende Prozesse) auch bei Dir zu finden ist:
>> Ich habe mir in den meisten Fällen mit einem (ggf. auch mehreren) richtig
>> platzierten DoEvents helfen können.
>> [...]

> Bin mir nicht sicher, ob ich soetwas in diesem Fall verwenden kann..

Es käme mal auf einen Versuch an, aber das liegt natürlich bei Dir, ob Du
es möchtest/kannst/darfst. Falls Du die Zeile (s.o.) ermittelt hast,
probiere es ansonsten mit einem stop in der nächsten Zeile, wie ich im
vorherigen Beitrag geschrieben hatte, dann "passiert" nichts.

> Eben trat der Fehler auf. Er wurde nicht durch "On Error Goto.."
> abgefangen. Der Fehler trat auf, als das Excel _nicht in der
> Taskleiste minimiert_ lief. Ich bin mir nicht sicher, ob ich den
> Fehler bereits ebenfalls beobachten konnte, als das Excel minimiert in
> der Taskleiste lief..

Eigentlich dürfte dieser Fehler damit nichts zu tun haben...

sven.wuenschmann

unread,
Jun 26, 2008, 7:45:53 AM6/26/08
to
Hallo Susanne,


On 26 Jun., 12:03, Susanne Wenzel <wirdnichtgele...@onlinehome.de>
wrote:


> Hallo Sven,
>
> Am Thu, 26 Jun 2008 02:18:37 -0700 (PDT) schrieb sven.wuenschmann:
>

> [...]


> >> [Code gesnipt]
> >>> Merkwürdigerweise zeigt sich der Fehler auch auf zweierlei Arten:
> >>> (1) Wird der Fehler wie im Code mit "On Error GoTo CatchRefreshError:"
> >>> abgefangen, so zeigt die MsgBox "Excel could not refresh position
> >>> data:  (0)"
> >>> (2) Verzichtet man auf das Abfangen des Fehlers, so erscheint die
> >>> genannte Fehlermeldung "VBA Error 400"
> >> Kennst Du die Codezeile, welche den Fehler auslöst?
> > Wenn man den Fehler nicht abfängt, erscheint lediglich eine VBA-MsgBox
> > "ERROR 400" mit einem OK-Knopf. Leider gibt es nicht den bekannten
> > Dialog mit den Auswahlmöglichkeiten "Beenden" "Debuggen", etc, mit dem
> > man an die Fehlerstelle springen könnten.
>
> Mal ganz schlicht gefragt: gibt er Dir bei dieser Fehlermeldung
> verwertbares zurück, wenn Du auf den Button Hilfe drückst?

Leider nicht... Soweit ich das im Kopf habe, gibt es auch nur die
Beschreibung dieser Fehlernummer wie in der Knowlege-Base.

>
> > Allerdings meine ich mich zu erinnnern, dass bei einem manuellen
> > Durchgehen durch die Prozedur mit F8 der Fehler tatsächlich in der Zeile
> >   ".Refresh BackgroundQuery:=False"
> > aufgetreten ist. Also beim Aufruf der Refresh-Methode des QueryTable-
> > Objekts.
>
> Hast Du die Möglichkeit, die Sache mal komplett zu debuggen?
> Vom Screenshot her käme ich auf die Idee, dass jemand Fremdes dieses Teil
> geschrieben hat.

Was meinst Du mit "komplett zu debuggen"? Klar, das Teil stammt von
mir und außer PowerPlus Pro von Reuters (um auf Marktdaten
zuzugreifen) werden keine weiteren Ereiterungen verwendet.

>
> Wenn Du das hast: kommentiere die Fehlerabfangsroutinen mal testmäßig aus
> und setze im VBA-Editor die Eigenschaft "Unterbrechen bei Fehlern" auf "Bei
> jedem Fehler". Jetzt solltest Du in der Lage sein, sicher die
> fehlerauslösende Zeile zu ermitteln.

Das Workbook läuft derzeit bereits mit den auskommentierten
Fehlerabfangsroutinen und unterbrechen "Bei nicht verarbeiteten
Fehlern". Sonst hätte es vorhin nicht diese MsgBox mit dem VBA-Fehler
gegeben, sondern die selbst erzeugte MsgBox "Excel could not refresh
position data: ..." und die Funktion RefreshQueryTable() wäre normal
zu ihrem Aufrufer (die Excel-Routinen, die die mittels
Application.OnTime() eingeplanten Funktionen aufrufen) zurück gekehrt.

Dazu fällt mir ein: Vielleicht könnte der Fehler etwas mit diesem
Aufrufkontext zu tun haben? Bei manueller Ausführung mit F5 könnte ich
den Fehler bisher noch nicht erzeugen. Aber das heißt ja leider
nichts...

>> [...]


> Habe mal (allerdings ultrakurz) nach dem Fehler 400 gegoogelt, kommt mir so
> vor, als wenn dieser ausgelöst wird, sobald Excel auf irgendetwas nicht
> zugreifen kann. Eine Datei, die es nicht finden kann (weil die Berechtigung
> fehlt oder weil die Datei nicht existiert usw.), einen Bereich, der
> geschützt ist oder sonstwas. Gibt es so etwas bei Dir bzw. kann es so etwas
> mal geben?

Geschützte Bereiche gibt es keine. Aber vielleicht deutet der Fehler
tatsächlich darauf hin, dass Excel nicht auf die Datei zugreifen kann!
Der Report (ca. 4,5MB) wird per FTP von Unix in die Windows Domäne
exportiert. Vielleicht kommt es zu diesem Fehler, wenn Excel versucht
auf den Report zuzugreifen, während die FTP-Übertragung noch läuft?
Von der gefühlten Fehlerhäufigkeit könnte das hinkommen, denn das
Polling findet alle 30 Sekunden statt. Leider kenne ich nicht die
Übertragungsdauer der Datei, aber sie könnte zwischen 5 und 10
Sekunden liegen.

Also könnte es sich lohnen, an dieser Ecke etwas weiterzuforschen. Man
muss wohl sicherstellen, dass die Datei erst verwendet wird, wenn die
Übertragung abgeschlossen ist. Wie es aussieht, sollte ich den
Übertragungsmechanismus unter die Lupe nehmen..

Weiterer starker Hinweis, dass dies das Problem sein könnte: Ich habe
die Connection-Eigenschaft auf eine nicht-existierende Datei gesetzt.
Und Du darfst raten, was passiert? Genau, Fehler 400! Die Refresh-
Methode des QueryTable-Objekts gibt wohl auf diese Weise einen Fehler
zurück.

Danke für die nützlichen Hinweise!

Viele Grüße aus Hessen,
Sven

Susanne Wenzel

unread,
Jun 26, 2008, 1:02:56 PM6/26/08
to
Hallo Sven,

Am Thu, 26 Jun 2008 04:45:53 -0700 (PDT) schrieb sven.wuenschmann:

[...]

>> Hast Du die Möglichkeit, die Sache mal komplett zu debuggen?


>> Vom Screenshot her käme ich auf die Idee, dass jemand Fremdes dieses Teil
>> geschrieben hat.

> Was meinst Du mit "komplett zu debuggen"?

Bei mir läuft sowas dann mit F8, msgboxen mit interessierenden Werten rund
um die vermutete Fehlerstelle, Haltepunkte, Überwachungsausdrücke,
schrittweise auskommentieren von fehlerfrei funktionierenden Teilbereichen
usw. ab. Die mühselige Variante, wenn man anders nicht weiterkommt.

>> Habe mal (allerdings ultrakurz) nach dem Fehler 400 gegoogelt, kommt mir so
>> vor, als wenn dieser ausgelöst wird, sobald Excel auf irgendetwas nicht
>> zugreifen kann. Eine Datei, die es nicht finden kann (weil die Berechtigung
>> fehlt oder weil die Datei nicht existiert usw.), einen Bereich, der
>> geschützt ist oder sonstwas. Gibt es so etwas bei Dir bzw. kann es so etwas
>> mal geben?

> Geschützte Bereiche gibt es keine. Aber vielleicht deutet der Fehler
> tatsächlich darauf hin, dass Excel nicht auf die Datei zugreifen kann!

[weitere Überlegungen in diese Richtung gesnipt]

> Weiterer starker Hinweis, dass dies das Problem sein könnte: Ich habe
> die Connection-Eigenschaft auf eine nicht-existierende Datei gesetzt.
> Und Du darfst raten, was passiert? Genau, Fehler 400! Die Refresh-
> Methode des QueryTable-Objekts gibt wohl auf diese Weise einen Fehler
> zurück.

> Danke für die nützlichen Hinweise!

Freut mich, wenn ich Dir irgendwie helfen konnte.:-)

Ich wünsche Dir viel Glück bei der Ursachenforschung.

0 new messages