VBA中的CSV到多维数组

时间:2017-06-27 07:14:12

标签: arrays vba csv ms-word

我正在为一个单词模板制作一个宏,该单词模板应该要求CSV保存word文档中变量的所有数据。在您选择保存数据的CSV后,它应该检查客户端具有哪些服务(基于CSV中的信息),然后相应地编辑单词模板。通过编辑,我的意思是它删除了一部分模板,其中包含客户端无法访问的特定服务。

我目前只是想着如何以最佳方式阅读CSV以确定Word模板的形状。

是否可以通过制作2D数组然后通过检查哪些数组单元格为空来确定模板的形状来实现这一点?或者有更好的方式我不知道吗?

这是我现在的代码:

Sub Jagvilldö()
    'choose data (csv file)
    Dim intChoice As Integer
    Dim strPath As String

    Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False

    intChoice = Application.FileDialog(msoFileDialogOpen).Show

    If intChoice <> 0 Then
        'filepath is saved in strPath
        strPath = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
    End If
    Debug.Print strPath

在此代码之后,我想控制所选的CSV - 以确定模板的形状。这是截至目前的代码:

'import csv and convert to 2-Dimensional array

'defining string variables
Dim rowString As String
Dim rowArray() As String
Dim myfile() As String
Dim finalArray(0, 0) As String
Dim fileNumber As Long
fileNumber = FreeFile
Dim i As Integer
Open strPath For Input As fileNumber
Dim p As Integer

i = 0
Do While Not EOF(fileNumber)
    Debug.Print "In EOF"

    Line Input #fileNumber, rowString
    rowArray() = Split(rowString, ",")

    If i = 0 Then
        Debug.Print "In If"

        For p = 0 To 19
            Debug.Print "In loop: " & p
            'this is where I suspect I am getting my error
            finalArray(p, i) = rowArray(p)
        Next p
    End If

    finalArray(0, i) = rowArray(i)
    i = i + 1
Loop
Close #fileNumber
Debug.Print finalArray(0, 0)

使用此代码我收到错误:&#34;索引不成比例&#34;在For内的If i = 0循环中。

这是我在错误发生之前得到的结果:

This is the output I am getting before the error occurs

也许你可以看到我想要做的事情?

而且,因为我已经在它了:是否可以自动将模板与CSV合并,而不必手动提示它?

0 个答案:

没有答案