Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 28. 2. 2014 05:47:16

csert
Člen
Registrace: 27. 2. 2014
Příspěvků: 30

kopírování souborů_makro - VYŘEŠENO

Dobrý den,
Mám dva soubory *.xls řekněme  data.xls a tabulka.xls. V posledním kroku mám otevřená data.xls, která jsou výsledkem nějakého makra a potřeboval bych v dalším ( nejlépe přidruženém makru - to umím )  otevřít tabulka.xls a jednotlivé buňky přenést. Bohužel tabulka je dost složitá ( loga, texty , znaky ) takže ji nemůžu makrem vždy vytvořit novou. Mám takové tušení, že OO neumí v makru "pracovat " ve dvou souborech, ale pouze v listech.
dík

Editoval csert (3. 3. 2014 08:30:40)

Offline

#2 28. 2. 2014 09:39:55

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,468

Re: kopírování souborů_makro - VYŘEŠENO

Já bych poradil spíš vložit list ze souboru, nebo udělat odkaz. Makro mezi dvěma soubory také chodí. Když ale dáte "vložit list" - vyberete - propojí se to a pak můžete například odkaz rozpojit, nebo ho nechat zapnutý. Pokud tedy nechcete celý list, musíte nejlépe nadefinovat pojmenované úseky a ty potom propojit pomocí odkazu. Odkazy mohou být různě aktivované - například při otevření dokumentu, nebo i v časové závislosti.
    Jde o to, jak máte to makro postavené. Pokud by Vám to nevadilo postněte sem ukázku tak aby bylo zřejmé v čem spočívá složitost, nebo spíš problematika - není makro jako makro. Možná by to chtělo oba vzorové sešity.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 28. 2. 2014 10:29:42

csert
Člen
Registrace: 27. 2. 2014
Příspěvků: 30

Re: kopírování souborů_makro - VYŘEŠENO

Vložit list jsem zkoušel. Samostatně to funguje, ale v makru se vloží prázdný list ( jako by nevěděl. že je list popsaný ) Zachová si pouze název listu.
Bohužel zveřejnit to nemohu. Je to pracovní dokument. Ale ono zatím není co. Makro na kopírování zatím vytvářím.

Offline

#4 28. 2. 2014 10:40:44

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,468

Re: kopírování souborů_makro - VYŘEŠENO

Jde o toto : "Vložit" > "Vložit list ze souboru...". Otevře se dialog, kde vyberete zdrojový dokument a hned vidíte volbu "Vložit před, nebo za" a také vidíte součásti dokumentu, které se dají natagovat. Také je tam možnost zaškrtnout odkazem. Pro internet také funguje odkaz na externí data. Nabízí sice také dokumenty ve vlastním adresáři, ale to nefunguje pro dokumenty ODS.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 28. 2. 2014 10:59:20

csert
Člen
Registrace: 27. 2. 2014
Příspěvků: 30

Re: kopírování souborů_makro - VYŘEŠENO

Ano přesně takhle to funguje bez makra. Vložit popsaný list. V makru je list prázdný.

REM  *****  BASIC  *****

Sub Main

End Sub




sub vloz
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 ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:InsertSheetFromFile", "", 0, Array())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:InsertSheetFromFile", "", 0, Array())


end sub

Offline

#6 28. 2. 2014 12:22:33

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,468

Re: kopírování souborů_makro - VYŘEŠENO

Otestujte následující makro:

sub zkopiruj_otevri_vloz
dim document1 as object
dim document2 as object
dim dispatcher1 as object
dim dispatcher2 as object
dim args1(0) as new com.sun.star.beans.PropertyValue
dim args2(1) as new com.sun.star.beans.PropertyValue
dim args3(0) as new com.sun.star.beans.PropertyValue
rem ----------------------------------------------------------------
document1 = ThisComponent.CurrentController.Frame
dispatcher1 = createUnoService("com.sun.star.frame.DispatchHelper")
' zde definujte první buňku v cílovém dokumentu kam se bude vkládat obsah
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1" 
' Kopírujeme vše s operací Přidat (viz volba Vložit jinak)
args2(0).Name = "Flags"
args2(0).Value = "A"
args2(1).Name = "FormulaCommand"
args2(1).Value = 1
' zdrojová oblast v zadávacím dokumentu
args3(0).Name = "ToPoint"
args3(0).Value = "$A$1:$F$10"
adresa = convertToURL("ZDE VLOŽTE ADRESU CÍLOVÉHO SOUBORU")
'Nebo vytvořit nový dokument a ten pak uložit
rem ----------------------------------------------------------------
' označíme zdrojovu oblast - args3
dispatcher1.executeDispatch(document1, ".uno:GoToCell", "", 0, args3())
' a zkopírujeme ji
dispatcher1.executeDispatch(document1, ".uno:Copy", "", 0, array())
' document uložíme (změny) a zavřeme)
ThisComponent.store
ThisComponent.close(True)
' načteme cílový soubor (otevřeme)
StarDesktop.loadComponentFromUrl(adresa,"_blank",0,array())
document2 = ThisComponent.CurrentController.Frame
dispatcher2 = createUnoService("com.sun.star.frame.DispatchHelper")
' přeskočíme do první buňky kam budeme vkládat zkopírovaná data - args1
dispatcher2.executeDispatch(document2, ".uno:GoToCell", "", 0, args1())
' Vložíme obsah schránky (jako všechny hodnoty s volbou přidat) - args2
dispatcher2.executeDispatch(document2, ".uno:InsertContents", "", 0, args2())
' dokument uložíme
ThisComponent.store
msgbox "Údaje byly aktualizovány",0,"PŘENOS PROVEDEN "
end sub

Já mrknu co se dá ještě dělat - to makro (když se smaže REM) skočí do dialogu a tím skončí. Mělo by to pokračovat nějakým OpenUrl.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 28. 2. 2014 12:30:21

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,468

Re: kopírování souborů_makro - VYŘEŠENO

Jo to hlavní jsem zapměl. Udělejte si sešit s trvalámi odkazy, které se aktualizují při otevření a z něj pak tím makrem kopírujte. Možná Vám to bude vyhovovat takto nepřímo spíš nežli přímo, protože v tom sešitě s odkazy můžete udělat libovolné úpravy - také makrem.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#8 3. 3. 2014 08:29:47

csert
Člen
Registrace: 27. 2. 2014
Příspěvků: 30

Re: kopírování souborů_makro - VYŘEŠENO

děkuji za snahu. Vyřešil jsem to jinak. Ale to není obsahem tohoto fóra.

Offline

Zápatí