Miten pystyn kopioimaan työkirjassa olevan taulukon uuteen työkirjaan siten että makrot jäisivät pois?
Minulla on noin kuusisataa tiedostoa joissa jokaisessa on kaksi tai kolme taulukkoa. Jokaisen työkirjan ThisWorkbook-osassa on makro ja jokaisen työkirjan taulukossa on lisäksi makro. Nyt minun pitäisi saada muutettua ThisWorkbook-osan makro toisenlaiseksi ja saada taulukoissa olevat makrot kokonaan pois.
ThisWorkbook-osan makro ei ole ongelma, ratkaisin asian niin että tein uuden "työkirjapohjan" jonka ThisWorkbook-osassa on uusi makro. Lisäksi tein työkirjan jonka koodi avaa "työkirjapohjan" sekä muokattavan tiedoston. Tämän jälkeen muokattavan tiedoston taulukot kopioidaan "työkirjapohjaan" joka lopuksi tallennetaan samalla nimellä kuin muokattava työkirja mutta vain eri kansioon. Tällä tavalla onnistun siis muuttamaan ThisWorkbook-osan makron mutta taulukoissa olevat makrot menevät tähän uuteenkin työkirjaan ja ne siis pitäisi saada jäämään pois. Onko tähän olemassa keinoa?
Taulukon kopoimiseksi uuteen työkirjaan käytin taulukonvalitsimen takaa hiiren kakkospainikkeella löytyvää "Siirrä tai kopioi..." -toimintoa.
Taulukon kopiointi ilman makroa
11
1114
Vastaukset
- Nimimerkki
Tuo sinun tapasi kopioi noi makrot mukaan, normaali kopiointi ei sitä tehe.
kelpaisiko tämä, aika homma kuitenkin, ( kunde tekisi tuohonkin varmaan koodin)
Valitse kaikki taulukot ( joku näppäin hiirellä klik)
ctrl a (valitsee kaikki solut ) tai Klikkaa vasenta yläkulmaa
Ctrl c
valitse uusi tyäkirjan ekan taulukon eka sarake
Ctrl v- Nimimerkki
Varmuuden vuoksi, pidä huolta että pohjassa on tarpeeksi tyhjiä taulukoita.
Minulla ei ainakaan varoittanut mitään vaikka kopsasin 3 taulukkoa ja kohteena oli vain yksi taulukko, eli kopsasi vain yhden taulukon (ensimmäisen) kolmen sijasta - TapaniK
Olipa yksinkertaista! Yritin alun perin kopioida taulukon valitsemalla sen tarpeelliset solut ja liittämällä ne uuteen taulukkoon, mutta mm. sarakeleveydet eivät muuttuneet sellaisiksi kuin niitten piti. Ei vaikka kokeilin "Liitä Määräten..." ja sieltä kaikki. Vasta kun valitsin Liitä määräten -> sarakeleveydet niin silloin sarakeleveydet muuttuivat mutta muu sisältö luonnollisesti jäi pois. Mutta tuolla tavalla koko taulukon valitsemalla näköjään toimii.
Kiitos paljon ratkaisusta, taidan kuitenkin tehdä Kunden ohjeen mukaan, VBA on niin kiehtovaa ;)
aika pitkällehän oletkin päässyt :-)
taulukon moduuleitahan ei voi poistaa, joten on poistettava sisältö...
ennen tallennusta aja seuraava makro
vaatii referenssin Visual Basic Extensibility ja makrojen suojauksessa täpän kohtaan luota Visual Basic projekteihin luotettavat lähteet välilehdellä.
Sub PoistaKoodit(Työkirja As Workbook, ModuulinNimi As String)
On Error Resume Next
With Työkirja.VBProject.VBComponents(ModuulinNimi).CodeModule
.DeleteLines 1, .CountOfLines
End With
On Error GoTo 0
End Sub
Sub Testi()
PoistaKoodit ActiveWorkbook, "Taul1"
'suorita tarvittaessa muillekin taulukoille
'PoistaKoodit ActiveWorkbook, "Taul2"
'PoistaKoodit ActiveWorkbook, "Taul3"
End Sub- TapaniK
Joo, olin kyllä tyytyväinen kun onnistuin työkirjan koodin muuttamaan, vaikkakin sen voisi kai kelpomminkin hoitaa. Jonkin verran olen VBA:han nyt tutustunut ja semmoisessa vaiheessa menossa että koko ajan oppii jotain uutta. Kokeilemallahan tuota koodia pitää vääntää mutta onpa hauska peli tuo Excel!
Tuota kertomaasi makroa ajattelin kokeilla, mutta mitä tarkoittaa "referenssi Visual Basic Extensibility", ja mistä löytyy tuo "luotettavat lähteet" -välilehti?
En vielä makroa kokeillut mutta tuota Testi-proseduuria vähän muokkasin koska taulukoiden nimet eivät ole samoja eri työkirjoissa. En vielä kokeillut tuotakaan mutta jos makro ei toimi niin kokeilemalla, kokeilemalla:
Sub Testi()
Dim Lomake As Worksheet
For Each Lomake In ActiveWorkbook.Sheets
Lomake.Activate
PoistaKoodit ActiveWorkbook.ActiveSheet
Next
End Sub
Toinen samaan asiaan liittyvä juttu mitä yritin ratkaista mutta en onnistunut, niin yritin saada kaikkien jossakin tietyssä kansiossa olevien tiedostojen nimet Excelin työkirjaan. Yritin sellaista For Each -tyyppistä juttua missä jokainen kansiossa oleva tiedostonimi kirjoitetaan vuorollaan taulukkoon allekkain, mutta en keksinyt miten kansiossa oleviin tiedostoihin voisi viitata samoin kuin tuossa yllä viittaan työkirjan taulukoihin. Onnistuukohan tuollainen? Jos ei, niin kirjoitan tiedostonimet käsin työkirjaan, se täytyy tehdä vain kerran ja on jo helppo juttu... - tarkkana
TapaniK kirjoitti:
Joo, olin kyllä tyytyväinen kun onnistuin työkirjan koodin muuttamaan, vaikkakin sen voisi kai kelpomminkin hoitaa. Jonkin verran olen VBA:han nyt tutustunut ja semmoisessa vaiheessa menossa että koko ajan oppii jotain uutta. Kokeilemallahan tuota koodia pitää vääntää mutta onpa hauska peli tuo Excel!
Tuota kertomaasi makroa ajattelin kokeilla, mutta mitä tarkoittaa "referenssi Visual Basic Extensibility", ja mistä löytyy tuo "luotettavat lähteet" -välilehti?
En vielä makroa kokeillut mutta tuota Testi-proseduuria vähän muokkasin koska taulukoiden nimet eivät ole samoja eri työkirjoissa. En vielä kokeillut tuotakaan mutta jos makro ei toimi niin kokeilemalla, kokeilemalla:
Sub Testi()
Dim Lomake As Worksheet
For Each Lomake In ActiveWorkbook.Sheets
Lomake.Activate
PoistaKoodit ActiveWorkbook.ActiveSheet
Next
End Sub
Toinen samaan asiaan liittyvä juttu mitä yritin ratkaista mutta en onnistunut, niin yritin saada kaikkien jossakin tietyssä kansiossa olevien tiedostojen nimet Excelin työkirjaan. Yritin sellaista For Each -tyyppistä juttua missä jokainen kansiossa oleva tiedostonimi kirjoitetaan vuorollaan taulukkoon allekkain, mutta en keksinyt miten kansiossa oleviin tiedostoihin voisi viitata samoin kuin tuossa yllä viittaan työkirjan taulukoihin. Onnistuukohan tuollainen? Jos ei, niin kirjoitan tiedostonimet käsin työkirjaan, se täytyy tehdä vain kerran ja on jo helppo juttu...Jos muutama sana svenskiä ei haittaa niin tiedostolistojen tekoon löytyy mitä mainioin koodi osoitteesta:
http://www.kentexcel.com/VB-tips.htm
Otsikolla: Skapa en lista över filer och filinformation i en viss mapp med undermappar. - TapaniK
tarkkana kirjoitti:
Jos muutama sana svenskiä ei haittaa niin tiedostolistojen tekoon löytyy mitä mainioin koodi osoitteesta:
http://www.kentexcel.com/VB-tips.htm
Otsikolla: Skapa en lista över filer och filinformation i en viss mapp med undermappar.Yritin tuota ruotsalaista koodia mutta Excelini ei siitä pitänyt vaan töksähti muuttujaa määrittäessä kohtaan Dim FSO As Scripting.FileSystemObject. on mukamas käännösvirhe ja käyttäjän määrittämää tyyppiä ei ole määritetty.
Ohje kertoi että omia tietotyyppejä voi luoda mutta ne on ensin määritettävä Type...End Type -lauseella jne. Meni hiukkasen yli, mutta kiitos kuitenkin vinkistä :) - TapaniK
Kokeilin koodiasi, ja sehän toimi! En löytänyt tuota "Visual Basic Extensibilityä" enkä "luota Visual Basic projekteihin" -täppää, mutta siitä huolimatta koodi toimi. Ainoastaan kun suoritan koodia rivi kerrallaan niin tulee ilmoitus "Ei voi siirtyä keskeytystilaan". Tästä huolimatta taulukon koodi lähtee pois niin kuin pitääkin. Kun käynnistän koodin Suorita-painikkeesta niin ilmoitusta ei tule.
-Nuo asiat kyllä taisit jo tietääkin, kiitos paljon avusta! - tarkkana
TapaniK kirjoitti:
Yritin tuota ruotsalaista koodia mutta Excelini ei siitä pitänyt vaan töksähti muuttujaa määrittäessä kohtaan Dim FSO As Scripting.FileSystemObject. on mukamas käännösvirhe ja käyttäjän määrittämää tyyppiä ei ole määritetty.
Ohje kertoi että omia tietotyyppejä voi luoda mutta ne on ensin määritettävä Type...End Type -lauseella jne. Meni hiukkasen yli, mutta kiitos kuitenkin vinkistä :)kunde oli heittänyt samantyylisen koodin suomeksi aiheen "Tiedostojen lisääminen?" alle. Tuo ainakin toimi - toimi kyllä svenskimalli minulla myös
- TapaniK
tarkkana kirjoitti:
kunde oli heittänyt samantyylisen koodin suomeksi aiheen "Tiedostojen lisääminen?" alle. Tuo ainakin toimi - toimi kyllä svenskimalli minulla myös
Huomasin Kunden vastauksen tuohon toiseen kysymykseen ja sieltä keksin että piti lisätä se scripting-systeemiruksi. Sen lisäämisen jälkeen kumpikin koodi toimii moitteettomasti :)
- TapaniK
Kuten jo kerroin, koodi toimi kun testasin sitä, mutta "aidossa ympäristössä" en saanutkaan sitä toimimaan. Syykin jo löytyi osoitteesta http://www.cpearson.com/excel/vbe.htm
Kaikkien työkirjojen koodi on suojattu ja kuten em. sivulla on mainittu: "There is no programmatic way to unlock a locked project." Eli minun täytyy kiertää ongelma jollakin muulla tavalla. Paljon kiitoksia kuitenkin mainiosta koodista!
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Zelenskyi ei suostunut nöyrtymään Trumpin ja Vancen edessä, siksi meni pieleen
Trumppia täytyy imarrella, silloin homma toimii aina. Tähän Zelenskyi ei suostunut.6565360Harmi että
Pidät niin vastenmielisenä. Olen minäkin välissä ollut ihan kamala sinulle ja ihmetellyt miten voit minusta tykätä. Se o212367- 1141607
Trump näytti slipoveri-ukolle kaapin paikan!
Slipoveri-ukko Ukrainan presidentti Volodimir Selenskyi meni tapaamaan valkoiseen taloon Trumppia ilman kunnon tuliaisia2321564- 931477
En rehellisesti usko et oisit
Sekuntiakaan oikeasti mua kaivannut. Tai edes miettinyt miten mulla menee. Jotenkin todennäköisesti hyödyt tästäkin jos231416Nainen, olet jotenkin lumoava
Katselen kauneuttasi kuin kuuta, sen loistoa pimeässä. Sen kaunis valo on kaunista sekä herkkää ja lumoavaa. Olet naisel681175Näin sinusta taas unta!
Unessa olin pakahtuneesti rakastunut sinuun. Olimme vanhassa talossa jossa oli yläkerran huoneissa pyöreät ikkunat. Pöly91153Kun Zele jenkeissä kävi
Enää ei Zele saanutkaan miljardeja ilmaista rahaa niin helposti. Läksyttivät oikein kunnolla pientä miestä ja joutui poi3101116- 721047