Macro para vincular una celda a un archivo pdf

Utilizo excel 2007, en mi sistema de facturación tengo varias macros, al pulsar un botón me guarda en pdf, imprime, crea siguiente numero de factura y manda la información a una tabla dinámica que lo organiza por numero de albarán, hasta ahí, todo estupendo, pero ahora quiero crear una macro que haga un vinculo o hipervínculo desde la celda donde esta ubicado el nº de albarán al archivo pdf creado, que está en otra carpeta, lo he intentado de varias maneras y nada, me da varios errores y lo tengo que hacer manualmente uno por uno cada albarán, no sé si podrá ayudarme.

1 respuesta

Respuesta
1
Bueno tendrías que pasarme el archivo con las macros
Y decirme la ruta de la carpeta donde están los pdf
Hola, te mando la macro completa, esta hecha a base de varias macros que he ido encontrando según mis necesidades y gracias a las respuestas que hay aquí, en esta web, no sé si sera un desastre, je je, pero la verdad es que me funciona muy bien, solo quería incorporarle esa función de hipervínculo,
El hipervínculo debería crearse en la celda de la tabla dinámica correspondiente al nº de albarán por la que se ordena automáticamente y que he seleccionado con negrita y subrayado HOJA ( RESUMEN) CELDA (B251)
Los pdf se encuentran en la RutaArchivo, es lo primero que crea la macro, su ubicacion es: D:\CARNICERIA\CARNICERIA\FACTURACION\ARCHIVOS_PDF\
Y el nombre del archivo esta constituido por el nº cliente (A3)
Nombre del cliente (D3)
Nº de albarán (E10
tal que así: 340eliseomarquez101228.pdf
 Sub guardacopia()
Dim RutaArchivo As String
RutaArchivo = Sheets("FACTURA").Range("A35") & Sheets("FACTURA").Range("A3") & Sheets("FACTURA").Range("D3") & Sheets("FACTURA").Range("E10")
    Sheets("IMPRIMIR").Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        RutaArchivo, _
        Quality:=xlQualityStandard _
        , IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
    Sheets("FACTURA").Select
Dim nbre As String
ActiveSheet.Range("A2").Select
nbre = Sheets("IMPRIMIR").Range("A1") & Sheets("IMPRIMIR").Range("A4") & Sheets("IMPRIMIR").Range("A2") & Sheets("IMPRIMIR").Range("A3")
Sheets("IMPRIMIR").Copy
Application.DisplayAlerts = False
Sheets("IMPRIMIR").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Set wb = ActiveWorkbook
With wb
.SaveAs Filename:=nbre, _
FileFormat:=xlNormal, CreateBackup:=False
Application.DisplayAlerts = False
.Close True
Range("C57:J57").Select
    Selection.Copy
    Sheets("RESUMEN").Select
    Range("A251").Select
    Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
        , SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
         Range("B251").Select
    Range("A3:H251").Select
    Application.CutCopyMode = False
    ActiveWorkbook.Worksheets("RESUMEN").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("RESUMEN").Sort.SortFields.Add Key:=Range("B3:B251") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("RESUMEN").Sort
        .SetRange Range("A3:H251")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A2").Select
    Sheets("FACTURA").Select
    Range("C15:D31").Select
    Selection.ClearContents
    Range("C36:C50").Select
    Selection.ClearContents
    Range("H29").Select
    Selection.AutoFill Destination:=Range("H15:H29"), Type:=xlFillDefault
    Range("H15:H29").Select
    Range("I1").Select
    Selection.ClearContents
    Range("C15").Select
End With
Set wb = Nothing
Dim NumConsec As Long
Dim strConsec As String
Sheets("FACTURA").Range("H1").Select
Selection.NumberFormat = "@"
If IsEmpty(ActiveCell) Then
Sheets("FACTURA").Range("H1").Value = "000000"
Else
NumConsec = Val(Sheets("IMPRIMIR").Range("K1").Value) + 1
strConsec = Right("000000" & Trim(Str(NumConsec)), 6)
Sheets("FACTURA").Range("H1").Value = strConsec
End If
End Sub
Si tienes alguna duda me la remites sin falta,
Agradecido de antemano
Pues como tu recién estoy en periodo de aprendizaje y me puse como experto para aprender más bueno te pido que me pases el archivo para ver como actúa la macro en si.. como para ahorrar un poco de tiempo en todo .. la otra cosa que te quería decir es como para que deseas que te genere un hipervínculo (motivo )..
Hola de nuevo, creo que me sera imposible mandarte el archivo pues ademas de tener muchas hojas, también contiene mucha información confidencial de mis clientes, y si quito hojas o información te dará errores, pero creo que no lo considero relevante para lo que pido ayuda, lo que necesito ya lo hago manualmente y es muy sencillo, es hipervincular la celda B251 de la hoja RESUMEN a un archivo pdf generado anteriormente, solo es eso, es muy fácil, te lo aseguro, pero es un trabajo de chinos, lo que no consigo es crear una rutina que me lo haga automático, pues grabo una macro y copio la información en el módulo, y me da error, no lo consigo y estoy seguro que es de lógica, pero mis conocimientos son casi nulos, aprendo a base de tropezones, el motivo de generar el hipervínculo es por la razón de no crear un copia de papel, la idea es que quede almacenada sin imprimir en papel, pero disponible para visualizarla cuando se necesite, entonces solo habría que pulsar en el vinculo creado desde la hoja de Excel, repito que lo que necesito lo estoy haciendo a mano día a día sin problemas, pero es muy repetitivo y me gustaría automatizarlo, gracias
Entiendo tu desconfianza aunque somos de diferentes países ;pero en fin al tema me la pones un poco difícil para acoplar atu macros pero bueno ya mira solo tendrías que intregrarle en tu cuadro de resumen es decir que así como mandas el numero al cuadro de resumen le agregues a la celda de lado el hipervínculo:
Por así decirlo si esta en numero de albarán Range("b251") el hiper vinculo iría así:
Range("C251").FormulaR1C1 = "=HYPERLINK(""" & "D:\CARNICERIA\CARNICERIA\FACTURACION\ARCHIVOS_PDF\"  & RutaArchivo & ".pdf" """ )"
Esto funcionaria siempre y cuando la variable rutaarchivo sea igual solamente al nombre del pdf es decir como me dijiste 340eliseomarquez101228 sin el .pdf ya que se lo estoy agregando ( ".pdf" ) bueno espero que esto te ayude un poco.
Ya sabes en la rutina que utilizices de llevar al cuadro de resumen le acoplas esto.
Hola, perdón por la tardanza en contestar, he probado tu opción y me sigue dando error, primero tal como la pones, después he modificado algo como: la RutaArchivo ya lleva la ubicación donde se generara el archivo, o sea, es el nombre completo del archivo, excepto .PDF que lo genera al " guardar como", que es lo primero que hace la macro. Supongo que hay que añadirle la extensión pdf.
Algo que no entiendo es por que pones el hipervínculo una celda (C251) al lado de la celda que necesito(B251), en esa celda se genera un nº consectivo de albarán, y es ese numero el que deseo vincular con su correspondiente archivo PDF, cuando lo hago manual, los números de esa celda se vuelven de color azul y subrayado, y al pulsarlo me abre el pdf
FECHA Nº FACTURA CLIENTE Nº TOTAL S/I.  TOTAL C/I.  ARTÍCULOS BENEF.                      101239  esta es la celda (B251) y su archivo es D:\CARNICERIA\CARNICERIA\FACTURACION\ARCHIVOS_PDF\340eliseomarquez101239.pdf 
 Range("B251").FormulaR1C1 = "=HYPERLINK(""" & "D:\CARNICERIA\CARNICERIA\FACTURACION\ARCHIVOS_PDF\"  & RutaArchivo & ".pdf" """ )"  En negrita subrayado te pongo el error que me da y pone error de sintaxis    
He probado a cambiar la RutaArchivo, y me da el mismo error de sintaxis
Range("B251").FormulaR1C1 = "=HYPERLINK(""" & RutaArchivo & ".pdf" """ )"
Espero no haberlo complicado demasiado, pero necesito esa ayuda, un saludo
Por lo que veo quieres que aparezca el numero de de factura y que al hacer click en este te lleve al archivo pdf ya mira como te lo pase creo que e es muy difícil acoplarlo con variables así que te paso otro modo
ActiveSheet.Hyperlinks.Add Anchor:=Range("b251"), Address:="Aca pones la ruta", TextToDisplay:="Aca pones el nombre"
Bueno como ves ahora la tienes más fácil en el nombre solo tendrías que poner el numero de factura y en la ruta tendrías que poner la variable RUTAARCHIVO & "pdf" o agregarles más variables que equivalen al archivo que te quieres redireccionar.
Hola Leandropaul, después de algunos fallos y errores ( por mi parte, que quede claro) he conseguido por fin adaptarlo a mis necesidades, funciona de maravilla, agradezco enormemente tanto su ayuda como su dedicación, un saludo y gracias por todo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas