Excel - Guardar como con referencia a una celda

 
Vista:

Guardar como con referencia a una celda

Publicado por Ariel (3 intervenciones) el 17/04/2019 19:52:03
Estimados estoy trabajando en un proyecto donde necesito que al presionar un botón "guardar" la macro realice lo siguiente: Me guarde un archivo en formato xls de la hoja activa y en formato pdf pero que además el nombre del archivo sea el de una celda específica.

El tema es que es una programa de presupuestos y quiero que cada vez que se genere uno nuevo el archivo se guarde con con nombre que será el número asignado en una celda. Y para evitar que los precios se modifiquen en el excel me guarde una copia con formato pdf y la propia en xls para que permita modificación.

Gracias
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

Guardar como con referencia a una celda

Publicado por Martha (330 intervenciones) el 19/04/2019 22:48:08
Ariel,

Estas dos macros que te pongo a continuación hacen lo que pides.

Las puedes llamar desde un procedimiento sub que se ejecute al pulsar el botón.

Funcionan en Office 365. Si tienes una versión más antigua quizá tengas que cambiar el FileFormat y el ExportAsFixedFormat por los parámetros apropiados.

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
50
51
52
53
'Esta macro guarda el archivo actual con el string que tenga la cenda A1 de la Hoja1
Sub Guardar_Copia()
Dim WScript As Object
Dim MisDocs As String, Nombre_Archivo As String
 
    Set WScript = CreateObject("WScript.Shell")
    MisDocs = WScript.SpecialFolders("MyDocuments")
 
    If IsEmpty(Worksheets("Hoja1").[A1]) Then
        MsgBox "La celda A1 no puede estar vacía"
        Exit Sub
    End If
 
    Nombre_Archivo = MisDocs & "\" & Worksheets("Hoja1").[A1].Value
 
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Nombre_Archivo, FileFormat:=51 'Fileformat 51 corresponde a un xlsx
 
    If Not WScript Is Nothing Then
       Set WScript = Nothing
    End If
 
    Application.DisplayAlerts = True
 
End Sub
 
'Esta macro exporta la hoja activa al formato PDF
Sub imprime_a_PDF()
Dim Nombre_Archivo As String, MisDocs As String
 
    Set WScript = CreateObject("WScript.Shell")
    MisDocs = WScript.SpecialFolders("MyDocuments")
 
    If IsEmpty(Worksheets("Hoja1").[A1]) Then
        MsgBox "La celda A1 no puede estar vacía"
        Exit Sub
    End If
 
    Nombre_Archivo = MisDocs & "\" & Worksheets("Hoja1").[A1].Value & ".pdf"
 
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=Nombre_Archivo, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=True 'Si no quieres que se abra al publicar pon FALSE
 
    If Not WScript Is Nothing Then
 
       Set WScript = Nothing
 
    End If
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
0
Comentar