Trabajar con el sistema de archivos

6 envíos / 0 nuevos
Último envío
Cron
Imagen de Cron
Offline
última acción: Hace 2 días 14 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12715
Trabajar con el sistema de archivos

Hola

 

Estoy haciendo un formulario donde pongo un combo y quiero elegir los directorios, para poder listar luego los *.csv que haya en la carpeta correspondiente.

Hasta ahora, lo que he conseguido es esto:

Private Sub llenacombo(midir)

Dim minombre As String

ComboBox1.Clear

ComboBox1.Text = midir

minombre = dir(midir, vbDirectory)

Do While minombre <> ""

  If (GetAttr(midir & "\" & minombre) And vbDirectory) = vbDirectory Then

    ComboBox1.AddItem (minombre)

  End If

  minombre = dir

Loop

End Sub

Al llamar a la función, el argumento es el nombre del directorio que tengo seleccionado.

Aún no tengo convenientemente gestionado el código para hacer que vuelva al directorio anterior, pero no le veo problema.

Sin embargo, lo que me falta es poder presentar lo que se ve al entrar en "Mi PC", es decir, las unidades.

 

Agradecería ayuda para aprenderlo, pues ya no me urge.

 

Gracias.

Cron
Imagen de Cron
Offline
última acción: Hace 2 días 14 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12715
Re: Trabajar con el sistema de archivos

¿Nadie sabe cómo hacer esto?

 

¿No hay ningún API que sirva para montar el típico diálogo de apertura de archivos de Windows?

 

Saludos

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 2 horas 52 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 10690
Re: Trabajar con el sistema de archivos

si quieres cualquier cuadro de diálogo de Excel, utiliza la colección Dialogs

Application.Dialogs(xlDialogOpen).Show

esto mostraría el cuadro de diálogo abrir y abriría el archivo, es decir, que muestra el diálogo y hace la operación correspondiente.

Tienes también el objeto FileDialog al que puedes definir los filtros y demás condiciones.

Si sólo quieres un nombre de archivo, prueba con GetOpenFilename

archivoelegido = Application.GetOpenFilename("archivos csv,*.csv", , "elige un archivo")

------
Ya sé Excel, pero necesito más ahora en pdf

 

------
Ya sé Excel, pero necesito más.

Cron
Imagen de Cron
Offline
última acción: Hace 2 días 14 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12715
Re: Trabajar con el sistema de archivos

Uff, volviendo sobre el filedialog he visto esta respuesta que no te agradecí en su día (es posible que no la pudiera leer por alguna razón, pues no lo implementé en el trabajo que tenía en su momento), así que aprovecho para agradecértelo ahora.

 

Y continúo con una pregunta:

 

Tengo un filedialog para apertura de archivos al que le estoy poniendo los filtros.

El caso es que yo sé, mediante código, cómo se tiene que llamar el archivo que busco. Es decir, no solo la extensión, sino el nombre completo.

Cuando pongo este nombre en el filtro me dice que error 5 y que me vaya a cascala.

 

   Dim fDialog As Office.FileDialog

   Dim nombrearchivo As String

 

 

 nombrearchivo = Right(Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5), Len(ThisWorkbook.Name) - 14) & ".xml"

 

 With fDialog

      .Filters.Clear

      .Filters.Add "Archivo vinculado", nombrearchivo       <------- Aquí es donde me dice que el argumento es erróneo.

      .Filters.Add "Otros archivos", "*.xml"

      .Filters.Add "Todos los archivos", "*.*"

 

      If .Show = True Then

             

      Else

       

      End If

   End With

 
 
Muchas gracias por adelantado
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 2 horas 52 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 10690
Re: Trabajar con el sistema de archivos

la definición de los filtros espera unas extensiones de archivo, tipo *.loquesea

si pones un nombre completo salta ese error

por ejemplo, sí entiende un filtro de este estilo:

.Filters.Add "Excel", "*.xl*"

 

Prueba con la propiedad  .InitialFilename del objeto filedialog, que te permite indicar el nombre del archivo que aparece por defecto, así por lo menos está preseleccionado. 

With fDialog

      .Filters.Clear

       .InitialFileName = nombrearchivo

      .Filters.Add "Otros archivos", "*.xml"

      .Filters.Add "Todos los archivos", "*.*"

 

      If .Show = True Then

      Else

      End If

End With

 

Por cierto, que ese InitialFileName puede ser una ruta completa a un archivo, no sólo un nombre, esto te permite elegir cualquier archivo del equipo si los tienes guardados en otro directorio.

 

------
Ya sé Excel, pero necesito más.

Cron
Imagen de Cron
Offline
última acción: Hace 2 días 14 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12715
Re: Trabajar con el sistema de archivos

Pues muchísimas gracias. Lo probaré.