Zbiorcze edytowanie dokumentów

Użytkowanie edytora dokumentów
MatkaBoskaBiurowa
Posty: 3
Rejestracja: pn sie 20, 2012 8:28 am

Zbiorcze edytowanie dokumentów

Post autor: MatkaBoskaBiurowa »

Mój problem jest następujący. Wyprodukowałem około 200 dokumentów, które poza adresatem i odpowiednią formą "Pan" lub "Pani" niczym się nie różnią. Nie pytajcie czemu nie zrobiłem tego z korespondencji seryjnej, to nie ja zarządziłem taką a nie inną metodykę pracy. Jednakże w trakcie pracy okazało się, że muszę usunąć z niego jeden akapit. Da się to zrobić jakoś hurtowo, czy może muszę każdy dokument kolejno otwierać, a potem to edytować?
Open Office 3.1 na Windows 2000
MatkaBoskaBiurowa
Posty: 3
Rejestracja: pn sie 20, 2012 8:28 am

Re: Zbiorcze edytowanie dokumentów

Post autor: MatkaBoskaBiurowa »

Teraz wpadł mi do głowy pewien pomysł. Da się uruchomić makro na tych dokumentach, bez ich otwierania?
Open Office 3.1 na Windows 2000
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Zbiorcze edytowanie dokumentów

Post autor: belstar »

Witam
MatkaBoskaBiurowa pisze:Da się uruchomić makro na tych dokumentach, bez ich otwierania?
Tego nie wiem, ale proponuje poniższe rozwiązanie.

Kod: Zaznacz cały

Sub OpenChangeSaveClose
	Dim args(0) as New com.sun.star.beans.PropertyValue
	Dim Doc As Object
	Dim Replace As Object
	oFolder = "/home/slav/Dokumenty/"'twoja ścieżka dostępu
	For i = 1 to 3 'zmień na twoją ilość tu tylko trzy dokumenty o nazwie 
           '"Test1.odt, Test2.odt, Test3.odt
		oFile = "Test" & trim(str(i)) & ".odt"
		cUrl = ConvertToURL( oFolder & oFile )
		oTmpDoc = StarDesktop.LoadComponentFromUrl(cUrl, "_blank", 0, args())
		 
		Doc = ThisComponent
		Replace = Doc.createReplaceDescriptor
		Replace.SearchRegularExpression = True
		Replace.SearchString = "kota"'Poszukiwany ciąg
		Replace.ReplaceString = "psa"'zmiana na
		 
		Doc.replaceAll(Replace)
			
		oTmpDoc.store'zapis i zamknięcie
		oTmpDoc.dispose
               'wait(500)
	next
End Sub
Do poprawnego działania wszystkie dokumenty muszą być w jednym katalogu i muszą mieć nazwy z kolejnymi numerami (np. doc1.odt doc2.odt...). Jeśli zmiana nazw jest uciążliwa poszukaj programu do hurtowej zmiany nazw plików (jest tego trochę). Pozmieniaj w kodzie zaznaczone linie, ustaw licznik na ilość plików do zmiany zawartości i spokojnie wypij zasłużoną kawkę.

Ps. makro umieść nie w modułach dokumentów, tylko w swojej bibliotece "Moje okna dialogowe i makra.Standard"
Jeśli coś będzie się kiełbasiło odhacz linię "wait(500)", trochę spowolni to wykonywanie procedury.

Pozdrawiam
LibreOffice 5.1.2.2 Ubuntu 16 LTS
MatkaBoskaBiurowa
Posty: 3
Rejestracja: pn sie 20, 2012 8:28 am

Re: Zbiorcze edytowanie dokumentów

Post autor: MatkaBoskaBiurowa »

O! Bardzo zacny pomysł. Ale ma jedną słabą stronę. Nazwy muszą zostać jak są, tj. nazwiskami adresatów. Chyba, że dałoby się wprowadzić zamiast "test" znak "*" albo coś podobnego, zastępującego dowolny ciąg? Wtedy mógłbym pozmieniać np na:
Kowalski1, Nowak2, Malinowski3, etc. bądź odwrotnie 1Kowalski, 2Nowak, 3Malinowski?
Open Office 3.1 na Windows 2000
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Zbiorcze edytowanie dokumentów

Post autor: belstar »

O Matko Boska jakaś ty, MatkaBoskaBiurowa wymagająca, ale co się nie robi dla świętości.

Kod: Zaznacz cały

'Otwiera wszystkie pliki w katalogu
Sub OpenChangeSaveClose
	Dim args(0) as New com.sun.star.beans.PropertyValue
	Dim Doc As Object
	Dim Replace As Object
	oFolder = "/home/slav/Dokumenty/test/"'twoja ścieżka dostępu
	oFile = Dir( oFolder, 0)
	
	Do While oFile <> ""
		cUrl = ConvertToURL( oFolder & oFile )
		oTmpDoc = StarDesktop.LoadComponentFromUrl(cUrl, "_blank", 0, args())
		Doc = ThisComponent
		Replace = Doc.createReplaceDescriptor
		Replace.SearchRegularExpression = True
		Replace.SearchString = "psa"'Poszukiwany ciąg
		Replace.ReplaceString = "kota w butach"'zmiana na
		 
		Doc.replaceAll(Replace)
			
		oTmpDoc.store'zapis i zamknięcie
		oTmpDoc.dispose
		
		oFile = Dir
	Loop		
End Sub
Ponieważ pętla wczytuje wszystkie pliki z wskazanego katalogu, przenieś pliki do edycji do innego katalogu lub wyrzuć te które nie chcesz poddać kosmetyce. Mam nadzieje że to jest to czego oczekujesz.

Pozdrawiam
LibreOffice 5.1.2.2 Ubuntu 16 LTS
ODPOWIEDZ