Moi
Yritin lueskella aikaisempia viestejä, mutta en löytänyt vastausta ongelmaani.
Minulla on siis työkirjassa(A) laskentataulukoita jotka toimivat ihan hienosti.
Nyt minun pitäisi saada kopioitua eräästä toisesta työkirjasta(B) laskentataulukko tähän työkirjaan (A) automaattisesti, vaikka kun avaan sen. Ei olisi ongelma vaikka työkirjaani (A) liitettäisiin kokonaisuudessaan tuo toinen työkirja(B) kun avaan sen. Nauhoitin kokeeksi makroja ja ne tuntuivat aluksi toimivan, mutta jossain vaiheessa työkirjaan (A) tulostui ihan väärän työkirjan laskentataulukoita. Jotenkin varmaan pitäisi pystyä määrittelemään tarkka osoite mistä työkirjan (B) taulukko tuodaan.
Taisi olla hieman sekavaa ja termeistäkään en mene takuuseen.
Joulun odotusta kaikille
Taulukko ja sen kopiointi
10
602
Vastaukset
- kertoi jo...
jos sellainen riittää niin siitä toisesta tiedostosta kopioi VÄLILEHTI (hiiren oikealla välilehden päällä ja valitse kopioi välilehti tms...) ja liitä siihen työkirjaan (tiedostoon9 jossa on se A.
Nyt sinulla on tiedosto jossa välilehdet A ja B ... Eikö? Mutta silloin työkirjaan B tehdyt muutokset ei näy, vaan sinulla olisi se B siinä samassa A:n kanssa. Riittääkö? - Veera-Veera
Ongelma on siinä, että tuo kopiointi työkirjasta B.sta A.han pitäisi tapahtua automaattisesti ja mielellään painiketta käyttäen. Olen siis nauhoittanut makron joka tekee juuri näin, mutta kun availen muita välilehtiä, niin A.han alkaa kopioitumaan tietoa näiltä välilehdiltä.
- No_oooOOOooo
Makron saa lisättyä toolbariin seuraavasti:
tools->macros->organize macros
valitset macron ja sitten assing ja toolbars. Tähän joko luot uuden toolbarin tai käytät jo olemassaolevaa. Valitse add ja etsi haluamasi makro ja lisää se toolbariin. Nyt makro toimii yhdellä hiiren klikkauksella.
Sulla oli jo olemassa oleva makro, mut tässäpä eräs vaihtoehto:
sub copymacro
dim args(0) As New com.sun.star.beans.PropertyValue
args(0).Name = "Hidden"
args(0).Value = FALSE
dim args3(5) As New com.sun.star.beans.PropertyValue
args3(0).Name = "Flags"
args3(0).Value = "A"
'Flags:
'A - all
'or
'S - string
'V - value
'D - date, time
'F - formulas
'N - notes
'T - formats
args3(1).Name = "FormulaCommand"
args3(1).Value = 0
args3(2).Name = "SkipEmptyCells"
args3(2).Value = false
args3(3).Name = "Transpose"
args3(3).Value = false
args3(4).Name = "AsLink"
args3(4).Value = false
args3(5).Name = "MoveMode"
args3(5).Value = 4
dim osheet,url2,doc,doc2,osheet2,oDispatch,oframe1,oframe2
dim copyrange,pasterange
oDispatch = createUnoService( "com.sun.star.frame.DispatchHelper" )
doc=thiscomponent
oframe1=ThisComponent.CurrentController.Frame
'sheets(0) refers to active sheet
osheet = doc.sheets(0)
url2=convertToUrl("C:\oma\oma.ods")
doc2=StarDeskTop.loadComponentFromUrl (url2, "_blank", 0, args())
oframe2=ThisComponent.CurrentController.Frame
'sheets(0) refers to active sheet
osheet2=doc2.sheets(0)
copyrange=osheet2.getCellRangeByName("A1:B10")
pasterange=osheet.getCellRangeByName("A1:B10")
doc2.CurrentController.Select(CopyRange)
oDispatch.executeDispatch(oframe2, ".uno:Copy", "", 0, Array())
doc.CurrentController.Select(PasteRange)
oDispatch.executeDispatch(oframe1, ".uno:InsertContents", "", 0, args3())
doc2.Close(true)
end sub - No_oooOOOoo
No_oooOOOooo kirjoitti:
Makron saa lisättyä toolbariin seuraavasti:
tools->macros->organize macros
valitset macron ja sitten assing ja toolbars. Tähän joko luot uuden toolbarin tai käytät jo olemassaolevaa. Valitse add ja etsi haluamasi makro ja lisää se toolbariin. Nyt makro toimii yhdellä hiiren klikkauksella.
Sulla oli jo olemassa oleva makro, mut tässäpä eräs vaihtoehto:
sub copymacro
dim args(0) As New com.sun.star.beans.PropertyValue
args(0).Name = "Hidden"
args(0).Value = FALSE
dim args3(5) As New com.sun.star.beans.PropertyValue
args3(0).Name = "Flags"
args3(0).Value = "A"
'Flags:
'A - all
'or
'S - string
'V - value
'D - date, time
'F - formulas
'N - notes
'T - formats
args3(1).Name = "FormulaCommand"
args3(1).Value = 0
args3(2).Name = "SkipEmptyCells"
args3(2).Value = false
args3(3).Name = "Transpose"
args3(3).Value = false
args3(4).Name = "AsLink"
args3(4).Value = false
args3(5).Name = "MoveMode"
args3(5).Value = 4
dim osheet,url2,doc,doc2,osheet2,oDispatch,oframe1,oframe2
dim copyrange,pasterange
oDispatch = createUnoService( "com.sun.star.frame.DispatchHelper" )
doc=thiscomponent
oframe1=ThisComponent.CurrentController.Frame
'sheets(0) refers to active sheet
osheet = doc.sheets(0)
url2=convertToUrl("C:\oma\oma.ods")
doc2=StarDeskTop.loadComponentFromUrl (url2, "_blank", 0, args())
oframe2=ThisComponent.CurrentController.Frame
'sheets(0) refers to active sheet
osheet2=doc2.sheets(0)
copyrange=osheet2.getCellRangeByName("A1:B10")
pasterange=osheet.getCellRangeByName("A1:B10")
doc2.CurrentController.Select(CopyRange)
oDispatch.executeDispatch(oframe2, ".uno:Copy", "", 0, Array())
doc.CurrentController.Select(PasteRange)
oDispatch.executeDispatch(oframe1, ".uno:InsertContents", "", 0, args3())
doc2.Close(true)
end subLisäystä...
Tuo edellinen taitaapi olla väärinpäin sinun tarkoitukseen... Elikkäs jos sulla on B auki ja haluat siitä kopioida A:han niin muuta tuosta copyrange pasterangeksi. Url2:teen laita A:n osoite.
Nyt toi aukaiseen A:n ja kopio B:stä siihen taulukon (A1:B10).
Ärsh... sekaisin täs menee... pitää alkaa kattoon fudista... - No_oooOOOooo
No_oooOOOoo kirjoitti:
Lisäystä...
Tuo edellinen taitaapi olla väärinpäin sinun tarkoitukseen... Elikkäs jos sulla on B auki ja haluat siitä kopioida A:han niin muuta tuosta copyrange pasterangeksi. Url2:teen laita A:n osoite.
Nyt toi aukaiseen A:n ja kopio B:stä siihen taulukon (A1:B10).
Ärsh... sekaisin täs menee... pitää alkaa kattoon fudista...Ja vielä lisää vaikka toi ei erroria pukannut. Itsekin copypastailin aikaisemmista makroistani, mut...
oframe1=thiscomponent.CurrentController.Frame
korvataan:
oframe1=doc.CurrentController.Frame
ja samoin
oframe2=thiscomponent.CurrentController.Frame
korvataan
oframe2=doc2.CurrentController.Frame
Nyt siihen fudikseen....
- ...oooOOOooo...
No nyt löyty OO osaaja.
Rupes koodia pukkaamaan.
Ihme jos ei ala hommat luistamaan.
HYVÄ.... OpenOffice.org/LibreOffice Calcissa on Lisää - Kytke ulkoiseen tietolähteeseen ... -toiminto, joka voisi olla tässä avuksi, tietyin ehdoin.
Minulle tuntemattomasta syystä kyseinen toiminto ei näyttäisi tunnistavan toisen laskenta-asiakirjan taulukkolehteä, mutta kylläkin nimetyn alueen (ja ilmeisesti Base-tietokannan TAULUN).
Jos siis B-asiakirja (lähde) on muokattavissasi, niin valitsemalla lähteestä alue, vaikkapa koko taulukkolehti, ja nimeämällä se Lisää - Nimet -valinnasta (ei siis taulukkovalitsimesta), saat muodostettua sopivan lähteen tietojen kopioinnille. Tallennus pakollinen ja sulkeminen toivottavaa.
Nyt voit A-asiakirjassa avata (tai tarvittaessa lisätä) tyhjän taulukkolehden ja suorittaa Lisää - Kytke ulkoiseen tietolähteeseen -toiminnon hakemalla kyseisen B-asiakirjan ja valitsemalla siitä äsken nimetyn alueen (mahdollisesti yksi taulukkolehti). Jättämällä Päivitysväli ruudun tyhjäksi A-asiakirja päivittyy vain avattaessa. Tallenna A-asiakirja ja sulje se. Kun avaat uudestaan A-asiakirjan, linkkien päivityskysely on riesana, mutta ehkä ei liiaksi?
Pikatestasin Ubuntun LibreOfficessa ja näytti alustavasti toimivan ja huomioi B-taulukon muutokset uudelleen avattaessa (jos hyväksyi linkkien päivityksen). Tämä toiminto ei ole ihan uusi, joten sen pitäisi toimia "kaikissa" Calc-versioissa.
Toimiva nauhoitettu makro vaatisi tarkistusta, miten sen toiminta muuttuu, jos on eri taulukkolehdellä kuin alunperin ja siihen vaikuttanee myös, miten makron käynnistys on toteutettu.- Hienoa oO osaamista!
Hei,
Tuo on oikeen toimiva basic siirrettäessä taulukkodataa, mutta minulla on seuraava ongelma:
- Sama copypaste makro pitäisi saada toimimaan .txt -tiedostojen kanssa.
-Siis Calcissa olevalla makrolla pitäisi pystyä avaamaan tiedostosijainnissa C:/TESTI oleva .txt tiedosto, kopioimaan kaikki sisältö ja pasteamaan se aktiivisena olevaan calcin soluun. Muut on tähän asti toimineet, mutta tuota en ole vielä keksinyt. Osaisiko joku auttaa? - osaanauttaa
Osaan: http://fi.libreoffice.org/
Makrojen käyttö on inhottavaa, varsinkin jos saman saa tehtyä Calcin funktioilla. Tekstintiedoston tuonti yhteen soluun vaatisi hieman kopiointia Writerista, johon tekstitiedosto avautuu, mutta ...
Olsikohan tässä tilanne oikeanlainen?
http://www.saunalahti.fi/rjaaskel/1/Menu/OOo/Tekstiohje.gif
Pinkit nuolet ja ympyröinnit koskevat noiden ohjausobjektien laadintaa ja sen huomiointia, että suunnittelutila pitää kytkeä ensin pois, kun sulkee työkalupalkin.
Suomenkielisessä OOo/LiBO Calcissa (Ubuntussa ja Vistassa lievästi testattuna), toimiva makro olisi tässä:
Sub TekstitiedostoSoluun
Rem tuo Tiedostonvalinnan tekstitiedoston kohdistettuun soluun Calcissa
Rem käynnistyy painikkeella
Rem Laati: RIJ
oAsKir1 = ThisComponent
'oLehti1=oAsKir1.Sheets.getByName("Taulukko1")
oLehti1 = oAsKir1.CurrentController.getActiveSheet
'oForms = oAsKir1.CurrentController.ActiveSheet.DrawPage.Forms
oForms = oLehti1.DrawPage.Forms
vForm=oForms.getByName("Lomake")
sTn = vForm.getByName("Tiedoston valinta 1").Text
Rem vähäinen virhetesti: hiljainen poistuminen, jos tiedostoa ei löydy
If NOT FileExists(sTn) then Exit Sub
Rem avataan tekstitiedosto numerolle iTiednro, joka on seuraava vapaa numero
iTiednro = Freefile
Open sTn For Input As #iTiednro
While Not Eof(iTiednro)
Line Input #iTiednro, sRivi
If sRivi "" then
sTeksti = sTeksti & Srivi & Chr(32)
End If
Wend
Close #iTiednro
Rem toimii vain, jos yksi solu valittuna
oSolu = ThisComponent.CurrentSelection
oSolu.String = sTeksti
'Print sTeksti
End Sub
On lukuisia tapoja saada makro tuottamaan virheilmoitus. Se ei myöskään tunnista tiedostomuotoa, mutta muutaman rivin .txt-tiedosto tuntuisi tulevan. Olettaisin, että yli 64 KiB:n tiedostot eivät toimi. Rivinvaihto korvautuu välilyönnillä, joka on haitta tai hyöty, riippuu ...
Jos käytät vieraskielistä Calcia, joudut tekemään nimeämistä joko koodiin tai ohjausobjekteihin.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Poliisi tutkii murhaa Paltamossa
Poliisi tutkii Kainuussa sijaitsevassa Paltamon kunnassa epäiltyä henkirikosta, joka on tapahtunut viime viikon perjanta445299Jos me voitais puhua
Jos me voitais puhua tästä, mä sanoisin, että se on vaan tunne ja se menee ohi. Sun ei tarvitse jännittää mua. Mä kyllä243460Jenna meni seksilakkoon
"Olen oppinut ja elän itse siinä uskossa, että feministiset arvot omaava mies on tosi marginaali. Todennäköisyys, että t2992870Jere, 23, ja Aliisa, 20, aloittavat aamunsa Subutexilla tai rauhoittavilla: "Vaikka mä käytän..."
Jere, 23, ja Aliisa, 20, ovat pariskunta, joka aloittaa aamunsa Subutexilla tai rauhoittavilla. Jere on ollut koko aikui582686- 1732365
- 252157
Aku Hirviniemi tekee paluun televisioon Aiemmin hyllytetty ohjelma nähdään nyt tv:ssä.
Hmmm.....Miksi? Onko asiaton käytös nyt yht´äkkiä painettu villaisella ja unohdettu? Kaiken sitä nykyään saakin anteeksi1271899Vielä kerran.
Muista että olet ihan itse aloittanut tämän. En ei silti sinua syyllistä tai muutenkaan koskaan tule mainitsemaan tästä3661865Vain yksi elämä
Jonka haluaisin jakaa sinun kanssasi. Universumi heitti noppaa ja teki huonon pilan, antoi minun tavata sinut ja rakastu881771M nainen tiedätkö mitä
Rovaniemellä sataa nyt lunta, just nyt kun lähden pohjoiseen. Älä ota mitään paineita tästä mun ihastumisesta sinuun, ti161401