Excel - NOMBRE DEL PDF ERRONEO

   
Vista:

NOMBRE DEL PDF ERRONEO

Publicado por Jose (30 intervenciones) el 10/08/2018 09:02:37
Buenos dias,

Solicito ayuda porque la macro que he creado deberia de enviar un documento PDF adjunto al mail con el nombre especificado en la celda B21

Pues no entiendo porque me adjunta el documento en causa con el nombre del libro y el nombre del documento PDF especificado en la celda B21 junto.

Adjunto el documento.

Saludos,

Jose
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 Antoni Masana

NOMBRE DEL PDF ERRONEO

Publicado por Antoni Masana (829 intervenciones) el 10/08/2018 11:39:42
El problema es que se hacen las cosas sin pensar bien lo que se hace:

Si le pegas el nombre del libro al nombre de pdf tiene que salir esto: PRUEBA email_Resumen Ventas 31.07.2018

Quieres explicarme que carajo haces aqui:

1
2
3
4
PdfFile = ActiveWorkbook.FullName
i = InStrRev(PdfFile, ".")
If i > 1 Then PdfFile = Left(PdfFile, i - 1)
PdfFile = PdfFile & "_" & ActiveSheet.Range("B21").Value & ".pdf"

Te voy a contar que haces, teniendo en cuenta que las pruebas las he realizado en el directorio C:\Tmp

Linea 1 - Nombre largo de fichero Excel abierto, es decir ruta, nombre y extensión.
PdfFile vale

1
C:\Tmp\PRUEBA email.xlsm

Línea 2 - Buscas la posición del punto
i vale

1
20

Línea 3 - Tomas los caracteres anteriores al punto
PdfFile vale

1
C:\Tmp\PRUEBA email

Línea 4 - Encadenas el texto anterior con un guion bajo, el texto de la celda B21 y el texto de la extensión
Es decir

1
2
3
4
5
6
7
8
PdfFile & "_" & ActiveSheet.Range("B21").Value & ".pdf"
 
Donde:
   PdfFile = C:\Tmp\PRUEBA email
   B1      = Resumen Ventas  31.07.2018
 
Es decir:
    PdfFile = "C:\Tmp\PRUEBA email" + "_" + "Resumen Ventas  31.07.2018" + ".pdf"


Supongo que lo que deseas realmente es conseguir esto:

1
PdfFile = C:\Tmp\Resumen Ventas  31.07.2018.pdf

Hay varias formas de hacerlo:

1.- La función CurDir() te devuelve el directorio de datos de Excel.

2.- Para tomar la ruta del libro abierto

1
2
3
With ActiveWorkbook
    Ruta = Left$(.FullName, Len(.FullName) - len(.Name))
End With

3.- Otra forma de hacer lo mismo:

1
2
3
4
5
6
Ruta = ActiveWorkbook.FullName
Pun = 0
For a = Len(Ruta) To 1 Step -1
    If Mid$(Ruta, a, 1) = "\" Then Pun = a: Exit For
Next
Ruta = Left(Ruta, Pun)

Saludos.
\\//_
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

NOMBRE DEL PDF ERRONEO

Publicado por Jose (30 intervenciones) el 10/08/2018 13:24:51
Hola Antoni,
Tienes razon hasta un cierto punto.
Aveces no entiendo un carajo de lo que estoy haciendo, pero me guio antes de pedir AYUDA por los temas de los foros y los videos.
No soy un profesional de las cosas que hago en este momento y por esto pido de vez en cuando ayuda en los foros cuando no me aclaro o no entiendo mucho sobre el tema.
Asi que pido perdon por las molestias.
Para finalizar, lo que pretendo es que el documento PDF adjunto tenga solo el nombre de la celda B21 y nada más.
He visto el error que hago de que doy nombre al PdfFile como al ActiveWoorkBook.FullName y despues pido El PDF con (PdfFile = PdfFile & "_" &
1
2
3
4
5
6
ActiveSheet.Range("B21").Value & ".pdf")
 
PdfFile = ActiveWorkbook.FullName
i = InStrRev(PdfFile, ".")
If i > 1 Then PdfFile = Left(PdfFile, i - 1)
PdfFile = PdfFile & "_" & ActiveSheet.Range("B21").Value & ".pdf"

Despues de tu respuesta y varios intento, no me va.

Gracias.

Saludos,
Jose
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 Antoni Masana

NOMBRE DEL PDF ERRONEO

Publicado por Antoni Masana (829 intervenciones) el 11/08/2018 22:53:05
Perdona mi tono. Creo que he estado un poco pasado de rosca.

Y además me he explicado de .... pena.

Supongo que lo que deseas realmente es añadir al nombre de la celda B21 la ruta del Excel. Prueba esto:

1
2
3
4
With ActiveWorkbook
    Ruta = Left$(.FullName, Len(.FullName) - len(.Name))
End With
PdfFile = PdfFile & "_" & ActiveSheet.Range("B21").Value & ".pdf"

o esto que es lo mismo que lo anterior

1
2
Ruta = Left$(ActiveWorkbook.FullName, Len(ActiveWorkbook.FullName) - len(ActiveWorkbook.Name))
PdfFile = PdfFile & "_" & ActiveSheet.Range("B21").Value & ".pdf"

Esto se explica asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Ruta_File_xls = ActiveWorkbook.FullName   ' --- Devuelve la ruta, el nombre del fichero y la extensión
Solo_File_xls = ActiveWorkbook.Name       ' --- Devuelve          el nombre del fichero y la extensión
 
' ---&--- Esto es un pilin más largo de explicar. 
'         Supongamos que tenemos este fichero: C:\Tmp\Libro1.xlsm 
'         Esto es lo que hay en la variable Ruta_File_Xls y tiene 18 caracteres.
 
'         len(Ruta_File_Xls) = 18
 
'         En la variable Solo_File_Xls tenemos: Libro1.xlsm  y tiene 11 caracteres
 
'         Len(Solo_File_Xls) = 11
'         Restamo 18 - 11 que es igual a 7
'         Tomamos los 7 caracteres de la izquierda y da como resultado C:\Tmp\
 
Ruta = Left$(Ruta_File_Xls, len(Ruta_File_Xls) - Len(Solo_File_Xls))
 
'  ---&--- Y ahora montamos el PDF
 
PdfFile = Ruta &  ActiveSheet.Range("B21").Value & ".pdf"

Espero haberme explicado mejor.

Saludos.
\\//_
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

NOMBRE DEL PDF ERRONEO

Publicado por Jose (30 intervenciones) el 13/08/2018 00:03:36
Buenas tardes Antoni,

Sobre el tema del tono, no te preocupes.
Te entiendo perfectamente y te agradezco tu tiempo y esfuerzo en ayudarme y entender lo que quiero con mis explicaciones que doy..
Por ser breve te explico:
Tal como tengo ahora el documento he conseguido una cosa y he perdido otra cosa.
Si vas ha hacer la prueba en apretar el boton de enviar, veras que se te abre el correo con todos los requeridos en la macro pero no se adjunta el documento PDF...esto es lo que he perdido.
Lo que he ganado con tu ayuda es crear el documento PDF con el nombre que se indica en la celda "B21" y guardarse en la carpeta donde se encuantra la plantilla excel.
Pues el remate final seria que se adjunte el PDF al correo y abrirse al mismo tiempo, para comprobar si los datos que se guardaron en el documento PDF son los correctos.
Con la esperanza de haberme explicado bien, me despido deseandote un buen dia y otra vez darte las gracias por tu aporte.

Adjunto el documento.

Un saludo muy grande,
Jose
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 Antoni Masana

NOMBRE DEL PDF ERRONEO

Publicado por Antoni Masana (829 intervenciones) el 13/08/2018 12:23:29
Te has liado un poco y yo te he ayudado a la confusión. Remarco losa cambios importantes para que el PDF se genere en el mismo directorio del libro Excel abierto.

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
Sub Macro1()
    Application.ScreenUpdating = False
 
    Dim IsCreated As Boolean
    Dim i As Long
    Dim PdfFile As String, Title As String, Ruta As String
    Dim OutlApp As Object
 
    Title = Range("A1")
 
    ' ---&--- Destino del PDF
 
    With ActiveWorkbook
        Ruta = Left$(.FullName, Len(.FullName) - Len(.Name))
    End With
    PdfFile = Ruta & ActiveSheet.Range("B21").Value & ".pdf"
 
    ' ---&--- Creacion del PDF
 
    With ActiveSheet
        .ExportAsFixedFormat Type:=xlTypePDF, _
                             Filename:=PdfFile, _
                             Quality:=xlQualityStandard, _
                             IncludeDocProperties:=True, _
                             IgnorePrintAreas:=False, _
                             OpenAfterPublish:=False
    End With
 
    ' ---&--- Esto sobra
 
    'ChDir "C:\Users\JOSE-X\Desktop\PRUEBA MAIL"
 
    ' --- Correo
 
    On Error Resume Next
    Set OutlApp = GetObject(, "Outlook.Application")
    If Err Then
       Set OutlApp = CreateObject("Outlook.Application")
       IsCreated = True
    End If
 
    With OutlApp.CreateItem(0)
        .Subject = Title
        .To = Sheet1.Range("B4").Value '
        .Body = Sheet1.Range("B30").Value
        .Attachments.Add PdfFile
        .Display
    End With
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
1
Comentar

NOMBRE DEL PDF ERRONEO

Publicado por Jose (30 intervenciones) el 13/08/2018 13:02:58
Buenos días Antoni,

A veces me pasa esto de liar las cosas. Lo siento por todas las molestias.
Gracias por la solución.
Al final no se me abria el PDF, para el visto bueno, pero lo he conseguido modificando
OpenAfterPublish:=False con OpenAfterPublish:=True.
Ire estudiando los datos que has modificado para entender a donde metia la pata.
Muchas gracias.
Un saludo,
Jose
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
Revisar política de publicidad