Excel - Se creen expertos en VBA de Excel? Lean esto.

 
Vista:

Se creen expertos en VBA de Excel? Lean esto.

Publicado por Nelson Torres (63 intervenciones) el 17/09/2012 22:11:25
Hola!!!!

El día de hoy me voy a atrever a retar a todo aquel que se considere experto en el campo de macros de excel. Antes de empezar debo hacer una leve reseña histórica de lo que he aprendido. Hace tiempo necesite de una macro para poder enviar un mensaje desde un formulario, no sabia como hacerlo y lo logré. Luego, me pregunte como poder adjuntar un archivo a ese mail y también lo aprendí. Después me pregunte como poder controlar a un archivo excel a control remoto, y tras varias investigaciones me entere de un control Activex, llamado Winsock, a decir verdad todavía no lo entiendo bien y solo sé lograr la IP y el administrador a través de un formulario, de hecho ya deje un comentario al respecto que se titula "Excel a Control Remoto", no sé que más puedo hacer con el. Por cierto si alguien puede ayudarme con esto, le estaré agradecido con la información suministrada. Lo que por fin me lleva al día de hoy, cuando desperté se me ocurrió la siguiente pregunta.

¿Qué tal si creara una macro que pudiera leer mails, si yo tengo una cuenta en gmail , yahoo, etc. Habría alguna manera de por ejemplo, si yo le enviara un código "3232323" ella lo interpretara según lo que tengo programado y entendiera por ejemplo "Secuencia de Autodestrucción Activada" y decidiera borrar todo su contenido?¿Seria posible lograr que yo le enviara una orden a través de un mail a un archivo de excel 2010, que luego interpretara una macro para ejecutar un bloque de código determinado? Un poco de película creería, pero.... si hoy clonamos ovejas............ En fin, ya me extendí demasiado. Si pueden ayudarme con esa inquietud les estaré agradecido.

Saludos!!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

Se creen expertos en VBA de Excel? Lean esto.

Publicado por JuanC (1237 intervenciones) el 17/09/2012 23:34:51
sólo voy a decir que sí es posible; no olvides que en VBA puede usarse la API de Windows...

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Se creen expertos en VBA de Excel? Lean esto.

Publicado por deneg_nhj (8 intervenciones) el 17/09/2012 23:47:01
Este Código te lee los correos del outlook.


Por si les sirve.

Saludos!

www.sgh.com.mx


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
Option Compare Database
Dim myOlapp As New Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim iTotCorreos As Long
Dim myItem As Outlook.MailItem
Dim nItem As Long
Dim sCriterio As String ' el criterio para el filtro
Dim oItems As Outlook.Items
Dim sRemitente As String
'------------------------------------------------------------------------------------------------------------------------------
Private Sub btnCorreoAnterior_Click()
 
    Set myItem = oItems.GetPrevious
 
    subMuestraDatos
 
End Sub
'------------------------------------------------------------------------------------------------------------------------------
Private Sub btnCorreoPrimero_Click()
    nItem = 1
        Set myItem = oItems.GetFirst
 
        subMuestraDatos
End Sub
'------------------------------------------------------------------------------------------------------------------------------
Private Sub btnCorreoUltimo_Click()
 
        nItem = iTotCorreos
        Set myItem = oItems.GetLast
        subMuestraDatos
 
End Sub
'------------------------------------------------------------------------------------------------------------------------------
Private Sub btnSiguiente_Click()
 
    Set myItem = oItems.GetNext
 
 
    subMuestraDatos
End Sub
'------------------------------------------------------------------------------------------------------------------------------
Private Sub Form_Load()
 
 
sRemitente = "deneg_nhj@yahoo.com"
'iTotCorreos = myFolder.Items.Count - 1
 
 
 
    Set myOlapp = CreateObject("outlook.application")
    Set myNameSpace = myOlapp.GetNamespace("MAPI")
    Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
 
 
    sCriterio = "[SenderEmailAddress] =  " & sRemitente
 
     Set oItems = myFolder.Items.Restrict(sCriterio)
     oItems.Sort "[LastModificationTime]", True
 
 
        'Set myItem = myFolder.Items(1)
        'iTotCorreos = myFolder.Items.Count
        'myItem.BodyFormat = olFormatHTML
 
        Set myItem = oItems.GetFirst
        iTotCorreos = oItems.Count
 
        myItem.BodyFormat = olFormatHTML
 
 
 
    subMuestraDatos
 
    If IsLoaded("frmMenuPrincipal") Then
        Forms!frmMenuPrincipal.Visible = False
    End If
 
End Sub
'------------------------------------------------------------------------------------------------------------------------------
Private Sub Form_Unload(Cancel As Integer)
    Set objOutlook = Nothing
 
    If IsLoaded("frmMenuPrincipal") Then
        Forms!frmMenuPrincipal.Visible = True
End If
 
End Sub
'------------------------------------------------------------------------------------------------------------------------------
Sub subMuestraDatos()
 
Dim i As Integer
On Error GoTo Final
 
    txtAdjuntos = ""
    txtBody = ""
 
    txtAsunto = myItem.Subject
    'myItem.Recipients.Item (1)
    txtBody = myItem.HTMLBody
    txtCuerpoPlano = myItem.Body
    txtCCP = myItem.CC
    'txtFecha = myItem.LastModificationTime
    txtFecha = myItem.ReceivedTime
    txtRemitente = myItem.SenderEmailAddress
    If myItem.UnRead = True Then
        lbEstatusLectura.Caption = "Sin leer"
    Else
        lbEstatusLectura.Caption = ""
    End If
 
    txtUltMovto = ObtItemsCapt("select max(noFolio) + 1 from tbRegFolios ")
    btnaTareas.Enabled = True
Exit Sub
 
Final:
    MsgBox Err.Description
        Exit Sub
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Se creen expertos en VBA de Excel? Lean esto.

Publicado por Nelson Torres (63 intervenciones) el 18/09/2012 01:20:35
Excelente!!

Gracias por el aporte!

Pero, ¿Solo se puede con Outlook?,¿Es posible con gmail, por ejemplo?.

Saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Abraham Valencia
Val: 313
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Se creen expertos en VBA de Excel? Lean esto.

Publicado por Abraham Valencia (2415 intervenciones) el 19/09/2012 19:42:41
Hola:

Como ya te dijo JuanC, pues si es posible y sí, así sea de Hotmail, Gmail, etc. Recomiendo que leas más aun sobre 'winsock' y otros *.ocx que se pueden usar

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Se creen expertos en VBA de Excel? Lean esto.

Publicado por Luis (2 intervenciones) el 17/05/2016 18:46:15
Si es posible, lo que haces es activar el API de Windows. Entonces generas una navegación web, en donde indicas que la pagina web que se abre es www.gmail.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub web()
 
'representará nuestra futura instancia de la aplicación Internet Explorer
 Dim InternetExplorer As Object
 'creamos la instancia de Internet Explorer
 Set InternetExplorer = CreateObject("InternetExplorer.application")
 
With InternetExplorer
 'Mostramos la ventana de Internet Explorer
 .Visible = True
 'Le hacemos navegar a la pagina que queramos
 .navigate "www.gmail.com"
 End With
 
'Mientras la pagina no se haya cargado dejamos al navegador que haga lo que necesite hacer.
 Do Until InternetExplorer.ReadyState = 4:
 DoEvents
 Loop
 
end sub

con esta macro se abre el navegador con gmail. Posteriormente, debemos identificar el objeto del usuario y la pass para acceder. Lo anterior lo puedes hacer presionando f12 desde iexplorer o de chrome con insepeccionar elementos. Entonces, otorgas el valor a la casilla segeun ítem, o name o id. Después solo falta generar el evento del botón para logearse.

Yo he podido realizar el ingreso de datos como usuario y pass pero no he podido ocacionar de forma correcto el evento .click para el botón de logeo.

Espero te sirva.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Se creen expertos en VBA de Excel? Lean esto.

Publicado por ED (1 intervención) el 10/08/2014 05:25:35
Brother, tu duda es la misma que tengo yo... Quiero mis archivo macros se autodestruyan al recibir un codigo por correo y se ejecute...... Estare pendiente de este foro, no encuentro la solucion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Se creen expertos en VBA de Excel? Lean esto.

Publicado por Marcelo (1 intervención) el 19/11/2015 15:46:03
Alguno de ustedes pudo crear el sistema de autodestrucción de archivos recibiendo un código por Email?
Yo puedo leer los mensajes y saber cuando llega un correo nuevo y leer el Email para recibir el código, el problema es que tengo que estar corriendo todo el rato VB. Por lo cual no se hace factible ya que necesariamente tengo que tener activo VB y esto ocupa demasiados recursos, pienso que lo ideal seria que al recibiera el código por Email windows me activara VB.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar