Terve!
Olis sellainen ongelma että haluasin lisätä exceliin mscomm1 ja ie timerin. Olen ottanut tiedostot vanhasta koneesta talteen ja yrittänyt lisätä niitä windows system kansioon. Kopiointi onnistuu hyvin mutta sitten kun käynnistän excel ohjelmani uudestaan en näe kirjoittamiani koodeja jota olen tehnyt visualilla ja en pääse koko tekemääni ohjelmaan käsiksi ja loppujen lopuksi koko excel kaatuu ja yrittää korjata itsestään mutta ei tule mitään siitä. Käytän office 2003 ja käyttis on win xp.
Osaisiko kukaan kertoa miksi tuossa nuon käy ? mscomm1 ja ietimer ovat välttämättömiä että ohjelmani toimii.
Moi efeko!
1. Microsoft MSCOMM32.OCX toimitettiin Microsoft Visual Basic (VB4-VB6) pakettissa ja vaati toimiakseen lisenssin. Eli ei siis riitä, että lataat ko. hilpakkeen esim. netistä ja rekisteröit regsvr32.exe -ohjelmalla. Jos lisenssi on kunnossa niin hilpake toimii 32-bittisessä Windows järjestelmässä myös Excel/VBA projektissa heittämällä. Mitä tulee IeTimer.ocx kontrolliin niin unohda se tyystin.
2. Et pysty avaamaan VBA:lla mitään Visual Basic projektia suoraan. Jos VB-viritelmäsi on tehty VB4-versiolla niin et saa koodia näkyviin "selväkielisenä" tekstinä johtuen siitä, että VB4 generoi tallennettaessa lomakkeiden/moduulien koodit binaariksi. Elikäs jos asia oli niin, että kyseessä oli VB4:llä väännetty viritelmä niin saat em. tekstimuotoisen koodin talteen avaamalla ko. VB-projektin VB4:llä ja kopioimalla copy/paste kombinaatiolla kunkin moduulin koodin esim. muistioon ja tallentamalla edelleen omaksi tekstitiedostoksi.
3. Muistaakseni VB6 pystyy kääntämään VB4-projektin binaarit VB6-muotoon, mutta en muista vaatiiko VB6 hommaan jonkin erityisen SP-paketin asennuksen. VB6 muutti kuitekin kaikki ne kontrollit PictureBox kontrolleiksi, joita se ei tunnistanut.
4. Jos kyseessä on myöhempi VB versio (VB5/VB6) niin voit avata projektin lomake- ja moduulitiedostot suoraan muistiolla ja kopioida aliohjelmien ja funktioiden koodit suoraan VBA-projektiisi, kunhan jätät lomaketiedostojen alussa näkyvät ohjausobjektien määritykset huomiotta ja sijoitat ohjausobjektien tapahtumakoodit vastaavien kontrollien tapahtumiin VBA-projektissasi.
5. Jos haluat VBA-projektiin Timer-kontrollin niin netistä löytyy ns. kolmannen osapuolen ActiveX viritelmiä, mutta Excel/VBA herjaa niiden luotettavuudesta (ei sinällään mitään merkitystä) aina projektin avaamisen yhteydessä.
Tässä esimerkki toimivasta ajastusviritelmästä Excel/VBA-projektiin...
'ThisWorkbook Private Sub Workbook_Open() If Not UserForm1.Visible Then UserForm1.Show 0 End If End Sub
'Module1 Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) Public Sub VBATimer(ExitEnabled, Optional ms As Long) Static ExitTimer ExitTimer = Not ExitEnabled Dim i As Long 'testi Do While Not ExitTimer: DoEvents Sheets("Taul1").Cells(1, 1).Value = i Sleep ms If i < 100000000 Then i = i + 1 Loop End Sub
'UserForm1 (ShowModal: False) Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) VBATimer True, 500 '(millisekuntia) End Sub Private Sub CommandButton2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) VBATimer False End Sub Private Sub UserForm_Terminate() VBATimer False End Sub
-Nea-
neau33 kirjoitti:
Jos VB-viritelmäsi on tehty VB4-versiolla niin et saa koodia näkyviin "selväkielisenä" tekstinä johtun siitä, että VB4 generoi tallennettaessa lomakkeiden/moduulien koodit binaariksi.
Elikäs jos asia oli niin, että kyseessä oli VB4:llä väännetty viritelmä niin saat em. tekstimuotoisen koodin talteen avaamalla ko. VB-projektin VB4:llä ja kopioimalla kunkin moduulin koodin esim. muistiolla omaksi tekstitiedostoksi.
Hei Nea. Esiin tuomasi seikka, eli vanhojen VB:iden binäärimuodot on hyvä huomio ja varmasti on hämmästyttänyt monia vanhan koodin uudelleenkäyttöä harkitsevia.
Olisin kuitenkin puuttunut muutamaan viestissäsi olleeseen epätarkkuuteen. VB4 nimittäin tallettaa koodi- ja projektitiedostot ihan tekstimuodosssa (ainakin 32-bittinen versio). Lisäksi mukana tulee sellainen ohjelma kuin VBTRANS.EXE (Visual Basic Binary to Text Translator), eli ilmeisesti sen avulla pystyy muuntamaan vanhat binäärimuotoiset koodi-tiedostot tekstimuotoon.
Siinä viimeisessä binäärimuotoisia tiedostoja käyttävässä (olisiko sitten VB3) käyttäjä sai myöskin valita, haluaako tallettaa tiedostot teksti vai binäärimuodossa. Eli editorista notepadiin kopioiminen ei ollut ainoa tai välttämättä paraskaan keino.
Kiitoksia paljon vastauksistanne taidanpa päätyä siihen että lähden tekemään ohjelmaa uudestaan muilla menetelmillä!
Aihe on jo aika vanha, joten et voi enää vastata siihen.