Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: mscomm32

Sivun loppuun

Arto [10.06.2011 17:02:56]

#

oiskos kenelläkään tietoa kuinka saadaan lisättyä mscomm32 VBa:han??
latasin mscomm32.ocx:n windows/syswow64 hakemistoon. sitten avasin cmd:n järjestelmänvalvojana ja kirjoitin seuraavat tekstit sinne.
cd..
cd syswow64
regsvr mscomm32.ocx


tämän jälkeen tuli ilmoitus että rekisteröinti onnistunut. nyt kun yritän liittää formille tämän mscomm jutun niin tule herja "Kohde ei ole luotettu määritetyn toiminnon suorittamiseen".

ErroR++ [13.06.2011 11:00:27]

#

Hei laita Project-valikosta Add Reference ja valitse Browse, selaa sinne
C:\windows\syswow64\ ja valitse mscomm32.ocx ja paina OK. Sitten tee lauseke

Imports mscomm32

. Kerro toimiiko.

Arto [13.06.2011 16:02:43]

#

compile error sub or funktion not defined.

tulee siinä vaiheessa kun klikkaa formia.

Private Sub UserForm_Click()
Imports mscomm32
End Sub

tools/references valikosta laitoin ruksin mscomm32.ocx:n päälle.

neau33 [13.06.2011 17:22:14]

#

Moi taas Arto!

1. Näin tarkistat VBA-ympäristössä, että mscomm32.ocx ActiveX komponentti on rekisteröity oikein!

Private MyComm
Private Sub UserForm_Activate()

    Set MyComm = CreateObject("MsCommLib.MsComm")

    If Not MyComm Is Nothing Then
        MsgBox "Jee!"
        'Jos tämän jälkeen tökkii niin lisenssi ei ole kunnossa!
        '...
        Set MyComm = Nothing
    End If

End Sub

2. Koska täältä löytyvä API toimi moitteetta 32 bittisessä XP:ssä mutta tökii 64 -bittisessä Windows 7:si niin on mitä todennäköisintä, että myös mscomm32.ocx tökii koska ko. ActiveX controlli käyttää tasan tarkaan hyväkseen samaista em. API'a (kernel32)! Tökkiminen johtuu siitä, että osoittimet (pointers) on laajennettu 64-bittisiksi

Arto [13.06.2011 17:34:26]

#

no nyt männöö jo oovoks...
tämä ohjelman pätkä kertoo että "jee!" mutta jos yritän tuosta komponentti valikosta vetää sen tuohon formille niin tulee herja. "kohde ei ole luotettu määritetyn toiminnon suorittamiseen." mutta siis luoko tuo toiminto sen tuohon ohjelmaan eli voinko antaa sille tuon jälkeen komentoja??
testaan... =)

Arto [13.06.2011 19:07:25]

#

jaa jäipäs tuo kohta 2. lukematta. no se voi tietysti olla näinkin. onkohan olemassakaan mitään "mscomm64" juttua(freewarena). joku löyty netistä mutta maksaa 150$ ei ktos..

neau33 [13.06.2011 21:17:28]

#

Moi taas Arto!

Väänsin .NET Framework (4.0) System.IO.Ports luokasta VBACommPort 64-bit Wrapperin, jota voit halutessasi testata...viritelmä on impattavissa täältä

Arto [14.06.2011 11:32:44]

#

oho...
juups eli tuossa vaiheessa kun yritän avata tuon objectbrowserin niin tulee ilmoitus excel lakkasi toimimasta.

onks toi homman rekisteröinti nyt sillä selvä kun painan tuota registerVBAcommnettypelib.bat tiedostoo?? ja onko noilla väliä mihin kansioon tallentaa tuon vbacommnet64.tlb ja dll tiedostot?? mun käsittääkseni just se ohjaustapaaneeliin/ympäristömuuttijiin lisättävät hakemisto polku pitäs auttaa tähän.

ajattelin vaan tätä syswow64 kansioo jossa yleensä nämä dll ja ocx tiedostot on...

Arto [14.06.2011 13:48:58]

#

tulipahan vaan ihan ohimennen mieleen....
että kuinkas tää käyttäytyy kun office 2010 on 32 bit versio... pitäskö vaihtaa 64 bittiseen??

neau33 [14.06.2011 15:53:28]

#

Moi taas Arto!

