Suchen in Excel

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Suchen in Excel

Beitrag von Werner_Bayern »

Servus,

wer kennt sich mit dem Syntax der find-Methode bei Excel aus? Mein Code funktioniert nicht:

Code: Alles auswählen

      oExcel:Workbooks:Open(aDateien[i], 0, .t.)    // öffnen, aber keine Updatelinks und readOnly
      for i1 := 1 to oExcel:Workbooks:Count
         oExcel:Workbooks(i1):activate
         if oExcel:find:execute(cText, 1, 1, -1, -1)
            ... gefunden
            exit
         endif
      next i1
      oExcel:Workbooks(aDateien[i]):close(.f.)
Das erzeugt ein: "Ungültige Anzahl von Argumenten. Bei Ausführung von: find"
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Suchen in Excel

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:wer kennt sich mit dem Syntax der find-Methode bei Excel aus?
...
Das erzeugt ein: "Ungültige Anzahl von Argumenten. Bei Ausführung von: find"
ich "denke" das du einen String brauchst. Siehe auch RESTRICT

Code: Alles auswählen

   cFilter := "[CreationTime] >='" + cStart + "' and [CreationTime] <= '" + cEnd + "'"
   #IFDEF DEFDAYFIND
         currentAppointment := ::oAppointment:Find( cFilter )
   #ELSE
         currentAppointment := ::oAppointment:Restrict( cFilter )
   #ENDIF
gruss by OHR
Jimmy
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Suchen in Excel

Beitrag von Rolf Ramacher »

wie wäre es so:

Code: Alles auswählen

   oExcel := CreateObject("Excel.Application")
   IF Empty( oExcel )
    MsgBox( "Excel ist nicht installiert" )
    RETURN Nil
   ENDIF

   oExcel:DisplayAlerts := .F.
   oExcel:visible       := .f.

	oBook := oExcel:Workbooks:Open(cFile)
	oSheetDat := oBook:Sheets(cWork)
	oSheetDat:Select()

	oRange:=oSheetDat:Range(cVonBis)
	oRange:select()
	aExcelWerte:=oRange:Value()
dann aExcelwerte durchlaufen oder mit Ascan durchsuchen
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Suchen in Excel

Beitrag von Werner_Bayern »

Servus Jimmy,

so gehts aber auch nicht:

Code: Alles auswählen

cFilter := "'" + cText + ", 1, 1, -1, -1'"
if oExcel:find:Execute(cFilter)
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Suchen in Excel

Beitrag von Werner_Bayern »

Rolf Ramacher hat geschrieben:wie wäre es so:

dann aExcelwerte durchlaufen oder mit Ascan durchsuchen
Danke, aber mit find müsste es doch auch funktionieren, unter Word hab ich es schon hinbekommen, ist rasend schnell.
Mit Deiner Methode schaufle ich u. U. riesen Datenmengen von Excel in Xbase, das spare ich mir mit der Find-Methode.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Suchen in Excel

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:so gehts aber auch nicht:

Code: Alles auswählen

cFilter := "'" + cText + ", 1, 1, -1, -1'"
em, äh ... das ergibt aber auch keine "Bedingung", oder ?
ansonsten mal den VBA Macro Editor einschalten und es manuell versuchen und dir dann das Marco ansehen.
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Suchen in Excel

Beitrag von Werner_Bayern »

Servus Jimmy,

der vba-Code eines Makros hilft mir nicht wirklich weiter, ich möchte das aus der Excel-Hilfe verwenden:

Code: Alles auswählen

Objekt.Find(Ziel, Startzeile, Startspalte, Endzeile, Endspalte [, GanzesWort] [, Groß/Klein] [, Mustersuche]) As Boolean
Ein Makro sieht aber so aus:

Code: Alles auswählen

