【问题标题】:Excel text file connection TextFileColumnDataTypesExcel 文本文件连接 TextFileColumnDataTypes
【发布时间】:2016-12-08 14:46:14
【问题描述】:

我在 Excel 中连接的 TextFileColumnDataTypes 参数中使用的数组有问题。

我已在下面的代码中添加了注释,以便您可以查看存在问题的行。这不是我使用的完整代码,但错误是相同的,而且它本质上是简化的,所以当我将它们硬编码到这个例子中时,有些东西可能看起来有点粗糙。

Sub TestWhyStuffBreaks()
Dim xlApp As Excel.Application, xlWb As Excel.Workbook, xlSht As Excel.Worksheet, i As Integer, arrDT() As Integer

Set xlApp = CreateObject("Excel.Application")
Set xlWb = xlApp.Workbooks.Add

ReDim arrDT(16)
For i = 1 To 16
    arrDT(i) = 2
Next i

xlApp.Visible = True

Set xlSht = xlWb.Sheets(1)

With xlSht.QueryTables.Add(Connection:="TEXT;C:\temp\textfile.txt", Destination:=xlSht.Range("$A$1"))
    .Name = xlSht.Name
    .FieldNames = True
    .RowNumbers = False
    .TextFilePlatform = 437
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierNone
    .TextFileConsecutiveDelimiter = False
    .TextFileOtherDelimiter = "|"
    .TextFileColumnDataTypes = arrDT 'This line errors with message of "Invalid procedure call or argument".
    '.TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2) 'This line is fine but not how I want to do it, I want to be able to dynamically change the length of the array.
    .Refresh BackgroundQuery:=False
End With

End Sub

在完整版本的代码中,数组的大小是不同的,因为它循环遍历超过 1 个文本文件,因此希望对其进行动态处理。

在这种情况下Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)arrDT 有什么区别?

【问题讨论】:

  • 我可能错了,我不记得我是如何解决它的(我前段时间遇到过同样的问题)你能尝试将数组声明为变体,看看是否能解决它?我很确定这与cast it 有关
  • 我已经将它作为 Variant、Long、Double 进行了尝试,但它仍然给我同样的错误信息。这很烦人!该转换链接是否仅适用于后期绑定?
  • 啊哈!我知道了,稍后会发布答案!

标签: arrays excel connection flat-file vba


【解决方案1】:

因此,答案是将Option Base 1 放在模块的顶部,或者从 0 循环到 15。

与 TextFileColumnDataTypes 属性无关,只是我对数组很垃圾!

【讨论】:

    【解决方案2】:

    这很好用!

    'Declare your Array as integer
    Public Indices() As Integer
    'with a loop set dimension
    ReDim Indices(69)
    'insert this line
    .TextFileColumnDataTypes = Indices
    

    【讨论】:

      猜你喜欢
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 2018-07-01
      • 2014-09-16
      相关资源
      最近更新 更多