Cuadro de diálogo para abrir un fichero

27/04/2007 - 10:26 por Splash | Informe spam
Buenas;

estoy haciendo una pequeña aplicación en Excel y necesito leer cierta
información de un fichero TXT. No tengo problemas con la instrucción "Open"
pero me gustaría mostrarle al usuario un cuadro de diálogo para que él elija
el fichero a abrir. Actualmente el fichero que se abre lo tengo metido
dentro del código. ¿Hay alguna forma de hacerlo? Sólo consigo abrir el
diálogo abrir propio del Excel para abrir un hoja de cálculo nueva.

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Peluchon
27/04/2007 - 11:23 | Informe spam
mirate el metodo GetOpenFilename

fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")



On 27 abr, 10:26, "Splash" wrote:
Buenas;

estoy haciendo una pequeña aplicación en Excel y necesito leer cierta
información de un fichero TXT. No tengo problemas con la instrucción "Open"
pero me gustaría mostrarle al usuario un cuadro de diálogo para que él elija
el fichero a abrir. Actualmente el fichero que se abre lo tengo metido
dentro del código. ¿Hay alguna forma de hacerlo? Sólo consigo abrir el
diálogo abrir propio del Excel para abrir un hoja de cálculo nueva.

Muchas gracias.
Respuesta Responder a este mensaje
#2 Peluchon
27/04/2007 - 14:50 | Informe spam
copiado de la ayuda de VBA de excel buscando por Getopenfilename


Presenta el cuadro de diálogo estándar Abrir y obtiene un nombre de
archivo que selecciona el usuario sin que en realidad se abra ningún
archivo.

Sintaxis

expresión.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText,
MultiSelect)

expresión Requerida. Una expresión que devuelve un objeto
Application.

FileFilter Variant opcional. Una cadena que especifica los criterios
de filtrado de archivos.

Esta cadena consta de pares de cadenas de filtros de archivos seguidas
de la especificación de filtro de archivo comodín de MS-DOS, separados
cada par y cada parte por comas. Se enumera cada par individual en el
cuadro de lista desplegable Tipo de archivo. Por ejemplo, la siguiente
cadena especifica dos filtros de archivos, texto y macros automáticas:
"Archivos de texto (*.txt),*.txt,Archivos de Macros automáticas
(*.xla),*.xla"

Si desea usar varias expresiones comodín de MS-DOS para un solo tipo
de filtro de archivo, separe dichas expresiones con signos de punto y
coma; por ejemplo, "Archivos de Visual Basic (*.bas;
*.txt),*.bas;*.txt".

Si se omite, este parámetro tomará el valor predeterminado de "Todos
los archivos (*.*),*.".

FilterIndex Variant opcional. Especifica los números de índice del
criterio predeterminado de filtrado de archivos, que puede ser desde 1
hasta el número de filtros especificado en FileFilter. Si este
argumento se omite o es mayor que el número de filtros presentes, se
usará el primer filtro de archivo.

Title Variant opcional. Especifica el título del cuadro de diálogo.
Si este argumento se omite, el título será "Abrir".

ButtonText Variant opcional. Sólo Macintosh.

MultiSelect Variant opcional. True para que se permita la selección
de varios nombres de archivo. False para que sólo se permita
seleccionar un nombre de archivo. El valor predeterminado es False.

Comentarios

Este método devuelve el nombre del archivo seleccionado o el nombre
introducido por el usuario. El nombre que se devuelve puede incluir
una especificación de ruta de acceso. Si MultiSelect es True, el valor
que se devuelve será una matriz de los nombres de archivo
seleccionados (aunque sólo esté seleccionado uno). Devuelve False si
el usuario cancela el cuadro de diálogo.

Este método puede cambiar la unidad de disco o carpeta activas.
Respuesta Responder a este mensaje
#3 Splash
27/04/2007 - 15:41 | Informe spam
Muchas gracias, con eso creo que voy a solucionar mi problema.

Pero no hay forma de encontrar en la ayuda el objeto Application, si busco
todos los objetos disponibles.

Tampoco sale en métodos el Getopenfilename.

Todo esto sólo lo encuentro si introduzco esas palabras en el buscador de la
ayuda. ¿Por qué?

"Peluchon" escribió en el mensaje
news:
mirate el metodo GetOpenFilename

fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")



On 27 abr, 10:26, "Splash" wrote:
Buenas;

estoy haciendo una pequeña aplicación en Excel y necesito leer cierta
información de un fichero TXT. No tengo problemas con la instrucción


"Open"
pero me gustaría mostrarle al usuario un cuadro de diálogo para que él


elija
el fichero a abrir. Actualmente el fichero que se abre lo tengo metido
dentro del código. ¿Hay alguna forma de hacerlo? Sólo consigo abrir el
diálogo abrir propio del Excel para abrir un hoja de cálculo nueva.

Muchas gracias.
Respuesta Responder a este mensaje
#4 José Manuel
27/04/2007 - 18:59 | Informe spam
On 27 abr, 14:50, Peluchon wrote:
copiado de la ayuda de VBA de excel buscando por Getopenfilename

Presenta el cuadro de diálogo estándar Abrir y obtiene un nombre de
archivo que selecciona el usuario sin que en realidad se abra ningún
archivo.

Sintaxis

expresión.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText,
MultiSelect)

expresión Requerida. Una expresión que devuelve un objeto
Application.

FileFilter Variant opcional. Una cadena que especifica los criterios
de filtrado de archivos.

Esta cadena consta de pares de cadenas de filtros de archivos seguidas
de la especificación de filtro de archivo comodín de MS-DOS, separados
cada par y cada parte por comas. Se enumera cada par individual en el
cuadro de lista desplegable Tipo de archivo. Por ejemplo, la siguiente
cadena especifica dos filtros de archivos, texto y macros automáticas:
"Archivos de texto (*.txt),*.txt,Archivos de Macros automáticas
(*.xla),*.xla"

Si desea usar varias expresiones comodín de MS-DOS para un solo tipo
de filtro de archivo, separe dichas expresiones con signos de punto y
coma; por ejemplo, "Archivos de Visual Basic (*.bas;
*.txt),*.bas;*.txt".

Si se omite, este parámetro tomará el valor predeterminado de "Todos
los archivos (*.*),*.".

FilterIndex Variant opcional. Especifica los números de índice del
criterio predeterminado de filtrado de archivos, que puede ser desde 1
hasta el número de filtros especificado en FileFilter. Si este
argumento se omite o es mayor que el número de filtros presentes, se
usará el primer filtro de archivo.

Title Variant opcional. Especifica el título del cuadro de diálogo.
Si este argumento se omite, el título será "Abrir".

ButtonText Variant opcional. Sólo Macintosh.

MultiSelect Variant opcional. True para que se permita la selección
de varios nombres de archivo. False para que sólo se permita
seleccionar un nombre de archivo. El valor predeterminado es False.

Comentarios

Este método devuelve el nombre del archivo seleccionado o el nombre
introducido por el usuario. El nombre que se devuelve puede incluir
una especificación de ruta de acceso. Si MultiSelect es True, el valor
que se devuelve será una matriz de los nombres de archivo
seleccionados (aunque sólo esté seleccionado uno). Devuelve False si
el usuario cancela el cuadro de diálogo.

Este método puede cambiar la unidad de disco o carpeta activas.



Hola, Splash:

A ver si esto te vale (fuente: http://www.j-walk.com/ss/excel/tips/tip29.htm).
Para usar esta función, copia y pega el texto en un módulo VBA.

Option Explicit
Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type

'32-bit API declarations
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As
String) As Long

Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Function GetDirectory(Optional Msg) As String
Dim bInfo As BROWSEINFO
Dim path As String
Dim r As Long, x As Long, pos As Integer

' Root folder = Desktop
bInfo.pidlRoot = 0&

' Title in the dialog
If IsMissing(Msg) Then
bInfo.lpszTitle = "Select a folder."
Else
bInfo.lpszTitle = Msg
End If

' Type of directory to return
bInfo.ulFlags = &H1

' Display the dialog
x = SHBrowseForFolder(bInfo)

' Parse the result
path = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
GetDirectory = Left(path, pos - 1)
Else
GetDirectory = ""
End If
End Function

El procedimiento listado abajo muestra cómo usar la función
GetDirectory en tu código:
Sub Test()
Dim Msg As String
Msg = "Please select a location for the backup."
MsgBox GetDirectory(Msg)
End Sub

Un cordial saludo.
José Manuel García
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida