| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Daten aus Excel einlesen und Expression zuweisen (4235 mal gelesen)
|
Matthias666 Mitglied MB Student
Beiträge: 24 Registriert: 22.06.2011
|
erstellt am: 14. Sep. 2011 10:42 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich arbeite mit Journals und hab schon wieder eine Frage: wie kann ich einer Variable in meinem Code einen Wert aus einer Excell Tabelle zuweisen? Ich habe es mit: Dim tgurt as Integer = ug_cell_read("C:\Users\wozma07\Documents\Mappe2.xlsx","A1") versucht aber es erscheint die Fehlermeldung: der Name ug_cell_read wurde nicht deklariert? Auf die Funktion ug_cell_read bin ich über die Suche im Forum gestoßen. Vielleicht weiß jemand was dazu sollte für echte Programmierer eigentlich kein Problem sein für mich aber sehr LG Matthias
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 14. Sep. 2011 12:43 <-- editieren / zitieren --> Unities abgeben: Nur für Matthias666
|
Matthias666 Mitglied MB Student
Beiträge: 24 Registriert: 22.06.2011
|
erstellt am: 15. Sep. 2011 09:27 <-- editieren / zitieren --> Unities abgeben:
Danke Michael, ich habe es doch weiterhin mit einem alten Codeschnippsel von Dir versucht und es hat mittlerweile geklappt. Also falls noch jemand mal so ein Problem hat einfach unter Tools->Expression einen "zuveraendernderAusdruck" Ausdruck definieren und aus Zelle A1 einen Wert zuweisen. LG Matthias ' NX 7.5.4.4 ' Journal created by wozma07 on Wed Sep 14 10:24:10 2011 Mitteleuropäische Sommerzeit ' Option Strict Off Imports System Imports NXOpen Module NXJournal Sub Main Dim theSession As Session = Session.GetSession() Dim workPart As Part = theSession.Parts.Work Dim displayPart As Part = theSession.Parts.Display Dim xls_name as String = "C:\Users\wozma07\Documents\Mappe2.xlsx" Dim tab_name as String = "Tabelle1" Dim cell_name as String = "A1"
' ---------------------------------------------- ' Menu: Tools->Expression... ' ---------------------------------------------- Dim markId1 As Session.UndoMarkId markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Expression")
Dim expression1 As Expression = CType(workPart.Expressions.FindObject("zuveraendernderAusdruck"), Expression) Dim unit1 As Unit = CType(workPart.UnitCollection.FindObject("MilliMeter"), Unit) workPart.Expressions.EditWithUnits(expression1, unit1, "ug_cell_read(""" & xls_name & """, """ & tab_name & "!" & cell_name & """)") Dim nErrs1 As Integer nErrs1 = theSession.UpdateManager.DoUpdate(markId1)
End Sub End Module
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Matthias666 Mitglied MB Student
Beiträge: 24 Registriert: 22.06.2011
|
erstellt am: 31. Okt. 2011 11:39 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bins nochmal. Bezogen auf obiges Problem kann ich jetzt expressions aus dem Excel zuweisen. Ich sollte aber noch einen Wert aus dem Excel haben welchen ich nicht als Expression zuweisen will sonder anhand dessen entschieden wird ober das Skript weiterläuft oder abgebrochen wird (bzw. dieses eine Teil übersprungen wird). Mit ug_cell_read klappt es nicht. Anschließend habe ich es mit einem DDE Request versucht klappt aber zumindest bei mir auch nicht (siege Codeschnippsel im Anhang) Wird DDE generell nicht unterstützt oder fehlt da noch eine Bibliothek o.ä.? Wie könnte ich sonst noch auf Excel zugreifen? Wie kann ich eingentlich die Hilfe für NXOpen ansehen? Unter Automation -->NXOpen Programmers guide -->Open for .net kann ich ein File downloaden, öffnen aber es enthält nur Überschriften keinen Inhalt? Woher kann ich die Hilfe sonst noch bekommen? vielen Dank für schnelle Hilfe! LG Matthias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasZwatz Ehrenmitglied V.I.P. h.c. cadadmin
Beiträge: 5397 Registriert: 19.05.2000 (10-2022) --------------------------------------------- [stable] NX2007(2027.3701) + TC13.3.0.3, RAC +AWC6.0.3 SingleSite 4Tier, DocMgt, Client4Office, MRO, ReqMgt, SchedMgt, T4S, TcVis Mockup, TcSSO, Multi-CAD BCT-Inspector Neutral v22R2 --------------------------------------------- [testing] NX2007(2027.3701) + TC13.3.0.3, RAC +AWC6.0.3 BCT-Inspector Neutral v22R2 @M7720 Win10 (1909)
|
erstellt am: 31. Okt. 2011 14:30 <-- editieren / zitieren --> Unities abgeben: Nur für Matthias666
Zitat: Original erstellt von Matthias666: ...Wie kann ich eingentlich die Hilfe für NXOpen ansehen? Unter Automation -->NXOpen Programmers guide -->Open for .net kann ich ein File downloaden, öffnen aber es enthält nur Überschriften keinen Inhalt? ....
Du sprichst von net_ref.chm ? Wenn du da nicht alles siehst, ist das IMHO eine (lokale) Windows- Einstellungssache. Die NX Hilfe beschreibt das aber eh genau .... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasZwatz Ehrenmitglied V.I.P. h.c. cadadmin
Beiträge: 5397 Registriert: 19.05.2000
|
erstellt am: 31. Okt. 2011 14:34 <-- editieren / zitieren --> Unities abgeben: Nur für Matthias666
Zitat: Original erstellt von Matthias666: .... Ich sollte aber noch einen Wert aus dem Excel haben welchen ich nicht als Expression zuweisen will sonder anhand dessen entschieden wird ober das Skript weiterläuft oder abgebrochen wird (bzw. dieses eine Teil übersprungen wird). Mit ug_cell_read klappt es nicht. ....
Was geht denn nicht ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Matthias666 Mitglied MB Student
Beiträge: 24 Registriert: 22.06.2011
|
erstellt am: 02. Nov. 2011 08:17 <-- editieren / zitieren --> Unities abgeben:
Hallo, ja von dieser Datei rede ich. Ich kann Sie nach dem Download zwar öffnen Sie scheint aber außer Überschriften keinen Inhalt zu haben :-( Siehe auch anbei den Screenshot im Word. Wenn es sich nur um eine Einstellungssache handelt werd ich Google und den Admin wohl mal konsultieren müssen. Danke! Gruß Matthias Nachtrag: Möglicherweise liegts am Firefox mein Admin konnte es mit Opera öffnen mit dem Firefox aber nicht... [Diese Nachricht wurde von Matthias666 am 02. Nov. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 02. Nov. 2011 11:35 <-- editieren / zitieren --> Unities abgeben: Nur für Matthias666
Hallo Matthias, die net-ref kannst Du direkt öffnen, dazu braucht's keinen Browser. Such' sie mal mit dem Explorer. Müsste für NX 7.5 eine Größe von ~71 MB haben. Neben ug_cell_read gibt's m.W. noch ein ug_excel_read. Bei beiden dürfte der Datentyp der ausgelesenen Zelle entscheidend für das Ergebnis sein. Ansonsten hilft das oben schon genannte Excel- Beispiel in den VS- Samples. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Matthias666 Mitglied MB Student
Beiträge: 24 Registriert: 22.06.2011
|
erstellt am: 02. Nov. 2011 11:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, ja das direkte öffnen führt zum gleichen Ergebnis. Ich sehe alle Überschriften aber sie enthalten keinen Inhalt... ev. bin ich einfach zu blöd dafür. Mhm mit ug_cell_read hat es nicht geklappt insofern hät ich gerne mal in die Doku geblickt (das hätte wohl schon öfters geholfen). Ich möchte lediglich einen der vielen Excel Werte aus welchen mein Teil verändert und neu abgespeichert wird für eine If Entscheidung auslesen. Danke für den Tip mit ug_excel_read und dem Datentyp werde das wohl versuchen! LG Matthias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nurbs Mitglied
Beiträge: 29 Registriert: 26.05.2004
|
erstellt am: 04. Nov. 2011 23:20 <-- editieren / zitieren --> Unities abgeben: Nur für Matthias666
|
Matthias666 Mitglied MB Student
Beiträge: 24 Registriert: 22.06.2011
|
erstellt am: 14. Nov. 2011 08:48 <-- editieren / zitieren --> Unities abgeben:
Hallo, ja das mit dem lokalen Speichern und/oder direktes Öffnen führt zu obigem Ergebnis. Ich kann die Datei öffnen aber sie enthält nur Überschriften. Laut NX Hilfe sollte ich die Datei ins nxopen_net_ref Verzeichnis kopieren aber das konnte ich noch nicht finden. Danke soweit! LG Matthias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Matthias666 Mitglied MB Student
Beiträge: 24 Registriert: 22.06.2011
|
erstellt am: 14. Nov. 2011 09:36 <-- editieren / zitieren --> Unities abgeben:
Juhu jetzt gehts. Also auch der Admin (ein anderer) konnte die Datei nicht öffnen. Wir verwenden Windows 7 64bit. Wir haben die Datei dann auf einem Stick gespeichert und am Rechner der Sekretärin (Windows XP 32bit) erfolgreich geöffnet. Die selbe Datei konnte dann vom Stick ohne verändern auch auf unseren Rechnern geöffnet werden.... tja klingt komisch war aber so (auch der Admin kann es sich nicht erklären) LG Matthias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Matthias666 Mitglied MB Student
Beiträge: 24 Registriert: 22.06.2011
|
erstellt am: 15. Nov. 2011 16:23 <-- editieren / zitieren --> Unities abgeben:
Ich kann zwar mittlerweile die Dokumentation öffnen aber die ist nicht so nützlich ich finde z.B. nicht mal Befehle die ich bereits verwendet habe...(ug_cell_read z.B.) Ich versuche (ich muss!) immer noch einen einzelnen Wert aus Excel auslesen und diesen dann weiterverarbeiten (If Entscheidung usw...). Hat niemand ein Codeschnippsel wie ich an einen einzel Wert kommen kann? Ich versuchte es (in starker Anlehnung an ein altes Beispiel von mseufert) folgendermaßen: ' Option Strict Off Imports System Imports NXOpen Module NXJournal Sub Main Dim theSession As Session = Session.GetSession() Dim workPart As Part = theSession.Parts.Work Dim expr_name As String = "read_cell_value" Dim xls_name As String = "C:\Users\wozma07\Documents\Uebungen\Versuche\Testteil3\Mappe1.xlsx" Dim tab_name As String = "Tabelle1" Dim cell_name As String = "A1"
Dim expr_str As String = expr_name & " = ug_cell_read(""" &xls_name & """,""" &tab_name & "!" & cell_name &""")" Dim expr_object As Expression = workPart.Expressions.CreateExpression("String" , expr_str) Dim part_name As String = expr_object.StringValue workPart.Expressions.Delete(expr_object) Dim Zahl As Integer = CStr(part_name) MsgBox(Zahl) End Sub End Module aber das funktioniert überhaupt nicht. Ich konnte zumindest einmal ein Wort auslesen aber seit diesem einen Versuch erscheint immer The specified Expression Variable already exists. Das mit CStr() ist nur weil ich anschließend eine Zahl auslesen wollte aber es funktioniert nicht. Weiß irgend jemand was? Ich habe eine author Lizenz aber kann keine kompilierbaren Programme schreiben (mit 64bit Version funktioniert das nicht). Die Visual Studio (VS Express 2010) hat mich auch nicht weitergebracht. DDE Requests werden wohl auch nicht unterstützt das habe ich auch schon versucht... LG Matthias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Ingenieur TGA / HKLS (m/w/d) | Die besten Köpfe für die unterschiedlichsten Aufgaben zu finden sowie Menschen und Technologien zu verbinden, und zwar täglich aufs Neue - dafür schätzen unsere Kunden FERCHAU. Unterstütze uns: als ambitionierte:r Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden im Anlagenbau und überzeugen täglich mit fundierter Expertise und fachlichem Know-how.... | Anzeige ansehen | Projektmanagement |
|
Matthias666 Mitglied MB Student
Beiträge: 24 Registriert: 22.06.2011
|
erstellt am: 16. Nov. 2011 15:14 <-- editieren / zitieren --> Unities abgeben:
Hat sich erledigt, LG Matthias Option Strict Off Imports System Imports NXOpen Module NXJournal Sub Main Dim theSession As Session = Session.GetSession() Dim workPart As Part = theSession.Parts.Work Dim expr_name As String = "Zahl" Dim xls_name As String = "C:\Users\wozma07\Documents\Uebungen\Versuche\Testteil3\Mappe1.xlsx" Dim tab_name As String = "Tabelle1" Dim cell_name As String = "A1"
Dim expr_str As String = expr_name & " = ug_cell_read(""" &xls_name & """,""" &tab_name & "!" & cell_name &""")" Dim expr_object As Expression = workPart.Expressions.CreateExpression("Integer" , expr_str) Dim zahlenwert As Integer = expr_object.IntegerValue workPart.Expressions.Delete(expr_object) MsgBox(zahlenwert)
End Sub End Module Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |