Estoy usando un archivo CSV (generado por un programa) como fuente de datos externa y me gustaría cambiar su ruta desde una macro... ¿Cómo puedo hacer eso?
Otra respuesta aceptable a mi problema sería una forma de especificar una ruta relativa al archivo de Excel (no he encontrado cómo), dado que en mi caso, tanto el csv como el xls están en el mismo directorio.
Respuesta1
Sub Import()
Dim FilePath As String
FilePath = "TEXT;C:\directory\" & Cells(1, 1).Value
ActiveWorkbook.Worksheets.Add
With ActiveSheet.QueryTables.Add(Connection:=FilePath, Destination:=Range("$A$1"))
.Name = "Book1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Esto creará una nueva hoja con los datos cuando coloques el archivo (book3.csv por ejemplo) en la hoja1 A1; cambia C:\directory al directorio en el que existe su entrada y puede cambiar el rango de salida en la línea 5 "Rango"
Además, la línea 3 "Celdas (1,1) indica la celda de entrada, por lo que puede cambiarla desde la Hoja 1 A1 si lo desea. Debe indicar la extensión del archivo en la celda de referencia, de lo contrario no sabrá qué archivo importar. Simplemente ejecute esta macro y obtendrá una nueva hoja con los datos de destino. Si necesita un nuevo libro de trabajo o insertarlo en una hoja existente, hágamelo saber.
Además, si observa las propiedades, este es un archivo delimitado por comas, puede cambiarlo o simplemente grabar su propia macro (pestaña de desarrollador -> grabar macro) e insertar los comandos de tipo FilePath en la parte superior y cambiar el comando de conexión.