¿Macros incompatibles?

Eminentísimo experto Valedor,
De nuevo recurro a tu sabiduría cibernética por el siguiente asunto:
Tengo 2 macros de excel que funcionan perfectamente por separado pero no cuando trato de enlazarlas ¿pero... Por qué? Me pregunto.
La primera macro crea un fichero y la segunda lo envía por correo electrónico. Las macros son las siguientes:
Sub MAIL19()
Application.Run "DISTRIBUTIO10.xls!macro10"
Dim sVia1 As String
Dim sNombreLibro1 As String
Dim sMailma1 As String
Dim myOLApp
Dim myOLItems
sVia1 = ActiveSheet.Range("dc1").Value
sNombreLibro1 = ActiveSheet.Range("da1").Value
sMailma1 = ActiveSheet.Range("aj7").Value
Set myOLApp = CreateObject("Outlook.Application")
Set myOLItem = myOLApp.CreateItem(olMailItem)
With myOLItem
.to = sMailma1
.Subject = "SERVICIO "
.body = "Adjuntamos listado "
.body = myOLItem.body & "en archivo Excel. " & sNombreLibro1
.body = myOLItem.body & " Cordialmente, Lucas"
.Attachments.Add sVia1 & sNombreLibro1
.send
End With
Set myOLApp = Nothing
Set myOLItem = Nothing
Application.ScreenUpdating = False
Application.DisplayAlerts = False
End Sub
La Macro 10 a la que invoca esta primera dice así:
Sub Macro10()
Application.Run "DISTRIBUTIO10.xls!VER01"
Workbooks.Open Filename:="C:\003-1\DISMENSAKA10.xls"
Application.Goto Reference:="RAUDO"
Application.CutCopyMode = False
Selection.ClearContents
Windows("DISTRIBUTIO10.xls").Activate
Application.Goto Reference:="COMPLET"
Selection.Copy
Windows("DISMENSAKA10.xls").Activate
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Windows("DISTRIBUTIO10.xls").Activate
Range("A6").Select
Windows("DISMENSAKA10.xls").Activate
Application.Goto Reference:="RAUDO"
Application.Run "DISMENSAKA10.xls!Macro1148"
Windows("DISTRIBUTIO10.xls").Activate
Range("A6").Select
End Sub
Una vez más contamos con tu inestimable ayuda. Recibe un cordial saludo,
Lucas.

1 respuesta

Respuesta
1
En teoría deberían de trabajar bien, cuando tu llamas a la primer macro
Application. Run "DISTRIBUTIO10.xls!macro10"
esta no continua en la siguiente linea hasta terminar dicha macro
Application. Run "DISTRIBUTIO10.xls!mail190"
Creo que el problema va por ahí de los archivos que creas, pero de nuevo te pregunto, ¿dónde te da error?, ¿Dónde se detiene?, o ¿Simplemente no lo hace?, si te es posible enviame copia de los archivos necesarios con las macros y lo investigamos, saludos...
Mauricio
MbsARROBAinboxPUNTOnet
Eres de los pocos que cuando hacen una pregunta ponen el código que han hecho, eso es muy bueno, gracias...
Ahora, serviría mucho me dijeras en que linea te el error, tal vez no estés cerrando el archivo que creas para adjuntarlo, observa como tienes mucho nombres de archivos personalizados así como rangos, para poder probar tus macros, tendría que reproducir los nombres que usas o adaptarlos, lo cual es más rapido si me dices donde te da el error.
Estimado Mauricio,
muchas gracias por tu pronta y atenta respuesta.
Ejecuto las macros separadamente y no hay ningún problema. En la primera me crea un fichero con un nombre y en la segunda me lo envía por e-mail. Yo pensé que uniéndolas me evitaba tener que pinchar dos veces (con las posibilidades de error que eso conlleva)y que si ambas funcionan bien ¿qué problema podía haber en unirlas?
Primero creé una macro que las ejecutaba, o sea:
Sub PORCORREO19()
Application.Run "DISTRIBUTIO10.xls!macro10"
Application.Run "DISTRIBUTIO10.xls!mail190"
Pero ejecuta la primera y no la segunda. Probé de la forme que te expuse anteriormente con el mismo resultado. He pensado que cuando va a ejecutar la segunda, puede no haber acabado con la primera, pero eso solo es una suposición de inexperto. Me han dicho (otro inexperto) que debería utilizar una sentencia para detener el proceso hasta que no ha finalizado el anterior, pero no me ha dicho ni cual ni cómo. Ya estaba a punto de desistir pero he recordado tus sabios consejos ... de nuevo muchas gracias por tu atención y anticipadas por la ayuda,
Lucas
Estimado Mauricio,
Gracias por tu amabilidad. Adjunto te envío el resto de macros implicadas en el proceso. Los ficheros son muy pesados para enviarlos por correo, 9Mb tiene el Distributio10!.
En cuanto a la pregunta que me haces: No da mensaje de error simplemente se limita a ejecutar la primera macro y no hace nada con la segunda.
Recibe un cordial saludo,
Lucas
Sub Macro1()
'
' Macro1 Macro
Range("L1:Z2000").Select
Selection.ClearContents
Range("A1").Select
Application.Goto Reference:="RAUDO"
End Sub
Sub Macro1148()
Dim sVia As String
Dim sNombreLibro As String
sNombreLibro = ActiveSheet.Range("Q1").Value
sNombreLibro = Trim(sNombreLibro)
If sNombreLibro = vbNullString Then
MsgBox "No puso ningún nombre para el libro", vbExclamation
Exit Sub
End If
sVia = ActiveSheet.Range("S1").Value
On Error GoTo Terror
Sheets("Hoja1").Copy
ActiveWorkbook.SaveAs sVia & "\" & sNombreLibro, FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
Range("L1:Z2000").Select
Selection.ClearContents
Range("A1").Select
ActiveWorkbook.Sabe
ActiveWorkbook.Close
Windows("DISMENSAKA10.xls").Activate
Application.Goto Reference:="RAUDO"
ActiveWorkbook.Save
ActiveWorkbook.Close
Range("A6").Select
Exit Sub
ActiveWorkbook.SaveAs Filename:="C:\003-1\ZZZ01.txt", FileFormat:=xlText, _
CreateBackup:=False
Terror:
If Err.Number = 1004 Then Exit Sub
Else 'Error desconocido
MsgBox Err.Number & " " & Err.Description
End If
End Sub
No quiero que me envíes todo tu archivo, solo necesario para ejecutar tal como tu lo haces...
He revisado linea a linea y no parece haber algún error, he tratado de simular tus rutas de acceso y los nombres de tus archivos, nombres de rangos y hojas, y todo parce estar bien...
Tengo aplicaciones que llaman a múltiples macros sin ningún problema, checa la ejecución de tus macros linea a linea desde la venta del editor con la tecla F8 y ve donde es donde no

Añade tu respuesta

Haz clic para o