Unohda VBACommNET.dll & vbacommnet64.tlb. Elikä jos sait rekisteröityä niin poista rekisteröinnit ja deletoi filut syystä, että vbacommnet64.tlb tyypikirjasto ei tue 32-bittistä automaatiota.

Arto [14.06.2011 17:11:49]

#

no toimiikos se jos isken 64 bittisen officen tähän koneeseen?

neau33 [14.06.2011 17:53:45]

#

Moi taas Arto!

Lataa täältä GRMSDKX_EN_DVD.iso, pura paketti ja asenna (kaikki) koneellesi. Etsi sitten kansiot ..\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools & ..\Microsoft.NET\Framework\v4.0.30319 ja lisää Windowsin (ohjaustapaaneeliin/ympäristömuuttujiin) ympäristömuuttujan Path rimpsun perään polut (koko polku) ko. kansioihin. Ilmoittele niin neuvotellaan sitten lisää...

Arto [14.06.2011 18:34:43]

#

joops!
asensin koneelle 64 bittisen officen. nyt sain auki sen objectbrowserin ja sieltä sen vbacommnet:in. toimiiko nealla sun ilmoittamasi @posti??

Arto [15.06.2011 07:59:24]

#

huomenta taasen...
nyt on netframen toolboxi tai joku semmonen asennettuna ja vbacommnet poistettu =)

neau33 [15.06.2011 13:08:30]

#

Moi taas Arto!

Toimiiko..?

neau33 [15.06.2011 13:40:27]

#

Heippa taas!

Mikäli jotakuta vielä kiinnostaa .NET 4.0 sarjaporttiviritelmät 32-bittisessä Windowsissa/Excelissä niin täältä voi impata wrapperin asennusohjeineen sekä testiohjelman (Excel 2003).

Arto [15.06.2011 14:04:42]

#

ei toimi ei... kohta puoliin alan taasen asentaa 32 bittistä vai onko vinkkejä kuinka 64 saa toimimaan

neau33 [15.06.2011 15:47:28]

#

Moi taas Arto!

Mikäli 64-bittinen Office on vielä koneellasi ja asensit Microsoft Windows SDK for Windows 7 and .NET Framework 4 (GRMSDKX_EN_DVD.iso) paketin niin testaa vielä tämä

Arto [15.06.2011 21:43:02]

#

nyt herjaa että cacuutil puuttuu koneelta. mutta sehän oli jossain näistä ed viesteissä. etsin sen... ja kun cacutil löytyy niin nyt puuttuu tämmönen filu...

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe not found

ja sitten vielä se hauskempi juttu. tuo tiedosto RegAsm.exe löytyy juuri tuolta mistä tuo polku näyttää.

neau33 [15.06.2011 22:41:54]

#

Moi taas Arto!

Lataa uudestaan päivitetty NetComm64Test.zip paketti, yritä asennusta ja anna palautetta

Arto [15.06.2011 22:55:20]

#

nii nyt toimii siihen asti kun avaan tuon exel testi ohjelman

värjää tän rivin siniseks ja herjaa. "Can't find project or library"

Dim MyComm As NetComm64.CommClass

juu sitten tuolla References valikossa lukee tämmönen rivi:
MISSING: .NET 64 Com port communication 4.0 for VBA
ja ruksi on tän rivin edessä olevassa laatikossa.

neau33 [15.06.2011 23:01:43]

#

Moi taas Arto!

mene takas sinne VBA-editorin References valikkoon, klikkaa Browse, etsi \Windows\System32 hakemistosta NetComm64.tlb ja tuplaklikkaa kuvaketta...jos ei löydy niin etsi \windows\syswow64 -hakemistosta...

Arto [15.06.2011 23:07:40]

#

joo katos ku ei mulla löyry koko koneelta tommosta .tlb tiedostoo... NetComm64.dll löytyy

neau33 [15.06.2011 23:54:30]

#

Moi taas Arto!

Kokeile vielä kerran elikä lataa taas päivitetty .zip paketti edellisestä linkistä, pura ja asenna uudestaan...jos ei sitten toimi niin ei sitten toimi, minulla kyllä toimii...
Edit: kun olet ladannut paketin ja purkanut sen niin avaa komentokehte, siirry kansioon, johon purit matskun, ja suorita Install_NetComm64_dll.bat komentokehotteesa niin näet missä mahdollisesti tökkii jos tökkii...

