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

#1 25. 5. 2012 18:55:36

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

Ukládání makrem do více složek - VYŘEŠENO

- Zdravím.
     Mám dotaz na mažnost ukládat do více foldrů. "Mám soubor, který generuje velké množství řádků a sloupců". Proto musím ukládat do více foldrů (složek). Probíhá to tak, že vygeneruji  (mnohokrát za sebou) soubor s téměř 20.000 řádků a 101 sloupců (dělám to pomocí pole - "na doraz počítače" to jsem musel optimalizovat podle HW). Mezivýsledek uložim na list a ten pak postupně ukládám ve formě složek relační databáze - 1. sloupec (klíč), + 2. sloupec uložím do foldru č.1, 1.sl+3.sl uložím do foldru č.2 ..až 1.sl+101sl ukládám do foldru s názvem 100. To jsou dbf soubory, nakonec původní zdrojový list 101 sloupců smažu, uložim startovací data pro další soubor a uložím pod původním názvem - formát ods.
     Problém je v tom, že jsem upravil několik maker bez "UNA" a kupodivu ukládají jen do prvního a druhého foldru. Při třetím uložení hlásí, že nemůže přečíst nějakou komponentu. První uložení probíhá z formátu ods do dbf, druhé z dbf do dbf a pak chyba.
     Tak jsem to udělal v UNU - nahrávané makro a chodí to jako mraky - které mohu sledovat z okna, protože na compa nesmím ani šáhnout (rychlost je také stejná). Nevím proč to je. Tady je jedno z maker, které jsem upravoval a ladil jak jen mně napadlo - už nevím co by se dalo dělat.

Sub Uloz_DBF 
dim document as object
dim sURL, sDBF as string
dim ii as integer
dim SL as string ' Proměnná načítaná originálně z generátoru (číslo souboru)
FOR ii = 1 To 99 ' Číslo ii - "název foldru a konec názvu souboru dbf"
document   = ThisComponent
SL = 3 'Originálně (číslo souboru) načítá se z generátoru
sDBF = "file:///D:/WorkA/N_pokus/" + ii + "/C_6_49_n_" + SL +"_" + ii+ ".dbf"
    Dim mFileProperties(1) As New com.sun.star.beans.PropertyValue
    mFileProperties(0).Name = "FilterName"
    mFileProperties(0).Value = "dBase"
    mFileProperties(1).Name = "FilterOptions"
    mFileProperties(1).Value = "IBMPC_850"
    document.storeAsURL(sDBF, mFileProperties())
Next ii
End Sub 

Nahrané makro s UNEM jsem udělal bez cyklu a chodí tak jak má. Proč? V cyklu se mi makro s UNO nepodařilo uložit vůbec, tak jsem to víckrát nezkoušel.

Děkuji za radu

Editoval neutr (26. 5. 2012 15:03:31)


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

#2 25. 5. 2012 19:50:11

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Ukládání makrem do více složek - VYŘEŠENO

Stačí přidat příkaz wait 10 (možná i méně) - systém nestačí vytvářet složky a vkládat do nich soubory.

Sub Uloz_DBF 
dim document as object
dim sURL, sDBF as string
dim ii as integer
dim SL as string ' Proměnná načítaná originálně z generátoru (číslo souboru)
Dim mFileProperties(1) As New com.sun.star.beans.PropertyValue
document   = ThisComponent
SL = 3 'Originálně (číslo souboru) načítá se z generátoru
FOR ii = 1 To 10 ' Číslo ii - "název foldru a konec názvu souboru dbf"
sDBF = "file:///home/dan/Dokumenty/" + ii + "/C_6_49_n_" + SL +"_" + ii+ ".dbf"
    mFileProperties(0).Name = "FilterName"
    mFileProperties(0).Value = "dBase"
    mFileProperties(1).Name = "FilterOptions"
    mFileProperties(1).Value = "IBMPC_850"
    document.storeAsURL(sDBF, mFileProperties())
    wait 10
