Autor
|
Thema: Vor CATIA Makro aus in Excel-Datei nach Namen suchen (2297 mal gelesen)
|
Dadidldi Mitglied
Beiträge: 22 Registriert: 18.03.2009 CATIA R19 CatScript
|
erstellt am: 27. Mrz. 2009 14:47 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich müsste in einem CATIA Makro nach einem bestimmten Feld in einer exisierenden Excel-Datei suchen. Und anschließend die Koordinaten dieses Feldes ausgeben. Ich habe leider keinen Befehl gefunden, der das macht. Hintergrund. Mein Makro holt sich Teilenummern aus dem aktiven Part. Diesen sollen dann Materialstärken zugeordnet werden. Welches Teil welche Wandstärke hat, steht im besagten Excel-Dokument. Also will ich im Exceldokument nach der Teilenummer suchen und die Materialstärke (die 2 Felder daneben steht) auslesen und diese weiterverwenden. Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hartmut44 Mitglied
Beiträge: 9 Registriert: 23.07.2007
|
erstellt am: 27. Mrz. 2009 15:00 <-- editieren / zitieren --> Unities abgeben: Nur für Dadidldi
|
Dadidldi Mitglied
Beiträge: 22 Registriert: 18.03.2009 CATIA R19 CatScript
|
erstellt am: 27. Mrz. 2009 15:04 <-- editieren / zitieren --> Unities abgeben:
Hallo Hartmut, das bringt mir leider nix. Ich weiß nicht welches Feld das Richtige ist. Den Inhalt des Feldes (also die Teilenummer) habe ich bereits.Ich will nun wissen in welchem Feld des Excel-Sheets genau diese Teilenummer steht. MfG Dadi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mkna Mitglied Konstrukteur
Beiträge: 137 Registriert: 18.03.2005
|
erstellt am: 27. Mrz. 2009 15:20 <-- editieren / zitieren --> Unities abgeben: Nur für Dadidldi
Hallo Mit folgendem Script könnte es funktionieren: Sub CATMain() Dim Excel As Object ' Versuchen ein evtl. bereits geöffnetes Excel zu aktivieren ' Sollte kein Excel geöffnet sein erzeugt dieser befehl einen Fehler ' deshalb mit On Error Resume Next im falle eines Fehlers mit dem nächsten Befehl fortfahren On Error Resume Next Set Excel = GetObject(, "Excel.Application") ' Wenn der vorhergehene Befehl einen Fehler erzeugt hat (err.Number <> 0) Excel starten If Err.Number <> 0 Then Set Excel = CreateObject("Excel.Application") Excel.Visible = True 'Excel im Hintergrund End If Excel.Workbooks.Open "C:\Temp\test.xls" Set Tabelle1 = Excel.ActiveWorkbook.Sheets(1) A = Excel.Application.WorksheetFunction.VLookup("A", Tabelle1.Range(Tabelle1.Cells(1, 1), Tabelle1.Cells(3, 2)), 2) MsgBox (A) End Sub Die Funktion Vlookup heißt im Deutschen Sverweis. Hierbei wird in der ersten Spalte einer Matrix ein Wert gesucht ( hier "A") und dann der Wert in der zweiten Spalte herausgegeben.
Die Anweisung "Tabelle1.Range(Tabelle1.Cells(1, 1), Tabelle1.Cells(3, 2))" beschreibt die Größe und Position der Matrix in der Excel tabelle. Hoffe die Info hilft Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dadidldi Mitglied
Beiträge: 22 Registriert: 18.03.2009 CATIA R19 CatScript
|
erstellt am: 30. Mrz. 2009 14:42 <-- editieren / zitieren --> Unities abgeben:
Hi mkna, vielen Dank, hat funktioniert. Hatte anfangs Probleme weil mir immer ein Wert ausgegeben wurde der wo ganz wo anders im Excel war. Funktioniert hats dann als ich die Funktion VLookup noch mit "False" ergänzt habe. Also: A = Excel.Application.WorksheetFunction.VLookup("A", Tabelle1.Range(Tabelle1.Cells(1, 1), Tabelle1.Cells(3, 2)), 2, false) Dadurch sucht er immer nach der GENAUEN Zeichenfolge. Auch wenn ich nicht wirklich verstehe warum Excel hier das nicht von allein macht... Grüße Dadi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dadidldi Mitglied
Beiträge: 22 Registriert: 18.03.2009 CATIA R19 CatScript
|
erstellt am: 02. Apr. 2009 09:54 <-- editieren / zitieren --> Unities abgeben:
Hi mkna, ich hab dazu jetzt doch noch mal ne Frage weil ich nicht weiterkomme. Mein Code sieht nun so aus: ...
Code: Dim ID1,ID2 As Short ID1 = SplitTeile(0) ID2 = SplitTeile(1) Dim A, B As String A = Excel.Application.WorksheetFunction.VLookup(ID1, Tabelle1.Range(Tabelle1.Cells(6, 1), Tabelle1.Cells(104, 3)), 2, false) B = Excel.Application.WorksheetFunction.VLookup(ID2, Tabelle1.Range(Tabelle1.Cells(6, 1), Tabelle1.Cells(104, 3)), 2, false) MsgBox(A) MsgBox(B)
Meine Teilenamen kommen aus einem Array, den ich auslese und die Variablen ID1 und ID2 speichere. Anschließend suche ich in der Tabelle nach diesen Werten (fett geschrieben). Dabei wird mir nun folgender Fehler ausgegeben: Die VLookup Eigenschaft des WorksheetFunction-Objektes kann nicht zugeordnet werden. Wenn ich statt der Variable ID1 die Nummer (intressanterweise zwingend ohne Anführungszeichen) eingebe, funktioniert es.Ich habe schon versucht die Variablen ID1 und ID2 als Short, Long, Double, String oder CATBstr zu deklarieren aber immer mit dem Selben Ergebnis. Auch das Ändern der Formatierung der Spalte in Excel auf ´Zahl´ oder ´Text´ macht keinen Unterschied. Weiß da zufällig eine ein Lösung?? Grüße Dadi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|