Cells.Find(What:="test", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
Das geht nicht über ActiveX?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Suchen in Excel

Beitrag von AUGE_OHR »

hi,
Werner_Bayern hat geschrieben:

Code: Alles auswählen

Objekt.Find(Ziel, Startzeile, Startspalte, Endzeile, Endspalte [, GanzesWort] [, Groß/Klein] [, Mustersuche]) As Boolean
Ein Makro sieht aber so aus:

Code: Alles auswählen

Cells.Find(What:="test", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
Das geht nicht über ActiveX?
ok ich habe es noch mal verglichen und der FIND() / RESTRICT() Befehl ist bei Outlook anderes als bei Excel.
die Parameter sind laut Hilfe doch konstanten, also genau das was dir das Macro gibt.

wenn du nun die englische Hilfe nimmst und die Syntax

Code: Alles auswählen

.Find(What, After, FindLookIn, FindLookAt, SearchOrder, SearchDirection, MatchCase, MatchByte)
mit den Konstanten deines Macro bestückst solltest du zu einem Ergebniss kommen.
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Suchen in Excel

Beitrag von Werner_Bayern »

AUGE_OHR hat geschrieben:hi,
Werner_Bayern hat geschrieben:

Code: Alles auswählen

Objekt.Find(Ziel, Startzeile, Startspalte, Endzeile, Endspalte [, GanzesWort] [, Groß/Klein] [, Mustersuche]) As Boolean
wenn du nun die englische Hilfe nimmst und die Syntax

Code: Alles auswählen

.Find(What, After, FindLookIn, FindLookAt, SearchOrder, SearchDirection, MatchCase, MatchByte)
mit den Konstanten deines Macro bestückst solltest du zu einem Ergebniss kommen.
Was verwende ich aber für After, FindLookin etc.??? Ein ActiveCell habe ich doch über ActiveX nicht, hab ich irgendwo gelesen... Ausserdem was ist mit obiger Methode? Ich bräuchte wirklich nur ein boolean als Rückgabe.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Suchen in Excel

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:

Code: Alles auswählen

.Find(What, After, FindLookIn, FindLookAt, SearchOrder, SearchDirection, MatchCase, MatchByte)
Was verwende ich aber für After, FindLookin etc.???
das steht in meinem Help File
After Optionaler Variant-Wert. Gibt eine einzelne Zelle an, hinter der die Suche beginnt. Dies entspricht der Position der aktiven Zelle, wenn eine Suche von der Benutzeroberfläche aus durchgeführt wird. Beachten Sie, dass die Suche nach dieser Zelle beginnt; die angegebene Zelle wird erst durchsucht, wenn die letzte Zelle erreicht ist und die Suche vorn fortgesetzt wird. Wenn Sie dieses Argument nicht festlegen, beginnt die Suche nach der Zelle in der oberen linken Ecke des Bereichs.

FindLookIn Optionaler XlFindLookIn-Wert. Gibt an, ob die Formeln oder die angezeigten Werte durchsucht werden sollen.

XlFindLookIn kann eine der folgenden XlFindLookIn-Konstanten sein:
xlFormulas
xlValues

FindLookAt Optionaler XlFindLookAt-Wert. Setzen Sie dieses Argument auf xlWhole, um eine Übereinstimmung des gesamten Inhalts der Zelle mit dem Inhalt des What-Arguments zu erzwingen.

XlFindLookAt kann eine der folgenden XlFindLookAt-Konstanten sein:
xlPart
xlWhole

SearchOrder Optionaler XlSearchOrder-Wert. Gibt an, ob nach Spalten oder nach Zeilen gesucht werden soll.

XlSearchOrder kann eine der folgenden XlSearchOrder-Konstanten sein:
xlByColumns
xlByRows

SearchDirection Optionaler XlSearchDirection-Wert. Gibt die Suchrichtung an.

XlSearchDirection kann eine der folgenden XlSearchDirection-Konstanten sein:
xlNext
xlPrevious

MatchCase Optionaler Boolescher Wert. True, wenn die Suchoperation Groß-/Kleinschreibung beachten soll. Der Standardwert ist False.

MatchByte Optionaler Variant-Wert. Wird nur verwendet, wenn die Unterstützung für Double-Byte-Sprachen ausgewählt oder installiert wurde. True, wenn Double-Byte-Zeichen ausschließlich mit Double-Byte-Zeichen übereinstimmen sollen. False, wenn Double-Byte-Zeichen mit ihren Single-Byte-Entsprechungen übereinstimmen dürfen.

Werner_Bayern hat geschrieben:Ein ActiveCell habe ich doch über ActiveX nicht, hab ich irgendwo gelesen...
siehe mal unter RANGE nach ActiveCell. das ist "gewöhnlich" die "Cell" oder "Bereich" wo dein Cursor steht.
Werner_Bayern hat geschrieben:Ausserdem was ist mit obiger Methode? Ich bräuchte wirklich nur ein boolean als Rückgabe.
keine Ahnung woher du das hast aber bei mir steht :
Sucht nach spezifischen Informationen innerhalb eines angegebenen Bereichs und gibt ein Range-Objekt zurück, das die erste Zelle darstellt, in der sich die Informationen befinden.
Gibt Nothing zurück, wenn keine Übereinstimmungen gefunden werden.
gruss by OHR
Jimmy
Antworten