Next ii
End Sub

;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 26. 5. 2012 05:30:16

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

Re: Ukládání makrem do více složek - VYŘEŠENO

To není ono - nefunguje ani 50 milisec.
Hláška systému je : sequence element is not assignable by given value. Tak jsem zkoušel deklarovat více "elementů", ale i méně. Stále stejný výsledek. Například :

    Dim mFileProperties(0) As New com.sun.star.beans.PropertyValue    
    mFileProperties(0).Name = "FilterOptions"
    mFileProperties(0).Value = "IBMPC_850"
    document.storeAsURL(sDBF, mFileProperties())
    wait 50

Nebo také více - což je zřejmě správná cesta, jen nevím jaký parametr deklarovat př.

    Dim mFileProperties(2) As New com.sun.star.beans.PropertyValue
    mFileProperties(0).Name = "URL"
    mFileProperties(0).Value = "file:///D:..........................."    
    mFileProperties(1).Name = "FilterName"
    mFileProperties(1).Value = "dBase"
    mFileProperties(2).Name = "FilterOptions"
    mFileProperties(2).Value = "IBMPC_850"
    document.storeAsURL(URL, mFileProperties())
    wait 50

Zkoušel jsem modifikovat "URL" jak přímou deklarací - a pak také "store URL", tak jak naznačuji výše, nebo i odkazem URL - Value = sDBF
    Stále stejný výsledek - uložím správně do dvou prvních foldrů a pak hláška....Charakter práce vyžaduje mezi uložením vždy mezioperaci - i to mám odzkoušené - a nic. Při tom nahrané makro to umí, a není vidět žádný rozdíl v deklaracích s UNO, a bez UNO.

Editoval neutr (26. 5. 2012 05:38:19)


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

#4 26. 5. 2012 13:42:20

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Ukládání makrem do více složek - VYŘEŠENO

Tak chybička bude někde jinde, mě makro fungovalo, protože jsem přesunul definici thisComponent mimo cyklus a dokument se ukládal vždy z původního ods souboru.


Ta chyba bude pravděpodobně v tom, že uplatňujete filtr dBase při ukládání dbf souborů.
Zkusil jsem tuto úpravu a funguje - nejprve uložíme do složky 1 první soubor dbf z ods, následně jen přeukládáme do dalších složek dbf soubor (bez uplatňování úložního filtru):

Sub Uloz_DBF 
dim document as object
dim sURL, sDBF as string
dim ii as integer
dim SL as string ' Proměnná načítaná originálně z generátoru (číslo souboru)
document   = ThisComponent
' Číslo ii - "název foldru a konec názvu souboru dbf"

SL = 3 'Originálně (číslo souboru) načítá se z generátoru
sDBF = "file:///home/dan/Dokumenty/" + "1" + "/C_6_49_n_" + SL +"_" + "1" + ".dbf"
    Dim mFileProperties(1) As New com.sun.star.beans.PropertyValue
    mFileProperties(0).Name = "FilterName"
    mFileProperties(0).Value = "dBase"
    mFileProperties(1).Name = "FilterOptions"
    mFileProperties(1).Value = "IBMPC_850"
    document.storeAsURL(sDBF, mFileProperties())
FOR ii = 2 To 99 
sDBF = "file:///home/dan/Dokumenty/" + ii + "/C_6_49_n_" + SL +"_" + ii+ ".dbf"
    thisComponent.storeAsURL(sDBF, array())
Next ii
End Sub

Zkuste a dejte vědět


;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 26. 5. 2012 15:02:04

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

Re: Ukládání makrem do více složek - VYŘEŠENO

To bylo ono. Dík Dane. Mně to chodí hned od jedničky z ods do dbf, a stejné je to z dbf do dbf.
    Dal jsem do cyklu jen sDBF = .... a Store. Rozdíl v chování programu může být u Tebe dán tím, že to pouštíš na Linuxech. Já mám Wokna XP.


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

Zápatí