Makra w fakturze

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
tredsch
Posty: 12
Rejestracja: czw kwie 10, 2014 10:39 am

Makra w fakturze

Post 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
Załączniki
Faktura-Vat_01 (1).xlsm
(89.5 KiB) Pobrany 307 razy
windows xp, libreoffice 4.2
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Makra w fakturze

Post 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.
LibreOffice 5.1.2.2 Ubuntu 16 LTS
tredsch
Posty: 12
Rejestracja: czw kwie 10, 2014 10:39 am

Re: Makra w fakturze

Post autor: tredsch »

.. dzięki.. spróbuję..pozdrawiam
windows xp, libreoffice 4.2
tredsch
Posty: 12
Rejestracja: czw kwie 10, 2014 10:39 am

Re: Makra w fakturze

Post 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
Ostatnio zmieniony pn cze 02, 2014 9:55 pm przez Jan_J, łącznie zmieniany 1 raz.
Powód: znaczniki [code]
windows xp, libreoffice 4.2
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Makra w fakturze

Post 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.
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
tredsch
Posty: 12
Rejestracja: czw kwie 10, 2014 10:39 am

Re: Makra w fakturze

Post 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.
windows xp, libreoffice 4.2
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Makra w fakturze

Post 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

Kod: Zaznacz cały

domowy = environ("USERPROFILE")
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, ...).
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