Makro lakannut toimimasta

-Pasi-

Minulla on eräässä konversio-ohjelmassa makro, jolla työkirjan välilehdillä olevat koodit poistetaan. Tämä on tarpeen siksi että erään sovelluksen vanhemmassa versiossa koodia on jokaisen välilehden mukana mutta uudemmassa versiossa koodi on kaikille välilehdille yhteinen (koodi sijaitsee ThisWorkbook) ja vanhan version välilehdet on muokattava uuteen sopivaksi. Koodinpoistokoodi on alla olevan mukainen:

Sub Sub_PoistaTaulukonKoodit()

' Poistetaan taulukoiden moduulissa olevat koodit
' - By Cpearson -

Dim sSheet As Object, strName As String

For Each sSheet In Sheets
Select Case UCase(sSheet.Name)
Case "2004", "2005", "2006", "2007"
strName = sSheet.CodeName

With ActiveWorkbook.VBProject.VBComponents(strName).CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
End Select
Next sSheet
End Sub

Aiemmin tämä on toiminut moitteetta mutta nyt ohjelman suoritus kaatuu kohtaan "With ActiveWorkbook.VBProject.VBComponents(strName).CodeModule" virheilmoituksella "Run-time Error '1004' Visual Basic-projektin ohjelmallista käyttämistä ei ole tunnistettu luotettavaksi".
Nyt kun klikkaa "Debug" ja yrittää suorittaa rivin, tulee herja "Run-time error '1004' Method 'VBProject of object '_Workbook' failed"

En pariin vuoteen ole yllä olevaa koodia tarvinnut, ja mikä edellisestä kerrasta on muuttunut niin koneeseen on pitänyt palauttaa tehdasasetukset ja asentaa kaikki ohjelmat uudestaan. Excelin versio onsama kuin ennenkin, eli 2002.

Olisiko ongelma nyt siinä että Visual Basicin "Tools" -> "References" puuttuu joku tarpeellinen palikka?

5

286

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • -Pasi-

      Löysin tuon samaisen koodin jossa alussa oli huomautuksena:

      Needs Reference Set To _"Microsoft Visual Basic For Applications Extensibility"

      mutta tuollaisessa kohtaa minulla täppä kyllä on. Itse asiassa minulla on "Microsoft Visual Basic For Applications Extensibility 5.3", eli ilmeisesti joku versionumero lopussa.

    • laita se suurimmalla numerolla oleva referenssi käyttöön.
      Joku referenssi siiinä koneessa on muuttunut. Jos referenssi puuttuu niin se herjaa puuttumista. Ehkäåä se koodi olisi parasta olla normaalimoduulissa eikä This Workbook moduulissa?

      • -Pasi-

        Kiitos Kunde vastauksesta :)

        Nyt toisella koneella löysin tosiaan tuolta viittauksista "Microsoft Visual Basic For Applications Extensibility" sekä "Microsoft Visual Basic For Applications Extensibility 5.3" (ei tietenkään peräkkäin aakkosjäjestyksessä listalla) ja testasin koodia joka tässä koneessa toimikin olipa täppä kummassa viittauksessa tahansa. Kokeilen illalla vielä toisella koneella onko siinä vaikutusta missä kohtaa täppä on. Tässä koneessa jossa koodi toimii (Excel 97), on se harmi että virustorjunta kuvittelee koodin olevan virus ja tuhoaa sen kyselemättä ;)

        Yllä oleva koodinpoistokoodi toki on moduulissa, mutta poistettavaa ja korvattavaa koodia en moduuliin voi laittaa koska tapahtumat ovat Worksheet_BeforeDoubleClick ja Worksheet_BeforeRightClick.

        Alun perin DoubleClick- ja RightClick koodit olivat välilehden mukana, mutta kun välilehti kopioitiin uudeksi niin myös koodi kopioitui. Tämän takia muutin koodin ThisWorkbookiin ettei sama koodi turhaan toistuisi ja kasvattaisi tiedostokokoa. Välilehtiä yhteen tiedostostoon tulee yksi lisää periaatteessa vuosittain ja tiedostoja on himpun alle kaksi tuhatta.

        Worksheet_BeforeDoubleClick ja Worksheet_BeforeRightClick tapahtumat eivät tee muuta kuin käynnistävät toisessa työkirjassa olevan makron. Tämä siksi että noiden parin tuhannen työkirjan koodi olisi mahdollisimman lyhyt ja tiedostokoko mahdollisimman pieni.


    • hehehe...
      ehkäpä Kundepuu (alias Kunde auttaa sua kaupallisesti -maybe too heavy to free)...

      • -Pasi-

        En kerta kaikkiaan keksinyt miksi konvertointi ei toimi 2002:ssa joten käytin oikotietä ja asensin Excel 97 koneelle ja sillä sain konvertoinnin tehtyä. Ihmetyttää vaan miksi ei 2002 toiminut kun aikaisemmin se siinä on toiminut.

        Kiitos Kunde vastauksistasi.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Suomalainen tutkimus paljasti oudon asian vasemmistolaisista - he häpeävät itseään

      Kyllä, asia on faktaa. Suomalainen tutkimus osoittaa, että vasemmistolaisina itseään pitävät kansalaiset häpeävät itseää
      Maailman menoa
      138
      3799
    2. Sosialismia Tampereella: Virallinen ilmiantolinja avautuu kaupungissa

      Nyt siis mennään mansessa ihan justiinsa samaan malliin kuin entisessä Neuvostoliitossa, jossa saattoi ilmiantaa naapuri
      Maailman menoa
      336
      2944
    3. Tätä et nähnyt tv:ssä: Frederik paljastaa - Totuus "haisevasta jäynästä" pehtoorille Farmilla

      Frederik veti ns. herneen nenään ja päätti kostaa pehtoorille. Mitäs mieltä olet Frederikin "aamutoimista"? Lue jutt
      Tv-sarjat
      8
      1845
    4. Ellen Jokikunnas paljastaa kyynelehtien Ralph-pojasta: "Apua..."

      Ellen Jokikunnaksen ja hänen puolisonsa Jari Raskin perheestä ja taloprojektista Italiassa kertova Unelmia Italiassa -sa
      Suomalaiset julkkikset
      5
      1588
    5. Oho! Vappu Pimiä teki "röyhkeän" teon - Onko sopivaa paljastaa tämä MasterChef-sarjasta?

      Vappu Pimiä on astunut MasterChef Suomi -keittiöön ja liittynyt ohjelman legendaariseen tuomaristoon Helena Puolakan ja
      Tv-sarjat
      4
      1069
    6. Mun kaikkialta häviäminen

      Ei liity sinuun. Muista se. ❤️ Mua kiusataan enkä mä enää jaksa.
      Ikävä
      71
      914
    7. Kaste tulisi tehdä apostolisella tavalla Ap. t. 2:38 mukaan

      Apostolit eivät kastaneet kolminaisuuden nimellä vaan Jeesuksen alkuperäisen käskyn mukaisesti: Ap. t. 2:38 Niin Pietar
      Kaste
      38
      854
    8. Onko teillä

      minkä tyyppisiä seksifantasioita kaivattunne kanssa?
      Ikävä
      44
      754
    9. Kuhmossa rallit alkoi ennen aikojaan

      Paettiin polliisia törkeästi? Se tuo rallikiima on näemmä saavuttanu paikalliset tommi mäkiset kiljupäissään auton rat
      Kuhmo
      22
      698
    10. Inhottaa ajatus siitä

      Miten monia olet pannut.
      Ikävä
      56
      697
    Aihe