Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays VBA中CSV到多维数组的转换_Arrays_Vba_Csv_Ms Word - Fatal编程技术网

Arrays VBA中CSV到多维数组的转换

Arrays VBA中CSV到多维数组的转换,arrays,vba,csv,ms-word,Arrays,Vba,Csv,Ms Word,我目前正在为word模板制作一个宏,该模板要求CSV保存word文档中变量的所有数据。选择保存数据的CSV后,应该检查客户机有哪些服务(基于CSV中的信息),然后相应地编辑word模板。通过编辑,我的意思是它删除了模板中包含客户端无权访问的特定服务的一部分 我目前一直在思考如何以最佳方式读取CSV以确定单词模板的形状 是否可以制作一个2D数组,然后通过检查哪些数组单元格是空的,哪些不是空的来确定模板的形状?还是有更好的方法我不知道 这是我目前的代码: Sub Jagvilldö() 'c

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

我目前一直在思考如何以最佳方式读取CSV以确定单词模板的形状

是否可以制作一个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
'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)
使用此代码,如果I=0,则在
中的
For
循环中得到错误:“索引超出比例”

这是错误发生前我得到的输出:

也许你能明白我想做什么


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

对于“是否可以…”问题的答案几乎总是“是”。你是怎么做到的?什么不起作用?到目前为止,我已经进一步开发了我的代码,我遇到了一个非常奇怪的错误,我应该发布一个关于它的新问题,还是我们应该进一步私下讨论?如果你需要个人支持:我可以向你提供我雇主的联系方式。如需有关的帮助,请提供,包括从该代码中获得的所有错误。您正在定义固定大小的1x1数组(
Dim finalArray(0,0)
)。使用正确的大小定义数组,或者使用
ReDim finalArray(0,0)
使数组的大小可调整。在后一种情况下,在添加另一个值之前,您仍然需要调整数组的大小。谢谢您的回答,如果我将它设置为巨大,但不填充所有值,它会工作吗?