Excel - EXPORTAR HOJA EXCEL A NUEVO LIBRO EXCEL CON NOMBRE DE UNA CELDA+TEXTO FIJO

 
Vista:
sin imagen de perfil
Val: 179
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

EXPORTAR HOJA EXCEL A NUEVO LIBRO EXCEL CON NOMBRE DE UNA CELDA+TEXTO FIJO

Publicado por Quico (106 intervenciones) el 08/02/2019 06:32:24
Tengo una gráfica + macros en una hoja de un libro de varias páginas.
Me interesa exportar la parte de resultados de esa hoja, sin los botones macros. Eso se corresponde con Range("A2:V35").Select
En la gráfica, todas la celdas estan bloqueadas para que nadie altere resultados, pero si existe una única celda en la que hay que escribir a mano, un nombre X. Esa celda es "C4" y es la que ha de dar el nombre al nuevo libro excel.

En la macro, se pregunta el lugar dónde queremos guardarla, etc...., pero a la hora de guardarlo, me ofrece automaticamente solo el NOMBRE con el campo de texto fijo. ¡¡No encuentro la forma de que me reconoza el valor de C4!!

Esta es la parte dónde le indico el nombre:
GuardarComo = Application.GetSaveAsFilename(InitialFileName:=ruta & Cells(i, "C4") & "_Grafico_Resultados", _ <--AQUI FALLA LO DE Cells(i,"C4")
fileFilter:="Libro de Excel(*.xlsx), *.xlsx", _
Title:="xxx - guardar hoja excel como archivo nuevo.")

Y esta es la macro completa:
Sub ExportarEXCEL()
Dim xWs As Worksheet
Dim Rng As Range
Set Rng = Application.Selection
Dim ruta As String

Dim Titulo, Directorio As String
Titulo = "SELECCIONA UNA RUTA O CREA UNA CARPETA PARA GUARDAR EL EXCEL."

'Se genera un mensaje con WARNING informando sobre el proceso y con la posibilidad de cancelarlo.
If MsgBox("Antes de proceder, revisa el nombre correcto del grafico." & Chr(10) & "(celda azul correspondiente a C4)" & Chr(10) & " " & Chr(10) & " ¿ESTAS SEGURO DE PROCEDER AHORA?", vbYesNo + vbExclamation, "xxxxxx") = vbNo Then Exit Sub

'Elegimos la carpeta donde queremos guardar los archivos
On Error Resume Next
With CreateObject("shell.application")
ruta = .browseforfolder(0, Titulo, 0).Items.Item.Path
End With: On Error GoTo 0

'Si no elegimos la carpeta de destino, la macro se para
If ruta = Empty Then
MsgBox "SELECCIONA UNA CARPETA DE DESTINO", vbExclamation

Exit Sub
End If


'Selección de la parte a exportar a EXCEL
ru = ThisWorkbook.Path & "\"

Range("A2:V35").Select <--Le indicamos las celdas que ha de copiar
Application.Workbooks.Add
Set xWs = Application.ActiveSheet
Rng.Copy Destination:=xWs.Range("A1") <--Le indicamos que en el nuevo libro se copie en la celda A1


'NombreHoja = ActiveSheet.Name
Confirmacion = MsgBox("¿Desea guardar esta hoja como un archivo nuevo?", _
vbQuestion + vbYesNo, "xxxxx - Exportando Excel")
Application.ScreenUpdating = False
If Confirmacion = vbYes Then

ruta = ruta & "\" '<--Con esta variable le indicamos que se guarden los informes en la carpeta que hemos creado.

NombreArchivo = ActiveWorkbook.Name

GuardarComo = Application.GetSaveAsFilename(InitialFileName:=ruta & Cells(i, "C4") & "_Grafico_Resultados", _ <--AQUI FALLA LO DE Cells(i,"C4")
fileFilter:="Libro de Excel(*.xlsx), *.xlsx", _
Title:="xxx - guardar hoja excel como archivo nuevo.")


If GuardarComo = False Then
Workbooks(NombreArchivo).Close SaveChanges:=False
Else
With Application.WorksheetFunction
Extension = .Trim(Right(.Substitute(GuardarComo, ".", .Rept(" ", 500)), 500))
End With

Select Case Extension
Case Is = "xlsx"
ActiveWorkbook.SaveAs GuardarComo
Case Else
ActiveWorkbook.SaveAs GuardarComo
End Select
End If
Else
End If

' Para cerrar el nuevo excel creado
ActiveWorkbook.Close False

'Mensaje de texto de creación de carpetas
Respuesta = MsgBox("Se ha generado un nuevo archivo excel" & vbCrLf & " con resultados del mes." & vbCrLf & vbCrLf & " GRACIAS POR ESPERAR.", 64, "xxx- Exportando a EXCEL")

Exit Sub

End Sub



¿Alguien me puede ayudar a que indentifique la celda C4 como parte del nombre?
He probado Range ("C4") y tampoco me reconoce el contenido de la celda C4.

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
sin imagen de perfil
Val: 179
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

EXPORTAR HOJA EXCEL A NUEVO LIBRO EXCEL CON NOMBRE DE UNA CELDA+TEXTO FIJO

