Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Blackbass1 en Julio 08, 2013, 09:22:41 am
-
Hola a todos...
He estado buscando por el foro y no he visto... o no he sabido encontrar un ejemplo.
La situación es sencilla...
Fichero de entrada CSV con delimitador (|)... y me interesa pasarlo a un excel... Hasta aqui, lo tengo hecho y funcionando... pero invierte demasiado tiempo ya que podemos estar hablando de 8000...9000 líneas o filas y de unas 50-55 columnas...
La pregunta es...
¿Hay alguna función de excel para hacer la importación directa?...
El sistema que estoy utilizando es el de siempre... pero por cada 1100 registros me tarda 1 minuto... y me gustaría optimizar este proceso ya que al tener que actualizar diariamente carios ficheros... invierte demasiado tiempo.
Espero haber sabido explicarme...
Un saludo y gracias de antemano.
-
Aca hay un articulo que es lo que necesitas, lo unico que no vie es como utilizar un caracter diferente como delimitador.
http://stackoverflow.com/questions/14633691/macro-to-import-csv-file-into-an-excel-non-active-worksheet
-
Hola...
Gracias por tu rápida respuesta... me lo he de mirar con calma, ademas he de registrarme para ver el código.
Un saludo.
-
Aca esta el codigo en cuestion. Es raro que pida que te registres..
Sub load_csv()
Dim fStr As String
With Application.FileDialog(msoFileDialogFilePicker)
.Show
If .SelectedItems.Count = 0 Then
MsgBox "Cancel Selected"
Exit Sub
End If
'fStr is the file path and name of the file you selected.
fStr = .SelectedItems(1)
End With
With ThisWorkbook.Sheets("Data").QueryTables.Add(Connection:= _
"TEXT;" & fStr, Destination:=Range("$A$1"))
.Name = "CAPTURE"
.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 = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
-
Hola de nuevo...
A ver como lo explico para no quedar como un "inepto"...
En el proyecto, tengo como referencia tanto Micosoft excel 12.0... como micosoft Office Library...
Y me da un error del que no he sabido salir... en el "Show" se queda colgado.
Private Sub Command1_Click()
dim fstr as string
whith Application.FileDialog(msoFileDialogFilePicker)
.Show
...
Y no se salir de ahí...
Estoy por buscar otras opciones... además el Excel.exe... se queda en ejecución (revisando el Administrador de tareas).
Como podéis imaginaros... se aceptan sugerencias... y muchas gracias.
Un saludo.
-
Hola de nuevo...
Lamento ser tan pesado.
He encontrado este código que funciona, pero no se donde debo colocar el separador/delimitador "|"
"...
Dim objExcel As Object
Dim objWorkBook As Object
Set objExcel = CreateObject("Excel.Application")
Set objWorkBook = objExcel.Workbooks.Open("C:\ficheroCSV.csv")
objWorkBook.SaveAs "C:\ficheroXLS.xls", 39
objWorkBook.Close False
objExcel.Quit
Set objWorkBook = Nothing
Set objExcel = Nothing
..."
Quiero entender que "objExcel.Workbooks.Open" tiene parametrización, pero despues de probar varias opciones no me crea el XLS teniendo en cuenta dicho separador o delimitador.
Gracias por vuestra paciencia.
Un saludo.