Arto [16.06.2011 09:12:29]

#

joo ei...
voisik sää tai joku laittaa ton netcomm64.tbl tiedoston laittaa johkin imuroitaviks?? sitä se nyt herjaa...

neau33 [16.06.2011 09:25:02]

#

Moi taas Arto!

1. Ei ole mitään hyötyä latailla NetComm64.tlb filua, koska asennusohjelman pitäisi (regasm.exe) luoda ko. tyyppikirjasto samassa yhteydessä, kun NetComm64.dll assembly on rekisteröity GAC:een (Global Assembly Cache) ja assemblyn tyypit on rekisteröity windowsin rekisteriin.

2. Pura edellinen asennus ja deletoi filut + lataamasi .zip paketit!

3. Lataa tämä ja suorita asennus uudestaan.

Arto [16.06.2011 09:43:21]

#

juu... sama juttu missing: .net......

tuota tuota... testailin tässä VB6 prof versiota. siinä sain toimimaan mscomm:in

kuinkas saan luettua ja tallennettua tietoo vb6:lla exel taulukkoon??

neau33 [16.06.2011 10:11:07]

#

Moi taas arto!

lataa nyt täältä vielä kokeeks set .tlb filu.

Arto [16.06.2011 11:02:10]

#

no nii taas päästiin pari riviä pitemmälle. =)

Private Sub UserForm_Activate()

    Static IsInitialized As Boolean

    If Not IsInitialized Then

        DoEvents

        Set MyComm = New NetComm64.CommClass
        cboRates.List = MyComm.Rates
        cboPorts.List = MyComm.Ports

        If cboRates.ListCount > 0 Then
            cboRates.ListIndex = 0
            tagRate = 0
        End If

        If cboPorts.ListCount > 0 Then
            cboPorts.ListIndex = 0
            tagPort = 0
        End If

        IsInitialized = True

    End If

End Sub

toi

Set MyComm = New NetComm64.CommClass

rivi antaa virheen "active X component can't create object."

neau33 [16.06.2011 11:12:18]

#

Moi taas Arto!

avaa windowsin komentokehote ja suorita komennot:
CD C:\WINDOWS\System32

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\x64\gacutil.exe" /i NetComm64.dll

"C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" NetComm64.dll /tlb:NetComm64.tlb

ja kokeile mitä tapahtuu & ilmoittele mitä tapahtui...

neau33 [16.06.2011 11:47:32]

#

Moi taas Arto!

Toho VB6 jutskaan:
Ensin lataat ja asentelet seuraavat kapulat:
Service Pack 6 for Visual Basic 6.0
Microsoft Access Database Engine 2010 Redistributable

ja sitten VB6:ssa klikkaa Project->Refernces ja etsi listalta Microsoft Excel xx.0 Object Library (xx = versiosi numero).

Private xlApp As Excel.Application
Private xlBook As Excel.Workbook
Private xlSheet As Excel.Worksheet

Private Sub Form_Load()

   Set xlApp = New Excel.Application
   xlApp.Visible = True
   Dim wkName As String
   wkName = Environ("userprofile") & "\Työpöytä\ComportTest.xls"
   If Dir(wkName) <> "" Then
      xlApp.Workbooks.Open (wkName)
      Set xlBook = xlApp.Workbooks("ComportTest.xls")
   Else
      xlApp.Workbooks.Add
      Set xlBook = xlApp.Workbooks(1)
      xlBook.SaveAs wkName
      xlBook.Worksheets.Add
   End If

   If Not xlBook Is Nothing Then
      Set xlSheet = xlBook.Worksheets("Taul1")
      xlSheet.Visible = xlSheetVisible
   End If

End Sub

Private Sub Command1_Click()

   'testi...
   If Not xlSheet Is Nothing Then
      xlSheet.Cells(1, 1).Value = "Moro1"
      xlBook.Save
   End If

End Sub

Private Sub Form_Unload(Cancel As Integer)

    On Error Resume Next
    Set xlSheet = Nothing
    xlBook.Close
    Set xlBook = Nothing
    xlBook.Application.DisplayAlerts = False
    xlApp.Quit
    Set xlApp = Nothing

End Sub

Arto [16.06.2011 11:49:07]

#

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\x64\gacutil.exe" /i NetComm64.dll

määritettyä tiedostoa ei löydy...


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta