Excel - Repetir varias veces macro excel

   
Vista:

Repetir varias veces macro excel

Publicado por Mario (10 intervenciones) el 19/01/2016 22:20:49
Buenas tardes amigos soy nuevo en macros y se que aqui hay personas que pueden ayudarme en este caso.

la macro consiste en mandar una hoja de excel por correo electronico con datos de cada persona eso sig que la celda C15 CAMBIA osea ahi se ponen cada nombre y aparecen sus datos y se manda luego el sig nombre con sus datos y se vuelve a mandar pero son 70 personas quiere decir que tengo q repetir el codigo 70 veces para hacerlo y lamentablemente no me deja ps me manda un mensaje de que el codigo es muy largo.

lo que quisera hacer es que en las lineas subrayadas (linea 1,linea 8, linea 22) son las unicas que cambian lo demas queda intacto y seria que se empieza de 1 a 60 osea B6 seria B1 y luego pasa a B2 y asiii el numero es lo que cambiaria del 1 al 60.

ayudenme porfavor

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
If Sheets("Employers").Range("B6").Value = "" Then
Else
ActiveSheet.Unprotect Password:=""
mio = ActiveWorkbook.Name
Workbooks.Add
otro = ActiveWorkbook.Name
Workbooks(mio).Activate
Sheets("Reporte").Range("C15").Value = Sheets("Employers").Range("B6").Value
Sheets("Reporte").Copy after:=Workbooks(otro).Sheets(Workbooks(otro).Sheets.Count)
Sheets("Reporte").Range("B7:I30").Select
 Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Sheets("Reporte").Range("C10").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("Sheet1").Delete
ActiveWorkbook.SaveAs "C:\Users\mmuñoz\Downloads\vacaciones.xlsx"
ActiveWorkbook.Close False
Set parte1 = CreateObject("outlook.application")
Set parte2 = parte1.CreateItem(olmailitem)
parte2.To = Sheets("Employers").Range("E6").Value
parte2.Subject = Sheets("Reporte").Range("A9").Value
parte2.Body = Sheets("Reporte").Range("A8").Value & vbCrLf & "Cualquier consulta estoy para servirle." & vbCrLf & " " & vbCrLf & "Bendiciones." & vbCrLf & " " & vbCrLf & " " & vbCrLf & "Armando Hernandez" & vbCrLf & "Especialista de Recursos Humanos" & vbCrLf & "Compassion Internacional-Dominican Republic" & vbCrLf & "PH# 809-274-2111" & vbCrLf & "Mobile 829-761-5832"
parte2.Attachments.Add "C:\Users\mmuñoz\Downloads\vacaciones.xlsx"
parte2.Send
Kill "C:\Users\mmuñoz\Downloads\vacaciones.xlsx"
End If
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

Repetir varias veces macro excel

Publicado por AGUSTIN agustingt8@gmail.com (12 intervenciones) el 20/01/2016 00:33:30
Buenas tardes Mario:

Adjunta el archio con tu codigo para poderte ayudar mejor.

Saludos cordiales.
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

Repetir varias veces macro excel

Publicado por Mario (10 intervenciones) el 20/01/2016 14:13:53
gracias por tu apoyo de ante mano hermano te envie a tu correo el archivo xq me dice q tengo q estar registrado para adjuntar.

todo lo que quiero es que en la hoja Reporte al darle al boton enviar lo que hace es que manda a traer de la hoja employers una por una el nombre para actualizar una tabla que manda los datos de esa persona y lo enviar por e-mail xq es un reporte que se manda a cada persona y con ese codigo se mandan todos de una sola vez para que tengas idea mas clara del codigo
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

Repetir varias veces macro excel

Publicado por agustin (149 intervenciones) el 20/01/2016 00:53:11
Y si usas Cells y una variable de tipo entera y lo metes todo en un bucle?
Seria algo como:
1
2
3
4
5
Dim contador As Integer
For contador = 1 to 70
   'Aquí iría todo tu código cambiando las líneas subrayadas como en este caso
   If Sheets("Employers").Cells(contador,2).Value = "" Then
Next contador
Donde contador se incrementaría en cada iteración y el 2 corresponde a la segunda columna que es la B.
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

Repetir varias veces macro excel

Publicado por mario (10 intervenciones) el 20/01/2016 14:19:22
ok pero despues de eso que escribiste sigue el resto del codigo ?

y hago igual para las tres lineas que quiero que cambien ?
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

Repetir varias veces macro excel

Publicado por agustin (149 intervenciones) el 20/01/2016 14:54:49
Correcto. El condicional if es donde empieza tu código y ahí va el resto, todo tiene que estar puesto entre el for y el next si quieres que se repita todo. Si hay algo que no quieres que se repita lo pones fuera de ese bucle.
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

Repetir varias veces macro excel

Publicado por mario (10 intervenciones) el 20/01/2016 15:25:02
hermano disculpame que sea lento pero eso que pusiste que quiere decir en palabras normales?

porque lo que quiero es que si te fijas te mande el archivo y lo que hace es que si en la lista de empleados B6 esta vacia no hace nada y pasa al sig B7 pero si no esta vacia hace todo el codigo pero lo que no se como hacer es en la linea 8 y 22 a la vez manda a traer el empleado en la B6 y mas abajo en la linea 22 manda a traer el correo que es la E7 tonces eso va ligado trae el nombre B6 Y correo E6 y asi sucesivamente porque le manda a cada persona sus datos a su correo xq no son los mismo nombre ni correos.

hermano te mande el archivo
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

Repetir varias veces macro excel

Publicado por agustin (149 intervenciones) el 20/01/2016 18:49:11
Tu código tiene varias cosas a mejorar. Por ejemplo:
1
2
If Sheets("Employers").Range("B6").Value = "" Then
Else
Se puede simplificar con:
1
If Not IsEmpty(Sheets("Employers").Cells (contador,2).Value) Then

Sí tengo tiempo luego veo tu código en el pc y lo miro más detenidamente. Estoy con el móvil en la calle.
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

Repetir varias veces macro excel

Publicado por MARIO (10 intervenciones) el 20/01/2016 19:01:16
gracias amigo espero puedas revisar y ver lo de las lineas 8 y 22 esa la 1 ya esta clara
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

Repetir varias veces macro excel

Publicado por agustin (149 intervenciones) el 20/01/2016 21:05:10
¿Puedes mandarme lo al correo para poderlo ver mejor y entender con exactitud lo que quieres hacer?
En principio las otras dos líneas que quieres saber es igual que hice en la primera, sustituyes range por Cells y el primer parámetro es el número de fila y el segundo el número de columna pero si me lo mandas y me explicas detalladamente lo que quieres hacer te podre ayudar mejor.
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

Repetir varias veces macro excel

Publicado por mario (10 intervenciones) el 20/01/2016 21:07:02
vale amigo ya te lo mande gracias
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

Repetir varias veces macro excel

Publicado por agustin (149 intervenciones) el 21/01/2016 18:34:17
Donde lo mandaste? No lo veo por ningún sitio
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

Repetir varias veces macro excel

Publicado por mario (10 intervenciones) el 21/01/2016 19:10:07
a tu correo hermano te lo mande ayer a las 2 es este tu correo no?

agustingt8@gmail.com
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

Repetir varias veces macro excel

Publicado por aguml (149 intervenciones) el 21/01/2016 19:42:14
no lo es, el mio es aguml@hotmail.com.
Una cosa, yo no tengo outlook con lo que no puedo ni tracear eso sin que de error pero te he preparado esto para que lo pruebes y me digas que tal va.
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
Sub Botón1_clic()
    Dim contador As Integer
    Dim mio, otro As String
    Dim olApp As Outlook.Application
    Dim olMail As Outlook.MailItem
 
    For contador = 1 To 70
        If Not IsEmpty(Sheets("Employers").Cells(contador, 2).Value) Then
            ActiveSheet.Unprotect Password:=""
            mio = ActiveWorkbook.Name
            Workbooks.Add
            otro = ActiveWorkbook.Name
            Workbooks(mio).Activate
            Sheets("Reporte").Range("C15").Value = Sheets("Employers").Cells(contador, 2).Value
            Sheets("Reporte").Copy after:=Workbooks(otro).Sheets(Workbooks(otro).Sheets.Count)
            Sheets("Reporte").Range("B7:I30").Select
            Selection.Copy
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            Application.CutCopyMode = False
            Sheets("Reporte").Range("C10").Select
            ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
            Sheets("Sheet1").Delete
            ActiveWorkbook.SaveAs "C:\Users\mmuñoz\Downloads\vacaciones.xlsx"
            ActiveWorkbook.Close False
            Set olApp = CreateObject("outlook.application")
            Set olMail = olApp.CreateItem(olmailitem)
            olMail.To = Sheets("Employers").Cells(contador, 5).Value
            olMail.Subject = Sheets("Reporte").Range("A9").Value
            olMail.Body = Sheets("Reporte").Range("A8").Value & vbCrLf & "Cualquier consulta estoy para servirle." & vbCrLf & " " & vbCrLf & "Bendiciones." & vbCrLf & " " & vbCrLf & " " & vbCrLf & "Armando Hernandez" & vbCrLf & "Especialista de Recursos Humanos" & vbCrLf & "Compassion Internacional-Dominican Republic" & vbCrLf & "PH# 809-274-2111" & vbCrLf & "Mobile 829-761-5832"
            olMail.Attachments.Add "C:\Users\mmuñoz\Downloads\vacaciones.xlsx"
            olMail.Send
            Kill "C:\Users\mmuñoz\Downloads\vacaciones.xlsx"
            Set olApp = Nothing
            Set olMail = Nothing
        End If
    Next contador
End Sub
El caso es que no entiendo bien que pretendes hacer. Lo que entiendo es que:
1. Tienes un libro con 3 hojas (Employers, Reporte, Sheel1).
2. En la columna E de employers tienes los mails.
3. En la columna B de employers tienes algun mensaje.
4. Usando esos datos creas un nuevo libro el cual vas rellenando con esos datos y lo guardas.
5. Imprimes la hoja y mandas el mail usando outlook.

Lo que al no tener el archivo con los datos no se exactamente que pretendes hacer y no se si lo que está dentro del bucle es necesario que todo esté dentro o habria que sacar cosas fuera.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Repetir varias veces macro excel

Publicado por mario (10 intervenciones) el 21/01/2016 20:17:42
si asi es todo lo q decis es asi talves yo me explique mal pero tu entender es asi osea que lo que quiero es mandar esa hoja reporte a los empleados de la hoja emplyers uno a uno a sus respectivo correos.

voy a probar el codigo amigo gracias
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

Repetir varias veces macro excel

Publicado por mario (10 intervenciones) el 21/01/2016 20:25:16
hermano aqui lo adjunte

lo acabo de probar pero me sale este mensaje:

compile error
user defined type not defined

y se refiere a la linea : Dim olApp As Outlook.Application
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

Repetir varias veces macro excel

Publicado por agustin (149 intervenciones) el 21/01/2016 20:36:34
Cambia Outlook.Application por Object y si te sigue dando problemas comentas esa línea o elimina la.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Repetir varias veces macro excel

Publicado por Mario (10 intervenciones) el 21/01/2016 20:40:30
hermano muchas gracias !!!!!!!! perfecto bravo me sirvio e hizo lo que yo queria eres un genio
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