robnet77
20-04-2004, 14:53
Allora, ho questo problema:
il programma di un mio collega funziona nei pc con installato Visual Basic ma non va su un pc con win95 che non ha vb installato.
Il messaggio di errore č tipo: "Error 458 - Variable uses an automation type not supported in Visual Basic".
Il programma č il seguente (ancora da affinare nella forma :) ) :
Public Riga As String
Public campo1 As String
Public campo2 As String
Public swErrDest As String
Public swErrAlleg As String
Public swErrOggetto As Integer
Public swErrTesto As Integer
Dim mymail As Object
Dim myOutlook As New Outlook.Application
Sub Main()
' Dim mymail As Outlook.mailitem
' Set myOutlook = New Outlook.Application
Set mymail = myOutlook.CreateItem(olMailItem)
Open "C:\DatiMail.txt" For Input As 1
If Not EOF(1) Then
While Not EOF(1)
Line Input #1, Riga
Call LeggiCampi
'Oggetto
If campo1 = "OGGETTO" Then
swErrOggetto = swErrOggetto + 1
mymail.Subject = campo2
End If
'Testo mail
If campo1 = "TESTO" Then
swErrTesto = swErrTesto + 1
mymail.Body = campo2
End If
'Allegati
If campo1 = "ALLEGATO" Then
swErrAlleg = "*"
mymail.Attachments.Add (campo2)
End If
'Destinatari
If campo1 = "DESTINATARIO" Then
swErrDest = "*"
mymail.Recipients.Add (campo2)
End If
Wend
End If
Close 1
If swErrDest <> "*" Then
MsgBox "Attenzione!! Non Inserito Nessun Destinatario"
ElseIf swErrAlleg <> "*" Then
MsgBox "Attenzione!! Non Inserito Nessun Allegato"
ElseIf swErrOggetto > 1 Then
MsgBox "Attenzione!! Inserito piu' di 1 Oggetto "
ElseIf swErrTesto > 1 Then
MsgBox "Attenzione!! Inserito piu' di 1 Testo "
Else
'Invio E-Mail
mymail.Send
End If
End Sub
Sub LeggiCampi()
Dim PosTab As Integer
Dim NumCampoLetto As Integer
PosTab = InStr(Riga, vbTab)
NumCampoLetto = 1
While PosTab > 0
Select Case NumCampoLetto
Case 1
campo1 = Mid$(Riga, 1, PosTab - 1)
' Case 2
' campo2 = Mid$(Riga, 1, PosTab - 1)
End Select
NumCampoLetto = NumCampoLetto + 1
Riga = Mid$(Riga, PosTab + 1)
PosTab = InStr(Riga, vbTab)
Wend
' Lettura ultimo campo
campo2 = Riga
End Sub
la sub leggicampi serve solo a leggere da un file di testo gli elementi corretti, nel progetto č ovviamente referenziata la libreria oggetto di Microsoft Outlook 9.0.
Ha il service pack 5 installato, non credo sia necessario il 6 per fixare il problema :p
... grazie :)
il programma di un mio collega funziona nei pc con installato Visual Basic ma non va su un pc con win95 che non ha vb installato.
Il messaggio di errore č tipo: "Error 458 - Variable uses an automation type not supported in Visual Basic".
Il programma č il seguente (ancora da affinare nella forma :) ) :
Public Riga As String
Public campo1 As String
Public campo2 As String
Public swErrDest As String
Public swErrAlleg As String
Public swErrOggetto As Integer
Public swErrTesto As Integer
Dim mymail As Object
Dim myOutlook As New Outlook.Application
Sub Main()
' Dim mymail As Outlook.mailitem
' Set myOutlook = New Outlook.Application
Set mymail = myOutlook.CreateItem(olMailItem)
Open "C:\DatiMail.txt" For Input As 1
If Not EOF(1) Then
While Not EOF(1)
Line Input #1, Riga
Call LeggiCampi
'Oggetto
If campo1 = "OGGETTO" Then
swErrOggetto = swErrOggetto + 1
mymail.Subject = campo2
End If
'Testo mail
If campo1 = "TESTO" Then
swErrTesto = swErrTesto + 1
mymail.Body = campo2
End If
'Allegati
If campo1 = "ALLEGATO" Then
swErrAlleg = "*"
mymail.Attachments.Add (campo2)
End If
'Destinatari
If campo1 = "DESTINATARIO" Then
swErrDest = "*"
mymail.Recipients.Add (campo2)
End If
Wend
End If
Close 1
If swErrDest <> "*" Then
MsgBox "Attenzione!! Non Inserito Nessun Destinatario"
ElseIf swErrAlleg <> "*" Then
MsgBox "Attenzione!! Non Inserito Nessun Allegato"
ElseIf swErrOggetto > 1 Then
MsgBox "Attenzione!! Inserito piu' di 1 Oggetto "
ElseIf swErrTesto > 1 Then
MsgBox "Attenzione!! Inserito piu' di 1 Testo "
Else
'Invio E-Mail
mymail.Send
End If
End Sub
Sub LeggiCampi()
Dim PosTab As Integer
Dim NumCampoLetto As Integer
PosTab = InStr(Riga, vbTab)
NumCampoLetto = 1
While PosTab > 0
Select Case NumCampoLetto
Case 1
campo1 = Mid$(Riga, 1, PosTab - 1)
' Case 2
' campo2 = Mid$(Riga, 1, PosTab - 1)
End Select
NumCampoLetto = NumCampoLetto + 1
Riga = Mid$(Riga, PosTab + 1)
PosTab = InStr(Riga, vbTab)
Wend
' Lettura ultimo campo
campo2 = Riga
End Sub
la sub leggicampi serve solo a leggere da un file di testo gli elementi corretti, nel progetto č ovviamente referenziata la libreria oggetto di Microsoft Outlook 9.0.
Ha il service pack 5 installato, non credo sia necessario il 6 per fixare il problema :p
... grazie :)