Taulukon kopiointi ilman makroa

TapaniK

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.

11

1096

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. Hetken jo luulin, että en ikävöi sinua koko aikaa

      Mutta nyt on sitten taas ihan hirveä ikävä jotenkin. Tiedätköhän sinä edes, kuinka peruuttamattomasti minä olen sinuun r
      Ikävä
      34
      5308
    2. Outoa että Trump ekana sanoutui irti ilmastosopimuksesta

      kun Kaliforniaa riepottelee siitä johtuvat tuhoisat maastopalot. Hirmumyrskytkin ovat USA:ssa olleet tuhoisia.
      Maailman menoa
      484
      2474
    3. Eli jos toisen hiki haisee ns. omaan nenään siedettävältä

      Se kertoo hyvästä yhteensopivuudesta. Selvä! Olet mies minun. 🫵🥳
      Ikävä
      27
      1219
    4. JOKO OLETTE KUULLET, MITÄ KIURUVEDELLÄ ON SATTUNUT!

      Oletteko jo kuulleet, mitä Kiuruvedellä on sattunut, voi hyvänen aika? Aivan viime tuntien aikana olisi sattunut, jos t
      Kiuruvesi
      5
      992
    5. En tiedä miksi kerroin sinusta täällä

      Siksi kai, kun meidän juttu on niin alkuvaiheessa, etten voi vielä puhua siitä kenellekään.
      Tunteet
      16
      947
    6. Oho! Queen of Fucking Everything villitsee - Ikean sininen luottotuote nappasi hervottoman idean!

      Ikea on ajan hermoilla! Aika hauska idea ja Queen of Fucking Everything -ajatus toimii hyvin tässäkin. Lue lisää: http
      Mainonta ja markkinointi
      7
      924
    7. Nainen, tunnetko saman kuin minä

      Syvän yhteyden välillämme, silloin kun se tunne tulee. Niinä hetkinä minulla on niin järjettömän suuri ikävä sinua. Ikäv
      Ikävä
      41
      802
    8. HS - Yllätyskäänne Eagle S -tutkinnassa, Supo pitää onnettomuutena

      HS:n mukaan esitutkinta joudutaan todennäköisesti keskeyttämään syyttäjän päätöksellä mikäli näyttöä tahallisuudesta ei
      Maailman menoa
      193
      774
    9. Ei ois kyllä kivaa

      Jos miestä ei kiinnostais ollenkaan minun seura. Aina huitelis ties missä tai olis omassa seurassaan. Kaikki muu ois kiv
      Ikävä
      3
      764
    10. Siellä taas pyörin

      Nimittäin sinun paikkakunnalla mies. Mutta en vieläkään nähnyt sinua. Miksi sinä olet minulta aina piilossa?
      Tunteet
      8
      713
    Aihe