Mi Tarea: Un vbscript que se abre una .archivo csv lee los datos en una matriz, que utiliza los datos para la realización de funciones y, a continuación, devuelve los datos actualizados en el mismo archivo. Creo que tengo todo lo demás de trabajo, excepto mi función para leer los datos desde el archivo.

Mi problema: estoy recibiendo errores de tiempo de ejecución cuando trato de usar este código. con la secuencia de comandos como-se me sale un Error:Tipo de desajuste. Yo intente modificar el código de algunos y obtener diferentes errores de tiempo de ejecución.

Un par de notas en este código:

  1. Quiero que se salte la primera línea del archivo csv, que es un encabezado que nunca va a cambiar.
  2. siempre habrá exactamente 12 campos a través. Sin embargo, el número de filas es dinámico y oportunidad con cada archivo de entrada.

Mi código para leer el archivo:

Function BuildArrayFromCsv(filepath)    'Function to read file and load into an array

Const ForReading = 1    ' Declare constant for reading for more clarity

Set inputFile = FileSysObj.OpenTextFile(filepath, ForReading, True) ' Set inputFile as file to be read from

Dim row, column
Dim fields(11) '12 fields per line  
inputFile.ReadAll 'read to end of file  
ReDim MyArray(11,inputFile.Line-2) 'current line, minus one for header, and minus one for starting at zero  
inputFile.close     'close file so that MyArray can be filled with data starting at the top
Set inputFile = FileSysObj.OpenTextFile(filepath, ForReading, True) 'back at top  
inputFile.ReadLine 'skip header 


Do Until inputFile.AtEndOfStream  
    fields = Split(inputFile.Readline,",") 'store line in temp array  
    For column = 0 To 11 'iterate through the fields of the temp array  
        myArray(row,column) = fields(column) 'store each field in the 2D array with the given coordinates  
    Next
    row = row + 1  'next line 
Loop

inputFile.close
End Function
  • Y ¿cuál es tu problema/pregunta?
  • Lo siento por eso. He editado para incluir mi problema.
InformationsquelleAutor user3352792 | 2014-02-27

1 Comentario

  1. 3

    En VBScript Dim name(n) crea una matriz fija de tamaño n + 1; a tal bestia no puede ser overwrittem con/por uno dinámico (como el de Split() devuelve). Evidencia

    >> Dim fields(1)
    >> fields = Split("a b")
    >>
    Error Number:       13
    Error Description:  Type mismatch
    >> Dim fields
    >> fields = Split("a b")
    >> WScript.Echo Join(fields)
    >>
    a b
    >>

    Para reemplazar

    Dim fields(11) '12 fields per line  

    con

    Dim fields 'should be 12 fields per line, checking the result of Split() advisable
    • Para explicar el formato de las Pruebas de la sección: Que es una copia sin modificar de una REPL sesión.

Dejar respuesta

Please enter your comment!
Please enter your name here