Witam wszystkich!
Dopiero zaczynam przygodę z Calc, więc proszę o dużo wyrozumiałości. Zarejestrowałam makro, które wkleja wartość formuły. Dla formuł typu „=a1+a2” działa oczywiście poprawnie. Problem w tym, że moja formuła ma wiele cudzysłowów, tj. =JEŻELI(C12="Podaj typ";" ";JEŻELI(C12="zgłoszenie";"gwarant";JEŻELI(C12="zapytanie";"inne";C12))).
Wykonanie makra powoduje wyświetlanie komunikatu "nieoczekiwany symbol zg.", czyli makro czyta wszystko między dwoma pierwszymi cudzysłowami i nie widzi polskich liter (gdy nie ma polskich liter, to wyskakuje komunikat "nieoczekiwana wartość" ).
Proszę o podpowiedź jak to obejść. Byłoby miło gdyby tłumaczenie było łopatologiczne.
Formularz działa na zasadzie domina/schematu blokowego, a to makro ma „zerować” startowe wybrane komórki poprzez wpisanie tej pierwszej formuły.
sub jezeli
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$C$7"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "=JEŻELI(C12="Podaj typ";" ";JEŻELI(C12="zgłoszenie";"gwarant";JEŻELI(C12="zapytanie";"inne";C12)))"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
end sub
Z góry dziękuję za pomoc, pozdrawiawm
Makro Calc wklejające formułę z wieloma cudzysłowami
Makro Calc wklejające formułę z wieloma cudzysłowami
OpenOffice 4.1.1 na Windows 7
Re: Makro Calc wklejające formułę z wieloma cudzysłowami
Na początek nie rejestruj makr, bo to zły nawyk i niczego się nie nauczysz. Poczytaj tu.jazzti pisze:Dopiero zaczynam przygodę z Calc, więc proszę o dużo wyrozumiałości. Zarejestrowałam makro, które wkleja wartość formuły.
Spójrz jaki masz długi kod, względem wykorzystującego API.
Kod: Zaznacz cały
Sub WstawFormule
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Doc = ThisComponent
Sheet = Doc.Sheets(0)'Pierwszy arkusz z lewej
Cell = Sheet.getCellRangeByName("C7")
Cell.FormulaLocal ="=JEŻELI(C12=""Podaj typ"";"" "";JEŻELI(C12=""zgłoszenie"";""gwarant"";JEŻELI(C12=""zapytanie"";""inne"";C12)))"
'Poniżejwersja używająca wewnętrznych nazw funkcji, ważna jeśli używasz różnych lokalizacji
Cell.Formula ="=IF(C12=""Podaj typ"";"" "";IF(C12=""zgłoszenie"";""gwarant"";IF(C12=""zapytanie"";""inne"";C12)))"
End Sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Makro Calc wklejające formułę z wieloma cudzysłowami
Dziękuję uprzejmie za pomoc.
OpenOffice 4.1.1 na Windows 7