Obtener el nombre de un archivo de acuerdo a una ruta ya obtenida en variable

Mi pregunta es la como puedo obtener el nombre de un aechivo que acabo de abrir con un opendialog.

Lo que quiero hacer es copiar distintos rangos de celdas de un archivo a otro por medio de una macro este es el código:

Sub copiar()
Dim Filename As String

'Dim nombre As String
If MsgBox("Desea Importar los datos para este mes", vbYesNo, "Pregunta") = vbYes Then
'Haga algo aquí
ChDir "C:"
Filename = Application.GetOpenFilename("Archivos de excel,*.xlsx*", _
, "Seleccione archivo para obtener los datos de enero.") 'Application. GetOpenFilename para abrir ubicación
'de archivos de excel Worksheets("Hoja1").Activar
Range("B14:B15").Select
Selection.Copy
Windows("LIE 2012 yo.xlsm").Activate
Range("H8").Select
ActiveSheet.Paste
Selection.NumberFormat = "#,##0"

'--Hasta aquí me funciona muy bien, pero si agrego este código para que me active la ventana del archivo recién abierto no me lo hace ya que la variable nombre debe obtener el nombre del aechivo de la variable filename (es lo que no se como hacer)

'Windows(nombre).Activate
'Range("B16:B17").Select
'Selection.Copy
'Windows("LIE 2012 yo.xlsx").Activate
'Range("H12").Select
'ActiveSheet.Paste
'Selection.NumberFormat = "#,##0"
'nombre = "" 'limpiar variable
Else
'Seleccionó NO, no haga nada
End If

2 Respuestas

Respuesta
1

Utiliza la siguiente instrucción

Workbooks. Open Filename

Saludos. Dam

Respuesta
1

Para guardar en una variable el nombre del archivo que acabas de abrir utiliza esta sentencia:

nombre1 = ActiveWorkbook.Name



De esta manera utilizarás la variable nombre1 para llamar a dicho archivo

No olvides finalizar la consulta

gracias por la respuesta, ya puse en el código lo que me escribiste nombre1 = ActiveWorkbook.Name en la parte del código abajo de donde se abre el cuadro de dialogo pero no me guarda el nombre del archivo abierto q n este caso se llama ingresos sino que guarda el nombre del archivo principal LIE 2012 yo.xlsm ejecute el código depurandolo y ahi me di cuenta de eso

aquí te pongo el código para q veas en que parte puse la sentencia

Sub copiar()
Dim Filename As String
If MsgBox("Desea Importar los datos para este mes", vbYesNo, "Pregunta") = vbYes Then
'Haga algo aquí
ChDir "C:"
Filename = Application.GetOpenFilename("Archivos de excel,*.xlsx*", _
, "Seleccione archivo para obtener los datos de enero.") 'Application.GetOpenFilename para abrir ubicación
'de archivos de excel Worksheets("Hoja1").Activar

nombre1 =ActiveWorkbook.Name
Range("B14:B15").Select
Selection.Copy
Windows("LIE 2012 yo.xlsm").Activate

al correr la macro depurando con el f8 veo q la variable lleva el nombre de mi archivo al que quiero pegarle las celdas del primero.....

por eso en mi pregunta quería saber la forma de obtener el nombre del archivo que se abre con el cuadro de dialogo ya que en la variable filename se guarda toda la ruta incluyendo el nombre

La secuencia correcta de código es esta:

sub copiar()

...

...

...

archivo = application.getopenfilename

workbooks.open archivo

nombre1 = activeworkbook.name

...

...

...

end sub

muchas gracias por la respuesta me fue de gran utilidad, solo una ultima duda como cierro el formulario sin que me salga el cuadro de dialogo que me pregunte si deseo guardar los cambios ya que a este libro no se le hicieron cambios solo se copiaron datos

Windows(nombre1).Close (aquí necesita el parámetro que diga que no se desean guardar los cambios)


y no quisiera que el usuario vea que se modifico algo solo que simplemente copie y vuelva a cerrar sin que intervenga de nuevo


Escribe esta sentencia al principio de la macro y todo listo. No aparecerán esos mensajes

Application.DisplayAlerts = False

No olvides finalizar la pregunta

excelente, ya esta hecha la macro....

muchas gracias por la ayuda. como apenas empiezo a utilizar macros posiblemente después tenga mas dudas al respecto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas