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

1163

    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. S-kauppa nosti hintoja, K-kauppa laski

      Elintarvikkeiden arvonlisävero laski vuodenvaihteessa 13,5 prosenttiin. S-kauppa siirsi alennuksen suoraan katteisiin pi
      Maailman menoa
      35
      5255
    2. Vilma Nissinen pyytää anteeksi rasistisia lausuntojaan

      Nöyrtyi kuten persut yleensäkin. On kyllä noloa tuollainen vätystely, kun ei ole miestä seisoa omien lausuntojensa takan
      Maailman menoa
      287
      5104
    3. Hiihtäjä Vilma Nissisen kommentit aiheutti paniikkia

      ja hernettä vedettiin nenään. Nissinen kertoi torstaina haastattelussa, kun häneltä kysyttiin, että tykkääkö hän hiihtä
      Maailman menoa
      63
      4505
    4. Riikka Purra: "Kokoomus haluaa leikata pienituloisten etuuksista - Se ei meille käy"

      Näin vakuutti persujen Purra edellisten eduskunta vaalien alla,. https://www.ku.fi/artikkeli/4910942-kun-uudessa-videos
      Maailman menoa
      69
      2435
    5. Sandels tölkin hinta nousi 1,29 eurosta 1,32 euroon

      Mitähän järkeä valtiolla on verottaa tuotakin elintarviketta niin kovasti, että on järkevämpää käydä hakemassa ulkomailt
      Köyhyys
      47
      1877
    6. Nyt ottaa persua pattiin: sähköauto joulukuun myydyin

      🤣 prööt prööt pakoputkellaan pörisevää persua ottaa nyt saamaristi pattiin, kun paristoilla kulkeva sähköauto on noussu
      Maailman menoa
      28
      1824
    7. Ovatko Perussuomalaiset kommunisteja?

      Toiset sanovat että ovat, toiset sanovat että eivät. Ainakin heillä on paljon sen aatteen piirteitä, koska haluavat kont
      Maailman menoa
      24
      1782
    8. Lindtmanin pääministeriys lähenee päivä päivältä

      Suomen kansan kissanpäivät alkavat siitä hetkestä, kun presidentti Stubb on tehnyt nimityksen. Ainoastaan ylin tulodesi
      Maailman menoa
      80
      1728
    9. Ikävä uutinen uudesta Unelmia Italiassa kaudesta - Iso pettymys tv-katsojille!

      Unelmia Italiassa -sarja kertoo Ellen Jokikunnaksen perheen elämästä Suomessa ja Italiassa. Nyt Ellen on kertonut tuleva
      Tv-sarjat
      16
      1672
    10. Oon kyllä välillä ollut susta

      Nainen huolissani, en oo niin sydämetön mitä tunnut ajattelevan
      Ikävä
      105
      1496
    Aihe