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?
Makro lakannut toimimasta
5
266
Vastaukset
- -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
Keskisarja loisti A-studiossa, vauhkoontunut Sofia Virta munasi itsensä
Keskisarja taas puhui 100% faktaa maahanmuuttoon liittyen. Kokoomuksen Kaumalta tuli pari hyvää puheenvuoroa, joskin muu5522800Janni Tikkanen ohjattiin miesten pukuhuoneeseen
Vai olisko sittenkin Janne Tikkanen? Jos siellä jalkojen välissä on miesten killukkeet, mieshän tämä Janni on. Ja kuuluu892542Sä olet epävakaa
tai ainakin yrität onnistuneesti vaikuttaa siltä. Ei sun kanssa uskalla ruveta yhtään mihinkään, menis hommat ojasta all211611Rakastan ja ikävöin sinua
Ei helpota tämä ikävä millään. Pelkäsin että tämä ajanjakso tulee olemaan juuri näin vaikea. Siksi halusin ennen tätä pä771542Tiedän ettet tehnyt tahallasi pahaa
Asiat tapahtuivat, ristiriidat ovat meitä vahvempia. Olemmeko me niin vahvoja, että selviämme tästäkin vielä? Aika paljo1101480- 691394
Mieti miten paljon yritin
Löytää yhteyttä kanssasi uudelleen sen väärinymmärryksen jälkeen. Koen etten tullut puoleltasi hyvin kohdelluksi mies😔421385- 271298
Teräväkielinen Virta jauhotti totaalisesti sössöttävän Keskisarjan
Harvoin on noin suvereenia jauhotusta A-studiossa nähty. Ja minä äänestän demareita, joita ei oltu paikalle edes kutsut3091276Haluatko tietää totuuden?
Olen kyllästynyt sinuun. Et herätä enää mielenkiintoa. Samat jutut x 100. Kuten narskuilla aina. Samalla tunnen myötätun901173