Kropka i przecinki - makro prop od .xls

Witam

Stworzyłem makro, które kopiuje wartości obecne w tabeli Excela i wkleja je do osobistych rekwizytów pokoju. Wartości te są następnie używane w równaniach.

Mam problem z formatem separatora dziesiętnego: ten używany w Excelu to przecinek ",", podczas gdy SW prosi o kropkę "."

Oto fragment kodu, który tworzy kopię:

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

Próbowałem różnych rzeczy, bez powodzenia:

- zamień zmienną "swCustomInfoText" na "swCustomInfoNumber" lub "swCustomInfoDouble": zmienia się typ właściwości, ale nadal mam przecinek jako separator

-Przełącz na separator w formacie "." w Excelu": zmienia tylko wygląd, ale wartość pobrana i wklejona w ciągu ciągłym nadal ma przecinek ","

-użyj symbolu kropki dziesiętnej "," domyślnie w SW (opcja systemowa / ogólna): w moim równaniu liczby z separatorem przecinków nie są rozpoznawane

Pomoc!

 

Witam;

Oto fragment kodu, aby sprawdzić ustawienia w programie Excel:
 

ParamSeparators = Application.International(xlDecimalSeparator)

Wtedy łatwo jest zrobić pętlę w exel, aby zamienić "" carracters na "." lub odwrotnie.
 

If ParamSeparators = "," then
for each cells in range (La zone excel contenant les valeurs à modifier)...
...Replace(Texte de la Cellule, ",", ".")
....
end if

Wszystko to bez konieczności zmiany ustawień Solidworks lub Excel.

Pozdrowienia.

2 polubienia

Czy zmieni to wartość w pliku Excela? To rzeczywiście jest rozwiązanie. Ale skoro już przy tym jestem, proszę o systematyczne zastępowanie "," przez ".", bez zadawania pytania "If ParamSeparators = "," "

Dziwię się, że nie ma bardziej "naturalnego" rozwiązania

Witam;
Używam tego typu kontrolki, gdy udostępniam makra między kilkoma komputerami, aby skompensować ustawienia każdego użytkownika.
Robię też to samo, aby sprawdzić, czy pakiet Office jest w wersji 32- czy 64-bitowej.
Jest to swego rodzaju przyznanie się do porażki moich prób "standaryzacji" i standaryzacji naszego sprzętu komputerowego...
Jeśli jesteś jedynym użytkownikiem, ten rodzaj kontroli jest rzeczywiście zbędny...

Pozdrowienia.

1 polubienie

Po namyśle i jeśli to możliwe, wolałbym zastąpić przecinek kropką W SW . pozwala mi pracować z wartościami, takimi jak liczby w programie Excel, i jest to dla mnie o wiele wygodniejsze niż posiadanie ich w formacie tekstowym. Na razie będę zadowolony z wymiany w Excelu, ale jeśli ktoś będzie miał lepszy, będę bardzo zadowolony.

Musimy zrobić coś takiego jak

Właściwości listy

Pobieranie wartości każdej właściwości jako ciągu

Wyszukaj/zamień w ciągu

Skopiuj ciąg do poprawnej właściwości

Nadal wydaje mi się, że to fabryka gazu...

Łącząc swój kod i kod @Maclane to powinno to zrobić, po prostu wpisz zamianę , przez. skąd bierzesz swoją wartość (w końcu może być konieczne przekształcenie w ciąg znaków przed testowaniem)

Spójrz na wartość Debug.print w oknie wykonywania i dostosuj, czy musisz przekształcić ją w ciąg, czy nie. A jeśli to konieczne (numeryczne i nienumeryczne, stosuje się tylko wtedy, gdy wartość jest liczbowa.

Jeśli wartość jest nadal liczbowa, nie ma potrzeby wykonywania tego testu.

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

Dziękuję SbaDenis! Przetestuję to trochę później. I że trochę szukam, żeby zrozumieć, co to jest debugowanie. Drukować.

W każdym razie DZIĘKUJĘ za zachęcenie mnie do nauki kodu VBA. Na początku jest to odpychające, ale im częściej to robię, tym bardziej mi się to podoba. Zawracam Wam głowę wieloma pytaniami, ale czuję, że robię postępy. Dawno minęły czasy, kiedy próbowałam robić chimery z kawałków znalezionych tu i ówdzie ;)

 

Witam

W Excelu całkiem możliwe jest zastąpienie kropki przecinkiem (lub odwrotnie).

Mieliśmy problemy z konfiguracjami w zależności od tego, czy stacja robocza była skonfigurowana w USA, czy we Francji.

Na przykład tak:

=PODSTAWIAĆ(A3; ","; ".")

 

 

 

Witam

FYI, nie mogłem zmienić "," na "." w programie Excel. Metoda sbadenis również nie zadziałała (debug.print interweniuje w komórce Excela czy w przechowywanym ciągu tekstowym?)

W końcu znalazłem rozwiązanie, zmieniając opcje  w oknach (ustawienia regionalne).

Nie jest to dla mnie zbyt satysfakcjonujące, ponieważ jeśli korzystam z mojego makra excela na innym komputerze, muszę sprawdzić, czy ten parametr jest ustawiony poprawnie.

Idealnie byłoby, gdyby można było nadpisać właściwość solidworks

Witam

W programie Excel musisz utworzyć kolumnę dla właściwości, którą chcesz kontrolować.

W tej kolumnie należy wprowadzić formułę =SUBSTITUTE(A3; ","; ".") lub A3 to komórka zawierająca wartość liczbową, którą chcesz wprowadzić w swojej właściwości. (formuła tutaj zamienia przecinek na kropkę, muszę użyć =SUBSTITUTE(A3; "."; ","), aby zrobić odwrotnie). Musisz więc zastąpić A3, aby wybrać właściwą komórkę.

 

W PJ część SW2020 z Excelem za pomocą tej funkcji na właściwości "obserwacja": wymiar 2,5 (z przecinkiem) w SW staje się 2,5 (z kropką) we właściwości


08hu_test.sldprt