Hace ya algunos años aprendimos la manera de seleccionar una carpeta o directorio empleando en nuestras macros el Explorador de Windows (ver).
Hoy iremos un paso más lejos y no nos quedaremos en la carpeta, si no que seleccionaremos un fichero concreto, con su ruta completa (nombre incluido). Para ello emplearemos el método .GetOpenFilename, lo que no mostrará el cuadro de diálogo estándar Abrir, obteniendo el nombre de archivo que seleccionemos, pero lo más importante, sin que en realidad se abra ningún archivo!!!... lo que será cómodo para conseguir rutas completas.
En el ejemplo que propongo, conseguir dicha ruta mediante la selección directa en la ventana Abrir, y servirá precisamente para esto. En el código siguiente he modificado el Título de la ventana, además de aplicar un filtro de posibles tipos de ficheros a mostrar, dejando sólo visibles los ficheros .xlsx.
Insertamos un módulo en nuestro Proyecto de VB en el editor de VB, y en él la macro siguiente:
Al ejecutar nuestra macro veremos la siguiente ventana:
Tras seleccionar un fichero cualquiera, se mostrará un Cuadro de mensaje de texto con la ruta y nombre completo del archivo seleccionado, y en mi caso, posteriormente se abrirá dicho archivo (ya que lo he forzado con Workbooks.Open).
Hoy iremos un paso más lejos y no nos quedaremos en la carpeta, si no que seleccionaremos un fichero concreto, con su ruta completa (nombre incluido). Para ello emplearemos el método .GetOpenFilename, lo que no mostrará el cuadro de diálogo estándar Abrir, obteniendo el nombre de archivo que seleccionemos, pero lo más importante, sin que en realidad se abra ningún archivo!!!... lo que será cómodo para conseguir rutas completas.
En el ejemplo que propongo, conseguir dicha ruta mediante la selección directa en la ventana Abrir, y servirá precisamente para esto. En el código siguiente he modificado el Título de la ventana, además de aplicar un filtro de posibles tipos de ficheros a mostrar, dejando sólo visibles los ficheros .xlsx.
Insertamos un módulo en nuestro Proyecto de VB en el editor de VB, y en él la macro siguiente:
Sub SeleccionFichero() 'identificamos el fichero y su ruta para importarlo Dim RutaArchivo As String 'controlamos algún posible error. On Error Resume Next 'damos valor a la variable Filename 'además hemos cambiado el Título que aparecerá en la ventana diálogo 'y forzamos para que sólo abra ficheros de Excel (extensión .xlsx) RutaArchivo = Application.GetOpenFilename(Title:="Prueba selección ficheros Excelforo", _ filefilter:="Excel files (*.xlsx), *.xlsx") 'si hemos seleccionado algún archivo muestra un cuadro mensaje If Not RutaArchivo = "False" Then MsgBox RutaArchivo End If 'con el método .Open abrimos el fichero seleccionado 'o cualquier otra acción que requiera la ruta de un fichero Workbooks.Open FileName:=RutaArchivo End Sub
Al ejecutar nuestra macro veremos la siguiente ventana:
Tras seleccionar un fichero cualquiera, se mostrará un Cuadro de mensaje de texto con la ruta y nombre completo del archivo seleccionado, y en mi caso, posteriormente se abrirá dicho archivo (ya que lo he forzado con Workbooks.Open).
Como hago para cerrar el archivo seleccionado
ResponderEliminarhola Bayron, que tal estás?
Eliminarun gusto saludarte igualmente.
para cerrar el fichero puedes emplear el método .Close del Workbooks
Saludos cordiales
Buenos días,
ResponderEliminarhay alguna forma de meterle la ruta de la carpeta para buscar por defecto ?
Gracias
Hola Josém
Eliminarsí, podrías añadir en la fila 04 del código más arriba:
MyPath = "E:\excelforo"
ChDrive MyPath
ChDir MyPath
Saludos
Hola señor Excelforo, puedes ayudarme con lo siguiente tengo este código que cierra el libro activo
ResponderEliminarActiveWorkbook.Close False
pero como hago para que tambien me cierre el directorio del libro activo,
gracias por su ayuda.
Hola!
Eliminarno entiendo a qué te refieres con cerrar el 'directorio del libro activo'??.. te refieres a cerrar el explorador de Windows?
Saludos
hola Ismael seria cerrar la carpeta que se encuentra abierta del libro activo.
ResponderEliminar???
Eliminarcómo se cierra una carpeta en el explorador de Windows??
Así es Ismael
ResponderEliminarQue tal, tengo una duda espero me puedas ayudar. Para seleccionar mas de un archivo es con MultiSelect:=True, como le hago para que al momento de seleccionar dos o mas archivos asi mismo me los muestre en el MsgBox. Gracias
ResponderEliminarHola José Carlos,
Eliminarintentaré subir una explicación al blog en cuanto pueda...
Saludos
hola excelforo:
ResponderEliminaryo necesito encontrar ficheros en un directorio del explorador del tipo XML, pero que empiecen empiezan por un texto.
Por ejemplo todos los pp*.xml que haya en una ruta determinada
No se si esto es posible
Gracias de antemano
Hola,
Eliminarparece bastante complejo a priori, ya que sólo es configurable la extensión o tipo de fichero a buscar...
Buscaré alguna posible solución alternativa.
Un saludo
Hola Ismael
ResponderEliminarPuedo obtener el nombre del solo archivo sin la ruta para pegarlo en un TextBox
Hola Jhon,
Eliminarcon este método podrías empleando la función Split con el separador \.. quedándote con el último elemento de la Array resultante.
Espero te oriente.
Slds
Hola Ismael no no creo que sirva ya estube indagando y no. Es que lo que quiero es con la funcion get.openfilemane he sacado la ruta de unas fotografias que quiero agregar. pero como quiero cambiar de carpeta osea de una memoria a el disco duro, necesito estraer el nombre del archivo para realizar esa accion. jejeje Tienes algun metodo Mejor? Gracias
EliminarIgual no has buscado en la dirección correcta ;-)
EliminarMira:
Sub SeleccionFichero()
Dim RutaArchivo As String
On Error Resume Next
RutaArchivo = Application.GetOpenFilename(Title:="Prueba selección ficheros Excelforo", _
filefilter:="Excel files (*.xlsx), *.xlsx")
MatrizNombre = Split(RutaArchivo, "\")
If Not RutaArchivo = "False" Then
MsgBox MatrizNombre(UBound(MatrizNombre))
End If
End Sub
No parece demasiado complejo....
Saludos
Jjejeje Si Señor. Gracias Ismael
EliminarSaludos
Este comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola Ismael
ResponderEliminarComo puedo recoger el nombre de un pdf que esta abierto (se ha abierto antes para comprobar que este pdf esta o no firmado) y llevarlo a una variable, para luego insertarlo en una fila del libro activo.
Muchas Gracias
Francis
Hola, a priori es bastante complejo.. ya que abría que emplear API's para recorrer las ventanas abiertas en Windows para detectar si existe un pdf, para luego intentar extraer su ruta...
EliminarDiría que lo más sencillo es abrir con el código del ejemplo el pdf, así consigues guardar como variable su ruta, para luego hacer con ella lo que quieras...
Intentaré subir, en cuanto me sea posible, una explicación de este tema.
Saludos
Gracias por la respuesta tan rápida
EliminarIntentare seguir tu consejo y esperare la explicación a este tema ya que tengo algún problema con la apertura de los .pdf que creo se debe a no referenciarlos bien o a que falte alguna librería en excel 2007.
Gracias de nuevo
Un saludo
Francis
Hola Ismael,
ResponderEliminarY se puede rastrear el archivo excel? es decir que la ruta sea dinámica, sin importar a dónde se mueva el archivo lo ubique y logre abrirlo únicamente con el código?
Hola Yuri,
Eliminarpiensa que esto es un Explorador, eres tu manualmente quien realiza la búsqueda.
Sí es posible conocer la ruta de cualquier fichero ya abierto, pero primero se debe localizar de alguna manera...
Slds
Hola, muy buenas tarde, yo no soy programador pero tu macro me esta ayudando mucho en un poryecto que estoy haciendo.
ResponderEliminarTengo una duda, ya que seleccionas el archivo, como puedes hacer para que ese archivo de texto quede importando dentro de la hoja de excel.
Lo que hice yo fue hacer un macro para importar archivos, cambie el nombre y la ruta del archivo de dicho macro por RutaArchivo (que se supone es el que se selecciono antes).
Con esto si logro que lo importe pero lo hace abriendo otro Arcchivo de excel. Y necesitaria que fuera en la misma hoja donde corro el macro.
Espero que me puedas ayudar, por lo mientras colocare aqui el codigo completo como me quedo usando el tuyo y el del macro grabado
Sub getopen()
'
' getopen Macro
'
'
'identificamos el fichero y su ruta para importarlo
Dim RutaArchivo As String
'controlamos algún posible error.
On Error Resume Next
'damos valor a la variable Filename
'además hemos cambiado el Título que aparecerá en la ventana diálogo
'y forzamos para que sólo abra ficheros de Excel (extensión .xlsx)
RutaArchivo = Application.GetOpenFilename(Title:="Prueba selección ficheros Excelforo")
'si hemos seleccionado algún archivo muestra un cuadro mensaje
If Not RutaArchivo = "False" Then
MsgBox RutaArchivo
End If
'con el método .Open abrimos el fichero seleccionado
'o cualquier otra acción que requiera la ruta de un fichero
Workbooks.Open Filename:=RutaArchivo
With ActiveSheet.QueryTables.Add(Connection:=RutaArchivo _
, Destination:=Range("$H$7"))
.CommandType = 0
.Name = _
"RutaArchivo"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 932
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Hola,
Eliminarpara importar un txt (de texto) a una hoja existente de Excel, podrías realizar la importación y luego en el mismo proceso copiar y pegar de ese libro abierto al destino final...
Subiré una explicación del asunto en cuanto pueda.
Saludos
Se pudo avanzar sobre este pedido de ayuda?
EliminarSlds
Hola, que tal...
Eliminarestá en mi lista :(
De todas formas la idea es la que se comentó
Realizar la importación, tratarla como temporal (esto es, luego borrarlo), para copiar y pegar el que se abra en el destino final
Saludos
Hola Ismael una pregunta ¿Y si quiero cargar una fotografia como hipervinculo? y despues de que se carge al textbox quisiera visualizarla con un boton.. Espero puedas ayudarme, saludos.
ResponderEliminarHola,
Eliminarlo expuesto en esta entrada podría ser aplicable a tu cuestión:
http://excelforo.blogspot.com.es/2015/10/vba-un-hipervinculo-dentro-de-un-listbox.html
Espero te oriente
Saludos
Hola Ismael, Gracias por tu trabajo, me esta ayudando con un proyecto para correr una macros. Solo tengo dos detalles y quisiera que me apoyaras
ResponderEliminar1) Que de cancelar la selección del archivo en vez de false diga Cancelado o el texto que le quiera colocar.
2) Y que si cancelo la selección del archivo no siga corriendo la macros.
Sub SeleccionarArchivo()
Dim RutaArchivo As String
On Error Resume Next
RutaArchivo = Application.GetOpenFilename(Title:="Seleccionar Archivo")
If Not RutaArchivo = "False" Then
MsgBox RutaArchivo
End If
Workbooks.Open FileName:=RutaArchivo
End Sub
Hola Jore
Eliminarprueba con:
Sub SeleccionarArchivo()
Dim RutaArchivo As String
On Error Resume Next
RutaArchivo = Application.GetOpenFilename(Title:="Seleccionar Archivo")
If Not RutaArchivo = "Falso" Then
MsgBox RutaArchivo
Else
MsgBox "cancelado"
Exit Sub
End If
Workbooks.Open Filename:=RutaArchivo
End Sub
Saludos
se puede usar este método para seleccionar un archivo *.* para moverlo a una ruta especifica.
ResponderEliminarespero que me puedas comentar
Hola,
Eliminarecha un vistazo a este post
http://excelforo.blogspot.com.es/2015/09/vba-el-metodo-movefolder-o-como-cambiar.html
Quizá te de una pista.
Lee también espeficicamente este otro post:
http://stackoverflow.com/questions/14504372/moving-files-from-one-folder-to-another
Saludos
Hola cuando se abre el display para elegir el archivo, lo que hago es cancelar porque me equivoque al abrir... inmediatamente se cierra el todo el libro. Por qué pasa eso?
ResponderEliminarHola Frank,
Eliminarhe replicado tu caso sobre el código del post y, en mi caso, no ocurre tal cosa...
¿has añadido alguna línea más?
Saludos
Buenos dias Ismael, excelente informacion. quisiera me pudieras colaborar con algo, deseo mediante un boton seleccionar un archivo y mediante otro boton seleccionar una ruta especifica para guardar el archivo antes seleccionado.
ResponderEliminarHola Jorge,
Eliminarbueno la idea sería seguir los pasos siguientes para asignar la macro descrita en este post (arriba) a un botón:
http://excelforo.blogspot.com.es/2009/09/boton-con-macro-en-excel-2007.html
Para guardar en libro en la ruta bastaría una macro tipo:
Thisworkbook.saveas filename:="ruta completa"
en ese caso "ruta completa" sería una variable.
Esto es, podría ser la misma macro que la de arriba en el post, pero cambiando la última linea:
Workbooks.Open FileName:=RutaArchivo
por
Thisworkbook.saveas filename:=RutaArchivo
Lo que no tengo claro es que te aportarán estos 'botones' distintos a los estándar de 'Abrir' y 'Guardar Como' ya existentes en el estándar de la aplicación Excel.
Slds
hola Ismael, una consulta yo necesito poder seleccionar una carpeta para luego copiar en ella un archivo. Es decir que yo pueda decidir donde deseo copiar el archivo.
ResponderEliminarHola David,
Eliminarcreo este post te ayudará:
http://excelforo.blogspot.com.es/2015/09/vba-el-metodo-copyfolder-o-como-copiar.html
Saludos
Hola, gracias por el foro.
ResponderEliminar;-)
EliminarMe alegra te sirva
Gracias y un saludo
Muy interesante...gracias por la información.
ResponderEliminarElvis Ramos
Gracias Elvis
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola Ismael, muchas gracias por compartir tu conocimiento.
ResponderEliminarYo tengo una duda que tal vez sea muy básica o tal vez no sea posible.
Tengo la curiosidad de hacer que el cuadro de dialogo que aparece con getopenfilename, aparezca en la pantalla centrado o en algún posición que yo indique.
Es posible ?
Saludos y gracias de antemno
Hola,
Eliminaren realidad esta es una ventana de Windows, asi que en teoría sí es posible trabajar sobre ella...
Supongo existirá alguna API para Windows con la que trabajar desde Excel; yo nunca lo he intentado y desconozco cuál sería...
Un saludo y suerte
Muchas gracias por tu pronta respuesta, sinceramente pensé que iban a pasar algunos días antes de recibir alguna respuesta(algunas veces nunca llega). Te agradezco mucho tu respuesta, aunque con las instrucciones que ofrece el propio Excel no es posible, esto me deja por el momento tranquilo y puedo seguir avanzando en el aprendizaje.
EliminarUna cosa más, tengo una duda mas que me salió y tal vez la respuesta sea algo por el estilo. de cualquier manera te comento la inquietud que tengo, es con la función dir y con la manera de buscar un archivo y determinar si existe o no. la sintaxis de la instrucción dir es: dir pathname, atributos. Es posible hacer el dir aplicado a toda la unidad c?
Es decir, tal vez tenga la necesidad de buscar x archivo pero no se en que carpeta se encuentre, asi que pensé que algo así funcionaria: dir("c:nombrearchivo") probe con un archivo que de antemano se que existe y no funciona, me devuelve una cadena vacia.
Muchas gracias nuevamente.
;-)
Eliminarla función de VBA Dir 'busca' fichero o carpeta en una ruta concreta, esto es, no actúa como el buscador de Windows
Slds
Gracias Ismael, soy a veces necio y con esta opinión viniendo de alguien que me lleva muchísimo camino me deja tranquilo para no seguir perdiendo tiempo y seguir avanzando.
EliminarSaludos desde México y seguire viendo tus videos y blog.
Gracias a tí...
Eliminarde todas formas, por desgracia yo no lo sé todo (ojalá estuviera a un 10% del potencial del VBA para Excel)... quizá algú otro lector te pueda dar más claves
;-)
Un saludo
Disculpe Ismael!!
ResponderEliminarDesde Excel puedo lanzar, arrancar, correr un archivo de lotes???? que este en una ruta especifica?
Hola Olegario,
Eliminaren principio sí es posible abrir o lanzar cualquier tipo de archivo (nunca probé un archivo de lote).
Esto te puede servir:
http://excelforo.blogspot.com.es/2014/01/vba-shellexecute-o-como-abrir-desde.html
Un saludo
Hola Ismael:
ResponderEliminarQuisiera abrir un archivo XML con tu macros, que se abra el archivo XML en una nueva hoja de cálculo, que seleccione una celda de esa hoja de cálculo y copie esa celda a otra celda de otra hoja de cálculo. Podrías ayudarme con el pedido, por favor?
Una consulta adicional: hay manera de insertar/cargar una página web en una hoja de cálculo? si es factible, cómo lo inserto. Gracias nuevamente.
ResponderEliminarHola Ariana,
ResponderEliminarecha un vistazo a los dos enlaces siguientes:
http://excelforo.blogspot.com.es/2014/09/importando-exportando-datos-en-xml-con.html
y este
http://excelforo.blogspot.com.es/2014/07/importar-datos-desde-una-web.html
Saludos
Este comentario ha sido eliminado por el autor.
EliminarHola Ariana,
Eliminarmejor lee las Normas de Uso del blog.
Cualquier duda concreta, con gusto intentaré ayudarte.
Saludos
Por favor, sólo resuelve esta pequeña macro para grabar el contenido de una celda a un archivo de texto.
EliminarSet rng = Application.InputBox("Selecciona el rango a guardar:", Type:=8)
If rng Is Nothing Then Exit Sub ---->Abre cuadro para seleccionar cualquier celda en cualquier hoja (Hasta ahí bien).
Workbooks.Add xlWBATWorksheet -
rng.Copy: [a1].PasteSpecial xlPasteValuesAndNumberFormats
Print rng ---> (NO copia el dato seleccionado en un arhivo de texto sino a una celda de otra hoja).
Gracias de antemano por la ayuda.
Hola,
Eliminarpara guardar datos desde Excel a un fichero txt:
Sub Excel_Txt()
Dim Ruta As String, Fichero As String
Ruta = ThisWorkbook.Path & "\"
Fichero = "z.txt"
Dim WB As Workbook, nWB As Workbook
Set WB = ThisWorkbook
Set nWB = Workbooks.Add
WB.ActiveSheet.UsedRange.Copy nWB.Sheets("Hoja1").Range("A1")
With nWB
Application.DisplayAlerts = False
.SaveAs Filename:=Ruta & Fichero, FileFormat:=xlText
.Close True
Application.DisplayAlerts = True
End With
WB.Save
End Sub
Espero te oriente
Saludos
Gracias por la ayuda, Ismael. Si no fuera tanto pedir, pudiera hacerse escogiendo manualmente cualquier celda de cualquier hoja y exportarla a un archivo de texto de acuerdo a la macro que mostré arriba? Gracias nuevamente.
EliminarEntiendo te refieres copiar y pegar el valor a un fichero txt ya existente, con otros datos...
EliminarTrataré de subir una explicación al blog en cuanto me sea posible.
Un saludo
No a un archivo existente. Debe crearse un archivo de texto por cada celda, crearlo en una carpeta específica y ponerle un nombre (el nombre debe ser puesto manualmente).
Eliminaren ese caso te vale la macro que te adjuntaba dos comentarios más arrriba..
Eliminarsolo cambia las variables Ruta y Fichero
y
WB.ActiveSheet.UsedRange.Copy nWB.Sheets("Hoja1").Range("A1")
por la celda que quieras trasladar:
WB.ActiveSheet.range("B1").Copy WB.Sheets("Hoja1").Range("A1")
asi copiaras la celda B1 en un nuevo fichero de texto
Saludos
Este comentario ha sido eliminado por el autor.
EliminarGracias Ismael. Como último pedido: Hay forma de hacer que esa macro, que irá en un botón, se ejecute, te genere un cuadro de consulta indicando: "Seleccione la celda a Grabar", se escoge con el mouse cualquier celda de cualquier hoja y se da click en Aceptar para que lo grabe como archivo de texto? Gracia por el gran aporte y tiempo. Por otro lado, probé tu macro y lo que hace es cortar la celda y no la copia al archivo de texto.
EliminarHola Ariana,
Eliminarpara seleccionar la celda incluye una función
application.inputbox
empléalo como variable para poder usarla posteriormente
¿? no puede ser que corte ya que se está empleando el método .copy (y no el .cut):
WB.ActiveSheet.range("B1").Copy WB.Sheets("Hoja1").Range("A1")
Saludos
Pero, entonces, ya no si trabajo con application.inputbox, ya no tendría sentido la línea: WB.ActiveSheet.range("B1").Copy WB.Sheets("Hoja1").Range("A1").
EliminarEntonces, quedaría así?
Sub Excel_Txt()
Dim Ruta As String, Fichero As String
Ruta = ThisWorkbook.Path & "\"
Fichero = "z.txt"
Dim WB As Workbook, nWB As Workbook
Set WB = ThisWorkbook
Set nWB = Workbooks.Add
Set rng = Application.InputBox("Selecciona el rango a guardar:", Type:=8)
If rng Is Nothing Then Exit Sub
WB.ActiveSheet.UsedRange.Copy 'nWB.Sheets("Hoja1").Range("A1")
'With nWB
Application.DisplayAlerts = False
.SaveAs Filename:=Ruta & Fichero, FileFormat:=xlText
.Close True
Application.DisplayAlerts = True
End With
WB.Save
End Sub
Hola
Eliminarla línea
WB.ActiveSheet.UsedRange.Copy 'nWB.Sheets("Hoja1").Range("A1")
por
rng.Copy nWB.Sheets("Hoja1").Range("A1")
Slds
Este comentario ha sido eliminado por el autor.
ResponderEliminar¿Como puedo hacer para que se muestre el directorio como Iconos Extra Grandes? Normalmente se muestra con detalles de archivo.
ResponderEliminarHola Roger,
Eliminarcómo estás?, un placer saludarte igualmente.
Esta opción no es configurable con .GetOpenFilename... y muestra los 'iconos' como los tengas configurados desde Windows.
Por tanto si quieres ver los Iconos Extra Grandes deberás indicarlo así en el Explorador de Windows.
Saludos
Este comentario ha sido eliminado por el autor.
ResponderEliminarHola Buenas tardes Ismael espero estes muy bien, me ha ayudado mucho tu macro pero estoy en un proyecto y en el cual deseo importar a un nuevo libro unos resultados, ya puedo importar los libros al nuevo creado ahora ¿como le puedo hacer para que solo me importe una hoja en especifico, mas no todo el libro?
ResponderEliminarHola Manuel
Eliminarprueba con algo parecido a esto:
ActiveSheet.Move Before:=Workbooks("NuevoLibro.xlsa").Sheets(1)
Saludos
Hola Ismael que tal?
ResponderEliminarAcabo de conocer tu foro y me parece excelente. He ejecutado la macro que compartes aca y funciona de maravilla. He querido personalizarla y le he cambiado el nombre del titulo y continua funcionando fenomenal. Luego cuando intento cambiar la extension del archivo a abrir, lo reconoce, pero a la hora de abrirlo abre un nuevo libro excel con varios simbolos y texto dentro del libro, sin embargo el archivo es de extension .edb un software estructural. como hago para que excel y la macro reconozca que programa debe utilizar para abrir esa extension. El software ya lo tengo instalado en mi computador y funciona bien.
Gracias
Hola!
Eliminarten presente que no cualquier archivo se puede abrir (por ser compatible) desde Excel.
No conozco ese Sw que comentas, pero por tu comentario parece obvio que no se puede abrir desde Excel.. y por eso te aparecen esos 'símbolos extraños'
Siento no poder decirte nada más
Saludos cordiales
hola Ismael
ResponderEliminarquería preguntarte como puedo copiar la primera hoja del archivo abierto en el archivo que ejecuto en el macro.
y después cerrar el archivo abierto.
muchas gracias por tu ayuda
Hola Helber,
Eliminarpara referirte a la primera hoja del libro abierto podrías indicarlo mediante índices:
Sheets(1)
refiriéndose a la primera hoja (a la izquierda) disponible..
Espero haberte entendido bien
Saludos
si pero como puedo copiar esa hoja o que código utilizo para copiar esa hoja y pegarlo en el libro que estoy ejecutando el macro
Eliminarno mentiras ya pude muchas gracias :) en realidad es muy útil tu post
Eliminar;-)
EliminarSaludos!!
Muchas gracias, fue un gran aporte.
ResponderEliminarGracias!!
EliminarHola qué tal, acabo de ver tu post y tengo una duda al ocupar tu macro del post... Verás quisiera "automatizar" desde un formulario el "guardar" la base de datos generada en una ruta especificada por el usuario.. y veo que el método .GetOpenFilename me pide SELECCIONAR un archivo para "abrir" y así obtener su ruta... Pero yo quisiera solo pedirle al usuario una ruta en la que GUARDAR el archivo de la base de datos generada anteriormente... Espero haberme explicado... Te agradezco de antemano.
ResponderEliminarHola,
Eliminarseguro este otro post sirve para tu propósito
http://excelforo.blogspot.com.es/2010/04/explorador-en-vba.html
Saludos
Excelente Post y el resto de tus cosas, felicitaciones gran trabajo
ResponderEliminarMuchas gracias!
EliminarBuenos días, necesito que una macro me abra un archivo que empieza por un texto fijo pero el final va cambiando. Por ejemplo, tengo un archivo que se llama artículos genéricos, pero luego puede llevar un número que va cambiando. ¿Hay alguna forma de decirle al programa que abra el documento que empieza por "artículos genéricos*"?
ResponderEliminarUn Saludo
Hola
Eliminarsubiré una explicación al blog
;-)
Saludos
Hola:
ResponderEliminarHe estado viendo el foro y otros, en búsqueda de una solución a mi problema. Requiero abrir un directorio a través de un evento en un botón de Excel, pero si llevo dicha carpeta y su contenido a otro equipo, la ruta ya no me sirve ¿Cómo puedo llamar al directorio sin darle una ruta? Es importante mencionar que el libro Excel que contiene la macro se encuentra dentro de la carpeta en cuestión.
Hola,
Eliminarentiendo te refieres a obtener la IP de la unidad red (no solo la 'letra') para que sea válido desde cualquier otro equipo con acceso a esa red...
Publicaré en cuanto me sea posible, en un par de semanas, una solución
Saludos
Hola Ismael:
EliminarNo me refería a una unidad de red, me refería a que la macro sea capaz de abrir su propio directorio, independientemente de dónde se encuentre, aunque lo lleve a otro equipo. Como dato, traté utilizando "ThisWorkbook.Path" de varias formas, pero no funcionó.
Muchas gracias, saludos.
bueno,
EliminarThisWorkbook.Path
te devolverá sin duda la ubicación o ruta de donde se encuentre el fichero (donde esté la macro), pero tendrás que terminar de completar, con alguna variable el nombre del libro que quieras abrir
No se si te entendí bien
Slds
Hola, Ismael. ¿Cómo puedo abrir el archivo más reciente? Es que en la carpeta donde va a buscarlo va a haber varios que se llaman muy parecedo, sólo cambia el final del nombre que será la hora de creación (*o7_35.xlsm, *10_28.xlsm, *18_13.xlsm)
ResponderEliminarHola
Eliminarlo ideal sería emplear, más que el nombre, la fecha de última modificación o creación
Subiré un post en breve...
Saludos
Ismael, buen día.
ResponderEliminarCómo puedo utilizar la función GetOpenFilename para seleccionar un archivo *xlsm ubicado en mi One-Drive?
Gracias
Hola!
Eliminaren teoría si tienes activo OneDrive, DropBox, etc tendrás en tu local una copia sincronizada de lo subido a la nube... a estas carpetas puedes acceder normalmente.
Saludos
Hola Ismael, muchas gracias por tu aporte, usé este código para que se vieran todos los archivos y quisiera que al agregarse la ruta, se inserte la imagen del tipo de archivo seleccionado en un control de formulario no sé sí esto será posible y muchas gracias por tu apoyo
ResponderEliminarHola
Eliminardependerá de un par de cosas...
necesitarás las distintas imágenes (iconos) de tipos de archivo para poder luego cargarlo...
y por otro lado dependerá del tipo de control de formulario, ya que por ejemplo en un textbox ¿dónde insertaráis la imagen??... si fuera un botón no habría tanto problema
Slds
Este comentario ha sido eliminado por el autor.
ResponderEliminarHola!
Eliminarla cuestión es que añade un libro nuevo por esta declaración:
Set ws = Workbooks.Add(xlWBATWorksheet).Sheets(1)
prueba cambiándola por
Set ws = ThisWorkbook.Sheets(1)
Espero te oriente
Saludos
Hola Ismael tengo una pregunta. En access tengo un formulario para Importar con Un cuadro de texto donde se ubica la ruta del archivo en excel.
ResponderEliminarY tengo un combobox que quisiera que se llenara con los nombres de las hojas del archivo previamente seleccionado. Esto es posible? Como sería?. Gracias
Hola Carlos,
Eliminarno sabría decirte... en access las cosas son algo distintas.
Pero supongo probaría con un bucle que recorra las hojas
FOR EACH sh IN Worksheets
Combobox1.additem sh.name
NEXT sh
espero te de la pista
Saludos
Hola Ismael necesito ayuda urgente, estoy realizando un proyecto donde tengo que abrir el explorador y seleccionar un archivo x; luego una vez seleccionado que se abra mi formulario (importar_archivo)y que los datos que estan en el archivo x aparezcan automáticamente en el Formulario AYUDA POR FAVOR gracias
ResponderEliminarHola,
Eliminarpara seleccionar y abrir el fichero puedes leer este mismo post, y puedes ver varios ejemplos de cómo completar formularios en la categoría de 'Macros'.
También es importante que leas las 'Normas de uso del blog'
Saludos
Hola, Ismael.
ResponderEliminarUnas consultas acerca de VLookup (buscarv)en diferentes libros.
Tengo dos libros con una hoja en cada libro:
1. BASEDATOS(nombre del 1°libro) y HOJA DATOS
2. LIBROEDICION (nombre del 2° libro) y HOJAEDICION
En el siguiente código tengo que especificar el nombre del libro BASEDATOS.xlsx para extraer los datos hacia el libro LIBROEDICION, cómo haría para que abra el explorador de archivos y poder elegir la ruta para extraer los datos hacia el libro LIBROEDICION.
Sub BUSCAR()
Dim libroactual, libroBD As Workbook
Application.ScreenUpdating = False
Set libroactual = ThisWorkbook
Set libroBD = Workbooks.Open("BASEDATOS.xlsx") 'AQUI SE ESPECIFICA LA RUTA PERO DEBERÍA ABRIR UN CUADRO PARA PODER ELEGIR LA RUTA
libroactual.Activate
'AQUI SE VEN RANGO DESDE EL 6 AL 1000 PERO SOLO DEBERIA BUSCAR Y RELLENAR HASTA EL ULTIMO DATO DE LA ULTIMA FILA
Range("F6:F1000") = Application.VLookup(Range("A6:A1000"), _
libroBD.Sheets("HOJADATOS").Range("A1:B1000"), 2, False)
libroBD.Close savechanges:=False
Application.ScreenUpdating = True
End Sub
Por ultimo, si en cada uno de esos libros tengo más de dos hojas, como haría para sincronizar los VLookup tomando como referencia los nombres de cada hoja. (Ej: buscar el A6 de la hoja1 del libro1 y extraerlo del rango de datos $A:$B del libro2; el resultado ponerlo en G6 de la hoja1 del libro1). Y así sucesivamente con cada hoja de cada libro.
Gracias
Hola Ismael,
ResponderEliminarEs posible que se filtre por imágenes JPG y poder llevar esta imagen a un PictureBox?
Gracias.
Hola Maribel
Eliminarcon este método, hasta donde sé, no es posible.
Pero sí se podrían cargar imágenes a un PictureBox...
En todo caso te recomendaría mejor usar el control de 'Imagen' tiene alguna propiedad más práctica
Aquí tienes un ejemplo similar
https://excelforo.blogspot.com/2013/02/vba-cargar-un-grafico-en-un-formulario.html
Saludos
Hola que tal Ismael, me gustaría saber como puedo hacer para que en mi libro1 se copien en determinadas celdas los valores de ciertas celdas de mi libro2(el cual se debe seleccionar la ruta del libro2. Las celdas con la informacion del libro que se selecciona la ruta siempre tiene el mismo formato y cada libro tiene solo una hoja)
ResponderEliminarDe antemano gracias
Hola Lalo
Eliminartendrás que abrir el fichero origen (libro2) con la macro, y una vez abierto referir en el libro1 (donde entiendo tienes tu macro principal) el destino:
Thisworbook.sheets("Hoja final").range("A1").value= workbooks("Libro2").sheets(1).range("X11").value
Saludos
Hola, buenas.
ResponderEliminarquisiera ver si me puedes ayudar.
tengo un excel con un botón de guardar un archivo xml, pero lo hace automático a la direccion predeterminada que le tengo. quiero ver si se puede colocar que al darle guardar salga el cuadro para seleccionar donde lo quiero guardar. es decir. puede seleccionar la carpeta donde se guardara.
Gracias!
Hola!
Eliminarla clave sería aplicar a una variable la búsqueda realizada, puedes emplear este método:
https://excelforo.blogspot.com/2010/04/explorador-en-vba.html
Saludos
Hola y esperando que tengan un buen día espero pueda ayudarme con una duda:
ResponderEliminarestoy ejecutando la macro desde un archivo de excel, cuando selecciono el archivo que estaba buscando, quisiera que los datos se importaran a la misma hoja de excel en la que estoy trabajando la macro, puesto que se abre otro archivo de excel
tiene qu ver con Workbooks.Open FileName:=RutaArchivo
Hola,
Eliminarson aspectos distintos de un posible proceso... ;-)
Si quieres copiar y pegar datos de un fichero a otro, lo primero que procede es abrir el fichero Origen e identificar la hoja y rango a copiar.
Una vez copiado solo debes pegar lo copiado en el primer libro, en el destino... donde está la macro.
Para esto puedes usar:
ThisWorkbook.Sheets("hoja destino").range("A1")
de esa manera pegaras en el mismo libro de la macro y en la hoja que indiques
Saludos!
Muchas gracias, fue de mucha ayuda.
EliminarSaludos