Mas como a função está em um módulo fica meio estranho fazer os if's no form..
Apliquei sua solução da seguinte maneira
No módulo do form
Option Compare Database
'Declares for direct ping
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInet As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Long
Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Const INTERNET_FLAG_KEEP_CONNECTION = &H400000
Private Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000
Dim X As Boolean
Dim hInet As Long
Dim hUrl As Long
Dim flags As Long
Dim URL As Variant
No Botão que envia o email.. coloquei o modulo que checa a conexão... direcionando a dois sub's caso haja ou não conexão...
Private Sub BtnEnviar_Click()
'CHECA A CONEXÃO COM A INTERNET DESVIANDO O BOTÃO PARA O CODIGO CORRESPONDENTE À CONEXÃO
hInet = InternetOpen(" ", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0&)
If hInet Then
flags = INTERNET_FLAG_KEEP_CONNECTION Or INTERNET_FLAG_NO_CACHE_WRITE Or INTERNET_FLAG_RELOAD
hUrl = InternetOpenUrl(hInet, "http://www.yahoo.com", vbNullString, 0, flags, 0)
If hUrl Then
MsgBox "O seu computador está conectado à Internet", vbInformation, "Verificando Conexão"
Call InternetCloseHandle(hUrl)
Call BtnEnviarComConexao
Else
MsgBox "O seu computador não está conectado à Internet" & vbCr & "Deve conectar-se à internet para continuar.", vbInformation, "Verificando conexão"
X = False
Call BtnEnviarSemConexao
End If
End If
Call InternetCloseHandle(hInet)
End Sub
Sub BtnEnviarSemConexao()
Parametros_de_Inicializacao "SysPen.par"
Dim db As DAO.Database
Dim ws As DAO.Workspace
Dim rsNaoEnviados As DAO.Recordset
Dim StrNaoEnviados As String
NomeBD = "Syspen_be_Local.accdb"
'String com path para conexão com a base de dados.
StrPathLocal = DirBancoDados & NomeBD
' Conecta ao banco de dados
Set dbBanco = OpenDatabase(StrPathLocal)
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(DirBancoDados & "\Syspen_Be_Local.accdb", False, False, "MS Access;PWD=senha")
'Adiciona a mensagem completa na tblEnviados
StrNaoEnviados = ("SELECT * FROM tbl_Nao_Enviados")
Set rsNaoEnviados = db.OpenRecordset(StrNaoEnviados)
rsNaoEnviados.AddNew ' Abre a edição do registro
'********PÁGINA 01*************************************************************************
rsNaoEnviados![Para] = Me.emailpara
rsNaoEnviados![Assunto] = Me.cxAssunto
rsNaoEnviados![Mensagem] = Me.cxCorpo
rsNaoEnviados![Anexo1] = Me.txtAnexo1
rsNaoEnviados![Anexo2] = Me.txtAnexo2
rsNaoEnviados![Anexo2] = Me.txtAnexo3
' Atualiza os dados na tabela
db.Execute "UPDATE Contatos SET Selecionado=0 WHERE Selecionado = -1;"
rsNaoEnviados.Update
Me.lstNaoEnviada.Requery
Set rsNaoEnviados = Nothing
Set db = Nothing
ws.Close
Me.Recalc
Me.Refresh
End Sub
Sub BtnEnviarComConexao()
Parametros_de_Inicializacao "SysPen.par"
Dim db As DAO.Database
Dim ws As DAO.Workspace
Dim rsEnviados As DAO.Recordset
Dim StrCaixaSaida As String
Dim SrtEnviados As String
Dim rst As Recordset
Dim Contador As Long
NomeBD = "Syspen_be_Local.accdb"
'String com path para conexão com a base de dados.
StrPathLocal = DirBancoDados & NomeBD
' Conecta ao banco de dados
Set dbBanco = OpenDatabase(StrPathLocal)
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(DirBancoDados & "\Syspen_Be_Local.accdb", False, False, "MS Access;PWD=senha")
Set rst = db.OpenRecordset("select count(Selecionado) as Tot from Contatos where Selecionado=-1")
Contador = rst!tot
If Contador = 0 Then
MsgBox "Não foi selecionado e-mail para o envio" & vbCrLf & _
"Cancelando a operação!", vbCritical, "Atenção"
Else
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(DirBancoDados & "\Syspen_Be_Local.accdb", False, False, "MS Access;PWD=senha")
MsgBox "Faltam dados para o envio do email" & Chr(13) & "Preencha corretamente o formulário." & Chr(13) & Chr(13) & "Envio cancelado...", vbInformation, "Alerta"
cxNome.SetFocus
Exit Sub
Me.rtAguarde.Visible = True
'monta o mail e envia
On Error Resume Next
Dim strAnexo1 As String, strAnexo2 As String, strAnexo3 As String
strAnexo1 = Me.txtAnexo1.Value
strAnexo2 = Me.txtAnexo2.Value
strAnexo3 = Me.txtAnexo3.Value
Call InitializeOutlook
Set objNewMail = gOLApp.CreateItem(olMailItem)
With objNewMail
.Attachments.Add strAnexo1
.Attachments.Add strAnexo2
.Attachments.Add strAnexo3
.To = [emailpara]
'body.Font = 20
.body = "Nome: " & Me.cxNome _
& vbCrLf & "" _
& vbCrLf & "Email: " & [cxEmailUsuario] _
& vbCrLf & "" _
& vbCrLf & [cxCorpo] _
& vbCrLf & "" _
& vbCrLf & "Este email foi enviado por © SYSPEN" _
& vbCrLf & ""
.Subject = [cxAssunto] & " - " & Date
.Send
End With
DoCmd.SetWarnings True
'Modifica o status do campo selecionado na tebela voltando todos ao status "Desmarcado"
db.Execute "UPDATE Contatos SET Selecionado=0 WHERE Selecionado = -1;"
'Adiciona a mensagem completa na tblEnviados
StrEnviados = ("SELECT * FROM tbl_Enviados")
Set rsEnviados = db.OpenRecordset(StrEnviados)
rsEnviados.AddNew ' Abre a edição do registro
'********PÁGINA 01*************************************************************************
rsEnviados![Para] = Me.emailpara
rsEnviados![Assunto] = Me.cxAssunto
rsEnviados![Mensagem] = Me.cxCorpo
rsEnviados![Anexo1] = Me.txtAnexo1
rsEnviados![Anexo2] = Me.txtAnexo2
rsEnviados![Anexo2] = Me.txtAnexo3
' Atualiza os dados na tabela
rsEnviados.Update
MsgBox "Mensagem enviada com sucesso!!!", vbInformation, "Aviso de Envio - © SYSPEN"
MsgBox "Os E-Mail's foram enviados para caixa de Saída.", vbOKOnly + vbInformation, "Enviado"
Set rsEnviados = Nothing
Set db = Nothing
ws.Close
Me.Recalc
Me.Refresh
Me.rtAguarde.Visible = False
Me.cxAssunto = ""
Me.cxCorpo = ""
Me.txtAnexo1 = ""
Me.txtAnexo2 = ""
Me.txtAnexo3 = ""
Me.emailpara = ""
End If
End Sub
Perfect!!
Grato