Automation: Replace meldet außerhalb des Index

23/09/2009 - 16:48 von Arne | Report spam
Hallo Liebe NG,
ich benutze die OLE Automation aus Access 2003 heraus um ein Excel
Worksheet zu manipulieren. In meinem Fall bentuze ich Excel in Version
2007.

Folgenden Befehl habe ich mit der Makroaufzeichnung ermittelt:

Columns("I:P").Select
Selection.Replace What:="", Replacement:="no", LookAt:=xlWhole,
SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False,
ReplaceFormat:=False

Zecksübersichtlichkeit hab ich ihn so zusammen gefasst:

xlAnw.Sheets(1).Columns("I:P").Replace What:="", Replacement:="no",
LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=True,
SearchFormat:=False, ReplaceFormat:=False

Aus Excel heraus funktioniert der Befehl. Aber in Access gibt er mir
ne Fehlermeldung:

Laufzeitfehler "9": Index außerhalb des gültigen Bereichs

Mir ist nicht ganz klar welchen Index er meint. Wenn ich jede Spalte
markiere und dann ersetze funktionierts pràchtig. Aber von I bis P mag
er nicht. Weis jemand wieso?

Gruß Arne
 

Lesen sie die antworten

#1 Andreas Killer
23/09/2009 - 17:21 | Warnen spam
Arne schrieb:

Zecksübersichtlichkeit hab ich ihn so zusammen gefasst:

xlAnw.Sheets(1).Columns("I:P").Replace What:="", Replacement:="no",
LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=True,
SearchFormat:=False, ReplaceFormat:=False


Der weiteren Übersichtlichkeit kann man ein paar Sachen weglassen:

xlAnw.Sheets(1).Columns("I:P").Replace "", "no", xlWhole

(Bei diesem speziellen Fall könnte man xlWhole IHMO auch weglassen)

Aus Excel heraus funktioniert der Befehl. Aber in Access gibt er mir
ne Fehlermeldung:

Laufzeitfehler "9": Index außerhalb des gültigen Bereichs

Mir ist nicht ganz klar welchen Index er meint. Wenn ich jede Spalte


Gar keinen. Der Haken liegt bei den Konstanten xlWhole, xlByRows die
Excel sehr wohl kennt, aber Access nicht.

Und weil Du kein "Option Explicit" gesetzt hast, bekommst Du auch
keine Meldung das es diese nicht kennt. Ergo: Bei sowas immer setzen!

Geht in den Excel-VBA-Editor, drück F2 und gibt in das Suchfeld
xlWhole ein, dann siehst unten u.a. die Zeile
Const xlWhole = 1

Die kopierst Du in Deinen Access-Code, dann gehts.

BTW, ich gehe natürlich davon aus das xlAnw auf ein WorkBook zeigt?
(Wenn nicht müsste es IMO einen anderen Fehler geben.)

Andreas.

Ähnliche fragen