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
229
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
- 1763501
Olet kyllä vaarallisen himokas
Luova, kaunis, määrätietoinen, pervo, mielenkiintoinen, kovanaama, naisellinen ja erikoinen.1122259Kun viimeksi kohtasitte/näitte
Mitä olitte tekemässä? Millainen ympäristö oli? Löydetään toisemme...1462257- 992077
- 901734
Anna vielä vähän vihreää valoa
Teen sitten siirtoni, nainen. Tiedän, että olet jo varovaisesti yrittänyt lähestyä, mutta siitä on jo aikaa. Jos tunnet281698- 781222
Miksi homous puhuttaa konservatiiveja vuodesta toiseen?
Kysymykseen on vastattukin Kansanlähetyksen osalta: "Miksi sukupuoleen ja seksuaalisuuteen liittyvät asiat ovat konserv2951187- 2271150
- 74988