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

1151

    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. Kuka pistetty kylmäksi

      Ketähän joutunu puukkohipan uhriksi? Tietääkö kukkaan?
      Kajaani
      31
      3040
    2. Mietin että

      Onko tarinallamme vielä luvussa tilaa kohtaamiselle vai jääkö se tähän.
      Ikävä
      95
      1626
    3. Kaipaatko sinä

      Yhtään meidän katseita
      Ikävä
      127
      1474
    4. Mira Luoti ja Julkkisselviytyjät 2017 - Ketä kuumottaa juuri nyt?

      HS: Tässä ohjelmassa Mira Luoti kertoi kokeneensa seksuaalista väkivaltaa "PMMP-yhtyeen Mira Luoti kertoo Ylen uudessa
      Kotimaiset julkkisjuorut
      38
      1316
    5. Oletko samaa mieltä

      Että on parempi olla erillään?
      Ikävä
      90
      1247
    6. Törkeä eläinsuojelurikos Sonkajärvellä

      Pohjois-Savossa Sonkajärvellä noin 40 kissaa ja reilut 10 koiraa on jouduttu lopettamaan kaltoinkohtelun vuoksi, kertoo
      Sonkajärvi
      26
      1109
    7. Kirjallinen varoitus

      On annettu eräälle henkilölle. hyssytellään kuitenkin asiasta
      Äänekoski
      54
      1018
    8. Julkisuuden henkilön päiväin päätös

      Sitä vaan, että kyllä nyt kaikki tietävät kuka oli Eemeli Peltola (kansanedustaja, joka päätti päivänsä eduskuntatalossa
      Sinkut
      270
      971
    9. MESTARI SIVALTAA JÄLLEEN

      https://www.is.fi/politiikka/art-2000011436243.html Suomen ainoa Mestari lausuu tosiasiat Sannasta , Tuomiojasta ja hil
      Kajaani
      230
      958
    10. Jotkut ihmiset pelkäävät syöpää sairastavaa

      On hauskaa, kun kertoo jollekin, että "minulla on syöpä". Jotkut käyttäytyvät kuin se olisi tarttuva tauti. Eivät uskall
      Sinkut
      125
      950
    Aihe