Publicado por Quico (106 intervenciones) el 09/02/2019 08:43:12
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Sub ExportarEXCEL()
Dim xWs As Worksheet
Dim Rng As Range
Set Rng = Application.Selection
Dim ruta As String
 
Dim Titulo, Directorio As String
Titulo = "SELECCIONA UNA RUTA O CREA UNA CARPETA PARA GUARDAR EL EXCEL."
 
'Se genera un mensaje con WARNING informando sobre el proceso y con la posibilidad de cancelarlo.
If MsgBox("Antes de proceder, revisa el nombre correcto del grafico." & Chr(10) & "(celda azul correspondiente a C4)" & Chr(10) & " " & Chr(10) & " ¿ESTAS SEGURO DE PROCEDER AHORA?", vbYesNo + vbExclamation, "xxxxxx") = vbNo Then Exit Sub
 
'Elegimos la carpeta donde queremos guardar los archivos
On Error Resume Next
With CreateObject("shell.application")
ruta = .browseforfolder(0, Titulo, 0).Items.Item.Path
End With: On Error GoTo 0
 
'Si no elegimos la carpeta de destino, la macro se para
If ruta = Empty Then
MsgBox "SELECCIONA UNA CARPETA DE DESTINO", vbExclamation
 
Exit Sub
End If
 
 
'Selección de la parte a exportar a EXCEL
ru = ThisWorkbook.Path & "\"
 
Range("A2:V35").Select <--Le indicamos las celdas que ha de copiar
Application.Workbooks.Add
Set xWs = Application.ActiveSheet
Rng.Copy Destination:=xWs.Range("A1") <--Le indicamos que en el nuevo libro se copie en la celda A1
 
 
'NombreHoja = ActiveSheet.Name
Confirmacion = MsgBox("¿Desea guardar esta hoja como un archivo nuevo?", _
vbQuestion + vbYesNo, "xxxxx - Exportando Excel")
Application.ScreenUpdating = False
If Confirmacion = vbYes Then
 
ruta = ruta & "\" '<--Con esta variable le indicamos que se guarden los informes en la carpeta que hemos creado.
 
NombreArchivo = ActiveWorkbook.Name
 
GuardarComo = Application.GetSaveAsFilename(InitialFileName:=ruta & Cells(i, "C4") & "_Grafico_Resultados", _ <--AQUI FALLA LO DE Cells(i,"C4")
fileFilter:="Libro de Excel(*.xlsx), *.xlsx", _
Title:="xxx - guardar hoja excel como archivo nuevo.")
 
 
If GuardarComo = False Then
Workbooks(NombreArchivo).Close SaveChanges:=False
Else
With Application.WorksheetFunction
Extension = .Trim(Right(.Substitute(GuardarComo, ".", .Rept(" ", 500)), 500))
End With
 
Select Case Extension
Case Is = "xlsx"
ActiveWorkbook.SaveAs GuardarComo
Case Else
ActiveWorkbook.SaveAs GuardarComo
End Select
End If
Else
End If
 
' Para cerrar el nuevo excel creado
ActiveWorkbook.Close False
 
'Mensaje de texto de creación de carpetas
Respuesta = MsgBox("Se ha generado un nuevo archivo excel" & vbCrLf & " con resultados del mes." & vbCrLf & vbCrLf & " GRACIAS POR ESPERAR.", 64, "xxx- Exportando a EXCEL")
 
Exit Sub
 
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
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

EXPORTAR HOJA EXCEL A NUEVO LIBRO EXCEL CON NOMBRE DE UNA CELDA+TEXTO FIJO

Publicado por Antoni Masana (2477 intervenciones) el 10/02/2019 17:05:33
El fallo esta el como tratas la referencia a la celda:

1
...:=ruta & Cells(i, "C4") & "_Grafico_Resultados", _

Me quedo solo con el trozo de referencia a las celda (en negrita).
La i no se de donde sale.

El objeto CELLS() define una celda y tiene dos parámetros, FILA Y COLUMNA, Fila es un número y la columna una Letra o un número.

En tu caso:

1
2
3
...:=ruta & Cells(4, "C") & "_Grafico_Resultados", _
o
...:=ruta & Cells(4, 3) & "_Grafico_Resultados", _

El objeto RANGE() define una celda o un rango de celas y el farmato para tu caso es un texto.

En tu caso:

1
...:=ruta & Range("C4") & "_Grafico_Resultados", _


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
sin imagen de perfil
Val: 179
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

EXPORTAR HOJA EXCEL A NUEVO LIBRO EXCEL CON NOMBRE DE UNA CELDA+TEXTO FIJO

Publicado por Quico (106 intervenciones) el 10/02/2019 23:08:37
Gracias Antonio.
Esta misma mañana conseguí hacerlo creando antes esya condición:
Nombre = Range("C4").Value

y poniéndolo así:
With ActiveWorkbook
.SaveCopyAs Filename:= _
ruta & Nombre & "_UnTexto_" & Format(Now, "dd-mm-yyyy") & ".xlsx"

Muchas gracias !! :-)
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