Problema al enviar un libro por email!

11/05/2006 - 12:00 por kusflo | Informe spam
El siguiente código esta metido en una macro de excel y sirve para enviar un
libro de excel por email. El problema que tengo es que si pego la hoja de
cálculo en un equipo con S.O. = Windows 2000 Profesional me funciona
perfectamente pero si pego la hoja en un equipo con S.O. Windows XP me da el
error 1004. El Office es igual en ambos equipos (Officce 2000).

Código:

'--

'Enviar hoja por email

Err.Clear
On Error GoTo CONTROLERROR
ActiveSheet.Unprotect
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim fecha As String
Dim descripcion As String
Dim wbname As String
fecha = Format(Now, "dd-mm-yy")
descripcion = "Cuadrante emitido por Tecsem, S.L. el - " & fecha & ""


'Definimos el libro
Set wb1 = ActiveWorkbook
'Establecemos una ruta para guardar el libro
wbname = "C:/" & wb1.Name & ".xls"
'Guardamos el libro
wb1.SaveCopyAs wbname
'Abrimos un segundo libro
Set wb2 = Workbooks.Open(wbname)
'Lo enviamos por email
With wb2
.SendMail "" & email & "", _
"" & descripcion & ""
.ChangeFileAccess xlReadOnly
'Lo eliminamos
Kill .FullName
.Close False
End With

'--

CONTROLERROR:
If Err <> 0 Then
AVISO = MsgBox("¡¡Ha ocurrido el error " & Err & ". Envío no realizado!!",
, "Error en el envío")
End If
ActiveSheet.Protect



'--

'Borrar hoja de calculo creada por CCS

Kill (RUTACOMPLETA)

Application.ScreenUpdating = True

"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe; he
aquí el verdadero saber." Confucio.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
11/05/2006 - 19:39 | Informe spam
hola, marcos "

El siguiente codigo... para enviar un libro de excel por email.
... en un equipo con S.O. = Windows 2000 Profesional me funciona perfectamente
... en un equipo con S.O. Windows XP me da el error 1004. El Office es igual en ambos equipos (Officce 2000).



[segun yo]... no es necesario efectuar tantos 'pasos' para [a final de cuentas] 'terminar' enviando el libro activo -?-
-> independientemente de si necesitas des/re/proteger la hoja activa...
prueba con las lineas que terminan siendo 'el corazon' del codigo que estas usando...

ActiveWorkbook.SendMail email, descripcion

-> asumiendo que las variables 'email' y 'descripcion' YA han sido previamente 'establecidas' ;)

[aunque seria bueno si mencionas cual/es linea/s de codigo causa/n el error 1004 en win-xp] :D

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ el codigo expuesto __
'Enviar hoja por email
Err.Clear
On Error GoTo CONTROLERROR
ActiveSheet.Unprotect
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim fecha As String
Dim descripcion As String
Dim wbname As String
fecha = Format(Now, "dd-mm-yy")
descripcion = "Cuadrante emitido por Tecsem, S.L. el - " & fecha & ""
'Definimos el libro
Set wb1 = ActiveWorkbook
'Establecemos una ruta para guardar el libro
wbname = "C:/" & wb1.Name & ".xls"
'Guardamos el libro
wb1.SaveCopyAs wbname
'Abrimos un segundo libro
Set wb2 = Workbooks.Open(wbname)
'Lo enviamos por email
With wb2
.SendMail "" & email & "", _
"" & descripcion & ""
.ChangeFileAccess xlReadOnly
'Lo eliminamos
Kill .FullName
.Close False
End With
CONTROLERROR:
If Err <> 0 Then
AVISO = MsgBox("¡¡Ha ocurrido el error " & Err & ". Envà­o no realizado!!",
, "Error en el envà­o")
End If
ActiveSheet.Protect
'Borrar hoja de calculo creada por CCS
Kill (RUTACOMPLETA)
Application.ScreenUpdating = True
Respuesta Responder a este mensaje
#2 kusflo
12/05/2006 - 09:54 | Informe spam
Ya he encontrado el problema!!!. Para los que les pueda servir el problema
esta en la linea:
> wbname = "C:/" & wb1.Name & ".xls"


aunque el error da en la linea:
> Set wb2 = Workbooks.Open(wbname)



El windows 2000 profesional acepta poner "C:/" en la ruta del archivo en
cambio para que funcione tambien en Windows XP necesitas poner la ruta así
"C:\".

Estos son los problemas de manejar windows, linux, internet, etc...
Al final no me aclaro poniendo las rutas. Pero es curioso que el windows
2000 lo aceptase y ahora el windows xp no lo acepte y además de el error 1004
sin más al pasar por la linea comentada.

Con respecto al comentario de Hector Miguel decir que tienes razón, que
posiblemente se puede hacer de forma más sencilla sin guardar el libro con
otro nombre y eso pero lo hice así porque me interesaba enviar el libro con
un nombre diferente y para evitar problemas al intentar enviar un fichero que
esta ejecutando una macro y para evitar enviar el fichero sin haber guardado
los últimos cambios etc... En fin cosas mias. Pero que vamos, que seguro que
tienes razón. Un saludo y gracias por la ayuda!
"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe; he
aquí el verdadero saber." Confucio.


"Héctor Miguel" escribió:

hola, marcos "

> El siguiente codigo... para enviar un libro de excel por email.
> ... en un equipo con S.O. = Windows 2000 Profesional me funciona perfectamente
> ... en un equipo con S.O. Windows XP me da el error 1004. El Office es igual en ambos equipos (Officce 2000).

[segun yo]... no es necesario efectuar tantos 'pasos' para [a final de cuentas] 'terminar' enviando el libro activo -?-
-> independientemente de si necesitas des/re/proteger la hoja activa...
prueba con las lineas que terminan siendo 'el corazon' del codigo que estas usando...

ActiveWorkbook.SendMail email, descripcion

-> asumiendo que las variables 'email' y 'descripcion' YA han sido previamente 'establecidas' ;)

[aunque seria bueno si mencionas cual/es linea/s de codigo causa/n el error 1004 en win-xp] :D

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ el codigo expuesto __
> 'Enviar hoja por email
> Err.Clear
> On Error GoTo CONTROLERROR
> ActiveSheet.Unprotect
> Dim wb1 As Workbook
> Dim wb2 As Workbook
> Dim fecha As String
> Dim descripcion As String
> Dim wbname As String
> fecha = Format(Now, "dd-mm-yy")
> descripcion = "Cuadrante emitido por Tecsem, S.L. el - " & fecha & ""
> 'Definimos el libro
> Set wb1 = ActiveWorkbook
> 'Establecemos una ruta para guardar el libro
> wbname = "C:/" & wb1.Name & ".xls"
> 'Guardamos el libro
> wb1.SaveCopyAs wbname
> 'Abrimos un segundo libro
> Set wb2 = Workbooks.Open(wbname)
> 'Lo enviamos por email
> With wb2
> .SendMail "" & email & "", _
> "" & descripcion & ""
> .ChangeFileAccess xlReadOnly
> 'Lo eliminamos
> Kill .FullName
> .Close False
> End With
> CONTROLERROR:
> If Err <> 0 Then
> AVISO = MsgBox("¡¡Ha ocurrido el error " & Err & ". Envà­o no realizado!!",
> , "Error en el envà­o")
> End If
> ActiveSheet.Protect
> 'Borrar hoja de calculo creada por CCS
> Kill (RUTACOMPLETA)
> Application.ScreenUpdating = True



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida