VBA SELECIONAR UM ARQUIVO DA JANELA.

CANIL 24/02/2011 16:38:41
#366499
Sera que alguem pode me ajudar a terminar uma macro. A macro que estou construindo, ela tem que logar (atraves do IE) no meu email pessoal para enviar um email, com um anexo, para o meu email do trabalho. Bem a macro a esta quase pronto, so falta a parte de anexar o arquivo. Ja construi ate a chamada da janela, porem, nao consigo selecionar o arquivo ou adicionar o nome em Nome do arquivo e clicar abrir.

Se alguem poder me ajudar. Caso alguem quera o codigo eu posso estar postando aki.

JONATHANSTECKER 24/02/2011 16:47:10
#366503
Seria muito mais prático para tentarmos te ajudar!
Com o código fonte podemos entender o que se passa.
CANIL 24/02/2011 18:22:02
#366520
Citação:


Private Declare Function FindWindow Lib [Ô]user32[Ô] Alias [Ô]FindWindowA[Ô] (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib [Ô]user32[Ô] (ByVal hwnd As Long) As Long
Private Declare Function PostMessage Lib [Ô]user32[Ô] Alias [Ô]PostMessageA[Ô] (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetClassName Lib [Ô]user32[Ô] Alias [Ô]GetClassNameA[Ô] (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function ShowWindow Lib [Ô]user32[Ô] (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Const SW_SHOWNORMAL = 1
Const WM_CLOSE = &H10
Const gcClassnameMSWord = [Ô]OpusApp[Ô]
Const gcClassnameMSExcel = [Ô]XLMAIN[Ô]
Const gcClassnameMSIExplorer = [Ô]IEFrame[Ô]
Const gcClassnameMSVBasic = [Ô]wndclass_desked_gsk[Ô]
Const gcClassnameNotePad = [Ô]Notepad[Ô]
Const gcClassnameMyVBApp = [Ô]ThunderForm[Ô]

Sub Mandar_email()

[ô]Macro feita para configrar busca valores.
[ô]Criado por Victor Almada de Hollanda.
[ô]Contato victorah@globo.com ou 93850315

Dim lHandle As Long
Dim appIE As InternetExplorer
Dim UserN As Variant, PW As Variant
Dim Element As HTMLButtonElement
Dim btnInput As MSHTML.HTMLInputElement
Dim ElementCol As MSHTML.IHTMLElementCollection
Dim Link As MSHTML.HTMLAnchorElement
Dim strCountBody As String
Dim TextIWant As String
Dim oHTML1 As IHTMLElement
[ô]variaveis constantes.
test1 = 0
linha2 = 0
Linha = 2
Pref1 = [Ô]https://login.globo.com/login/1[Ô]


Set oWeb = CreateObject([Ô]InternetExplorer.Application[Ô])
oWeb.navigate Pref1
[ô]oWeb.FullScreen = True
oWeb.Visible = True
Do Until oWeb.readyState = READYSTATE_COMPLETE
Loop


[ô]Comando para pagina de erro de certificado
Set oHTML = oWeb.document
cont1 = 0
b = [Ô]O Internet Explorer não pode exibir a página da Web[Ô]
c = [Ô]Navegação Cancelada[Ô]
d = [Ô]404 Not Found [Ô]
For Each oHTML1 In oHTML.all

If oHTML1.innerText = b Or oHTML1.innerText = c Then

oWeb.Application.Quit
Linha = Linha + 1
MsgBox ([Ô]Erro na pagina[Ô])
[ô]GoTo Fim


ElseIf oHTML1.innerText = d Then

oWeb.Application.Quit
Linha = Linha + 1
MsgBox ([Ô]Fora do AR[Ô])
[ô]GoTo Fim

End If

If cont1 = 3 Then

Exit For

End If

cont1 = cont1 + 1

Next
[ô]fim do codigo para o erro de certificado. O codigo acima eu peguei de uma outra macro q fiz q tinha erro de certificado, porem, serve para caso a internet esteja fora.


[ô]Metodo de login no site.
oWeb.document.all([Ô]login-passaporte[Ô]).innerText = [Ô]nomedoemail[Ô] [ô]Login
oWeb.document.all([Ô]senha-passaporte[Ô]).innerText = [Ô]senha[Ô] [ô]Senha

[ô]Aqui entro no meu email.
Set ElementCol = oWeb.document.getElementsByTagName([Ô]INPUT[Ô])

For Each btnInput In ElementCol

If btnInput.Name = [Ô]botaoacessar[Ô] Then

btnInput.Click

Exit For

End If

Next btnInput
Do While oWeb.Busy
DoEvents
Loop
Do Until oWeb.readyState = READYSTATE_COMPLETE
Loop

Set ElementCol = oWeb.document.getElementsByTagName([Ô]a[Ô])

For Each Link In ElementCol

If Link.innerHTML = [Ô]Escrever e-mail[Ô] Then

Link.Click
Exit For

End If

Next Link
Do Until oWeb.readyState = READYSTATE_COMPLETE
Loop

[ô]Aparti daqui fecho a entra do meu email e selecao de escrever mensagem.
Set ElementCol = oWeb.document.getElementsByTagName([Ô]INPUT[Ô])

For Each btnInput In ElementCol

If btnInput.Name = [Ô]file0[Ô] Then
11:
btnInput.Click [ô]Aqui ele dentro do meu email ele clica em Anexar(o ideal era adicionar o caminho mas n tem no codigo HTML)

[ô]Esse codigo serve pra buscar a jane de anexar arquivo, aprincipio ela nao tem mt serventia porem depois vou pescisar disso.
Dim WinWnd As Long, Ret As String, RetVal As Long, lpClassName As String
Ret = InputBox([Ô]Enter the exact window title:[Ô] + Chr$(13) + Chr$(10) + [Ô]Note: must be an exact match[Ô])
WinWnd = FindWindow(vbNullString, Ret)
If WinWnd = 0 Then MsgBox [Ô]Couldn[ô]t find the window ...[Ô]: Exit Sub
ShowWindow WinWnd, SW_SHOWNORMAL
lpClassName = Space(256)
RetVal = GetClassName(WinWnd, lpClassName, 256)
MsgBox [Ô]Classname: [Ô] + Left$(lpClassName, RetVal)
[ô]esse codigo so busca a chanela, mas queria tambem acrecentar nele uma forma de busca o arquivo,
[ô]que tem dentro dessa janela(janela de anexar arquivo). O que quero mesmo seria colocar o [Ô]Nome do arquivo[Ô]
[ô]ou selecionar o arquivo e clicar em abrir.
[ô]pra baixo ainda tem mas codigo mas so poderei adcionar depois que terminar essa parte.


GoTo 11
Exit For

End If

Next btnInput
Do While oWeb.Busy
DoEvents
Loop

End Sub



Coloquei como sitacao n achei como colocar por codigo
Tópico encerrado , respostas não são mais permitidas