Hallo
Ich habe ein Makro erstellt, das die in einer Excel-Tabelle vorhandenen Werte kopiert und in die persönlichen Requisiten eines Raums einfügt. Diese Werte werden dann in den Gleichungen verwendet.
Ich habe ein Problem mit dem Format des Dezimaltrennzeichens: Das in Excel verwendete ist ein Komma "," ", während SW nach einem Punkt "" fragt.
Hier ist der Codeausschnitt, der die Kopie erstellt:
Dim numeroligne As Integer
numeroligne = 1 'Numéro de départ
Do While Not IsEmpty(Cells(numeroligne, 1))
retval = swModel.DeleteCustomInfo(Cells(numeroligne, 1))
retval = swModel.AddCustomInfo2(Cells(numeroligne, 1), swCustomInfoText, Cells(numeroligne, 2))
numeroligne = numeroligne + 1 'Le numéro est augmenté de 1 à chaque boucle
Loop
Ich habe verschiedene Dinge ausprobiert, ohne Erfolg:
- Ersetze die Variable "swCustomInfoText" durch "swCustomInfoNumber" oder "swCustomInfoDouble": der Typ der Eigenschaft ändert sich, aber ich habe immer noch ein Komma als Trennzeichen
-Wechseln Sie zu einem Trennzeichen im Format "." in Excel": Es ändert nur das Aussehen, aber der abgerufene und in den Volumenkörper eingefügte Wert hat immer noch ein Komma ","
-Verwenden Sie standardmäßig ein Dezimalzeichen "," in SW (Option System / Allgemein): In meiner Gleichung werden Zahlen mit einem Kommatrennzeichen nicht erkannt
Hilfe!
Hallo;
Hier ist ein Codeausschnitt, um die Einstellungen in Excel zu überprüfen:
ParamSeparators = Application.International(xlDecimalSeparator)
Dann ist es einfach, eine Schleife in exel zu machen, um die Zeichen "" durch "." zu ersetzen oder umgekehrt.
If ParamSeparators = "," then
for each cells in range (La zone excel contenant les valeurs à modifier)...
...Replace(Texte de la Cellule, ",", ".")
....
end if
Und das alles, ohne die Einstellungen von Solidworks oder Excel ändern zu müssen.
Herzliche Grüße.
2 „Gefällt mir“
Wird der Wert in der Excel-Datei geändert? Es ist in der Tat eine Lösung. Aber wenn ich schon dabei bin, bitte ich darum, "," systematisch durch "." zu ersetzen, ohne die Frage zu stellen "If ParamSeparators = "," "
Ich bin überrascht, dass es keine "natürlichere" Lösung gibt
Hallo;
Ich verwende diese Art von Steuerelement, wenn ich Makros für mehrere PCs freigebe, sodass ich die Einstellungen der einzelnen Benutzer kompensiere.
Ich mache das Gleiche auch, um zu überprüfen, ob Office in 32 oder 64 Bit ist.
Es ist eine Art Eingeständnis des Scheiterns meiner Versuche der "Standardisierung" und der Standardisierung unserer Computerausrüstung...
Wenn Sie der einzige Benutzer sind, ist diese Art der Steuerung in der Tat überflüssig...
Herzliche Grüße.
1 „Gefällt mir“
Wenn ich darüber nachdenke und wenn es möglich ist, würde ich es vorziehen, das Komma durch einen Punkt IN SW zu ersetzen. Es ermöglicht mir, mit Werten wie Zahlen in Excel zu arbeiten, und es ist für mich viel bequemer, als sie im Textformat zu haben. Im Moment bin ich mit dem Ersatz in Excel zufrieden, aber wenn jemand etwas Besseres hat, bin ich sehr glücklich.
Wir müssen so etwas tun wie
Auflisten von Eigenschaften
Abrufen des Werts jeder Eigenschaft als Zeichenfolge
Suchen/Ersetzen in der Zeichenkette
Kopieren Sie die Zeichenfolge in die richtige Eigenschaft
Es kommt mir immer noch so vor, als wäre es eine Gasfabrik...
Indem Sie Ihren Code und den von kombinieren, @Maclane dies tun sollte, setzen Sie einfach die Ersetzung von , durch die. wo Sie Ihren Wert erhalten (eventuell müssen Sie vor dem Testen in eine Zeichenkette umwandeln)
Sehen Sie sich den Wert von Debug.print in Ihrem Ausführungsfenster an, und passen Sie an, ob Sie ihn in eine Zeichenfolge umwandeln müssen oder nicht. Und falls erforderlich (numerisch und nicht-numerisch, wenden Sie nur an, wenn der Wert numerisch ist.
Wenn Ihr Wert immer noch numerisch ist, müssen Sie diesen Test nicht durchführen.
Dim numeroligne As Integer
numeroligne = 1 'Numéro de départ
Do While Not IsEmpty(Cells(numeroligne, 1))
retval = swModel.DeleteCustomInfo(Cells(numeroligne, 1))
Debug.print Replace(Cells(numeroligne, 2),",","."))
retval = swModel.AddCustomInfo2(Cells(numeroligne, 1), swCustomInfoText, Replace(Cells(numeroligne, 2),",","."))
numeroligne = numeroligne + 1 'Le numéro est augmenté de 1 à chaque boucle
Loop
Danke SbaDenis! Das werde ich etwas später testen. Und dass ich ein wenig suche, um zu verstehen, was Debuggen ist. Drucken.
Auf jeden Fall DANKE, dass Sie mich dazu gedrängt haben, VBA-Code zu lernen. Es ist anfangs abstoßend, aber je mehr ich es tue, desto mehr gefällt es mir. Ich belästige Sie mit vielen Fragen, aber ich habe das Gefühl, dass ich Fortschritte mache. Vorbei sind die Zeiten, in denen ich versucht habe, Chimären aus Stücken zu machen, die ich hier und da gefunden habe;)
Hallo
In Excel ist es durchaus möglich, einen Punkt durch ein Komma zu ersetzen (oder umgekehrt).
Wir hatten Probleme mit der Konfiguration, je nachdem, ob die Workstation in den USA oder FR konfiguriert war.
Zum Beispiel so:
=ERSATZ(A3; ","; ".")
Hallo
Zu Ihrer Information, ich konnte das "," durch "." in Excel nicht ändern. Die Methode sbadenis funktionierte auch nicht (debug.print greift in die Excel-Zelle ein oder in den gespeicherten Textstring?)
Ich habe schließlich die Lösung gefunden, indem ich die Optionen in Windows (regionale Einstellungen) geändert habe.
Für mich ist das nicht sehr zufriedenstellend, denn wenn ich mein Excel-Makro auf einem anderen Computer verwende, muss ich überprüfen, ob dieser Parameter korrekt eingestellt ist.
Im Idealfall können Sie in der solidworks-Eigenschaft überschreiben
Hallo
In Excel müssen Sie eine Spalte für die Eigenschaft erstellen, die Sie steuern möchten.
In dieser Spalte müssen Sie die Formel =SUBSTITUTE(A3; ","; ".") oder A3 ist die Zelle mit dem numerischen Wert, den Sie in Ihre Eigenschaft eingeben möchten. (Die Formel hier ersetzt das Komma durch den Punkt, ich muss =SUBSTITUTE(A3; "."; ","), um das Gegenteil zu tun). Sie müssen also A3 ersetzen, um die richtige Zelle auszuwählen.
In PJ ein SW2020-Teil mit einem Excel-Teil, der diese Funktion für die Eigenschaft 'Beobachtung' verwendet: Die Dimension von 2,5 (mit Komma) in SW wird in der Eigenschaft zu 2,5 (mit Punkt)
08hu_test.sldprt