Strona 1 z 1
Makra w fakturze
: sob maja 31, 2014 9:52 am
autor: tredsch
Witam nie wiem czy piszę w dobrym miejscu ale mam prośbę, otóż ściągnąłem z Internetu wzór faktury VAT (bardzo dobry),działa ten plik (makra) dobrze w Microsoft Office, ale niestety te makra w LibreOffice 4.2 nie działają; czy ktoś może mi pomóc i przerobić je na ten program bo są bardzo przydatne szczególnie zapisz jako PDF (umożliwiający też wydruk, zapis w odpowiednim folderze pod dowolną nazwą). W załączeniu plik z wzorem faktury - w nagłówku hasło aby arkusz nie był chroniony. Pozdrawiam. Edward
Re: Makra w fakturze
: ndz cze 01, 2014 9:11 pm
autor: belstar
Z chęcią ci pomogę, ale musisz wykazać trochę własnej inicjatywy. O eksporcie do PDF było już na forum wystarczy użyć szukajki. Poszukaj i wstaw znaleźiony kod do modułu basica, uprzednio zapisując plik jako ODS i robiąc w modułach porządek (pozostałości excelowe). Kiedy to zrobisz i zatniesz się w jakimś punkcie, wtedy zadaj pytanie na forum, na pewno znajdzie się ktoś pomocny.
Re: Makra w fakturze
: pn cze 02, 2014 7:13 am
autor: tredsch
.. dzięki.. spróbuję..pozdrawiam
Re: Makra w fakturze
: pn cze 02, 2014 7:29 pm
autor: tredsch
witam - Znalazłem coś takiego ale mi nie działa choć uzupełniam na różne sposoby linię:
Kod: Zaznacz cały
cFile = ("/home/Twój_katalog/"& oSheet.name()&".pdf")'Windows c:\COŚ_TAM
pokazuje się
Kod: Zaznacz cały
Błąd uruchomieniowy języka BASIC.
Wystąpił wyjątek Type: com.sun.star.task.ErrorCodeIOException
Message: SfxBaseModel::impl_store <file:///home/faktury/Wystaw%20faktur%C4%99.pdf> failed: 0x507.
oto używane Makro:
Kod: Zaznacz cały
Sub CopyPDF
oDoc = Thiscomponent 'the document running the macro
oSheet = oDoc.getCurrentController().getActiveSheet() ' the active sheet
'oDoc.g1etCurrentController.Select oSheet
'print osheet.name()
cFile = ("/home/Twój_katalog/"& oSheet.name()&".pdf")'Windows c:\COŚ_TAM
cUrl = ConvertToUrl( cFile )
oDoc.storeToUrl( cUrl, Array( MakePropertyValue( "FilterName", "calc_pdf_Export", "Selection,0,0")))
End Sub
Function MakePropertyValue( Optional cName As String, Optional uValue ) As com.sun.star.beans.PropertyValue
oPropertyValue = createUnoStruct( "com.sun.star.beans.PropertyValue" )
If Not IsMissing( cName ) Then
oPropertyValue.Name = cName
EndIf
If Not IsMissing( uValue ) Then
oPropertyValue.Value = uValue
EndIf
MakePropertyValue() = oPropertyValue
End Function
Re: Makra w fakturze
: pn cze 02, 2014 10:30 pm
autor: Jan_J
Twój oSheet jest obiektem odpowiedzialnym za arkusz w skoroszycie, a oSheet.Name to nazwa tego arkusza. Korzystasz z niej jakby była nazwą pliku. OK, plik się będzie tworzył.
Ale URL pliku w systemie Windows posługuje się ścieżką bezwzględną z nazwą woluminu. W XP spodziewałbym się czegoś w rodzaju "c:\documents and settings\faktury\" & oSheet.Name & ".pdf", ew. z ukośnikami w drugą stronę. A masz u siebie "/home/faktury/", jakby na uniksie.
PS. w Windows zamiast sztywnej ścieżki zgrabniej byłoby skorzystać ze zmiennej środowiskowej USERPROFILE, bo tak po przejściu na innego użytkownika, albo na inny system, który ma ścieżki inaczej poustawiane, wystąpi problem.
Re: Makra w fakturze
: wt cze 03, 2014 10:16 am
autor: tredsch
..
dzięki serdeczne mam już duży postęp, choć wiele już w nim przerobiłem (w dokumencie)jeżeli chodzi o formuły to jednak makra nie bardzo pojmuję, dwie nadal nie rozwiązane sprawy to:
1) zapisuje mi cały dokument a mi potrzeba żeby zapisywało w pdf tylko 1 arkusz (pozostałe są pomocnicze do uzupełniania tego pierwszego arkusza);
2) zapisuje mi pod nazwą "FakturyWystaw fakturę.pdf" a chodzi mi żeby zapisywało każdy dokument pod inną nazwą czy to będzie kolejny numer faktury a lepiej żebym mógł podawać za każdym razem nazwę do zapisania (ale to ostatnie nie wiem czy jest możliwe);
3) a jak konkretnie skorzystać ze wskazówki poniżej (konkretny zapis ścieżki i w którym miejscu);
jeszcze raz dziękuję i proszę o dalsza pomoc.
Pozdrawiam. Edward
Jan_J pisze:PS. w Windows zamiast sztywnej ścieżki zgrabniej byłoby skorzystać ze zmiennej środowiskowej USERPROFILE, bo tak po przejściu na innego użytkownika, albo na inny system, który ma ścieżki inaczej poustawiane, wystąpi problem.
Re: Makra w fakturze
: wt cze 03, 2014 5:55 pm
autor: Jan_J
Jan_J pisze:[...] zamiast sztywnej ścieżki zgrabniej byłoby skorzystać ze zmiennej środowiskowej USERPROFILE [...]
Zamiast
Kod: Zaznacz cały
domowy = "c:\documents and settings\kamil borysiak"
lepiej
albo nawet
Kod: Zaznacz cały
select case GetGUIType()
case 1: domowy = environ("USERPROFILE") ' Windows
case else: domowy = environ("HOME") ' inne systemy
end select
W ten sposób konfiguracja będzie dopasowana do zalogowanego użytkownika (kamil, marta, guest, ...) oraz systemu (c:\documents and settings, c:\users, d:\users, /home, /home/pracownicy, ...).