Access VBA中的文本文件到数组

时间:2014-06-18 15:19:44

标签: arrays database adodb

我希望将.txt文件加载到VBA数组(在访问VBA中),在那里进行操作,然后将操作的数组粘贴到访问表中。我将循环这个宏,然后循环大约500 .txt文件,并用数年的数据填充数据库。

我在以这种方式使用Excel之前已经完成了:填充1 .txt文件的工作表,操作数据,加载到数据库,清除工作表,加载下一个txt文件并循环直到所有文件都已处理。但是,这需要数年时间,很明显Excel并不是真正需要的,因为无论如何都要存储在Access中。

从那以后,我试图在不使用excel的情况下立即弄清楚如何进行访问,但我一直在努力。我在这个板上找到了一些不错的代码:

Load csv file into a VBA array rather than Excel Sheet

并尝试修改它以便它对我有用。特别是TheBarman在底部的回答看似简单而且非常有趣。

我是数组,VBA,SQL的新手,基本上都是一切,所以也许我在这里做的一些很容易解决的大错误。请参阅下面的代码:

Sub LoadCSVtoArray()

Dim strfile As String
Dim strcon As String
Dim cn As ADODB.Connection
Dim rs As Recordset
Dim rsARR() As Variant


  Set cn = New ADODB.Connection
  strcon = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & "\\filename.txt" &  
  ";Extended Properties=""text;HDR=Yes;FMT=Delimited"";"

  cn.Open strcon
  strSQL = "SELECT * filename.txt;"

  Set rs = cn.Execute(strSQL)
    rsARR = WorksheetFunction.Transpose(rs.GetRows)
  rs.Close

Set cn = Nothing

[a1].Resize(UBound(rsARR), UBound(Application.Transpose(rsARR))) = rsARR


End Sub

我甚至不知道代码的底部是否有效,因为会弹出一条错误消息,说明找不到该文件。有趣的是,如果我调试并将strcon的值复制到windows“run”中,它会打开正确的文件。所以我猜道路是正确的?我甚至可以通过ADODB连接打开.txt文件吗?现在我有点困惑,如果这是可能的,如果这是最好的解决方案。

关于我试图保存到数组中的文本文件的更多背景知识:

- 它们是从另一个程序输出的,所以它始终是相同的结构并且非常有组织

  • 它采用以下格式: 列a列b .... 数据1数据1 数据2数据2 ...

等等。

如果可能的话,我想保留这个结构,甚至将它作为第一行作为列标题的表安全。

1 个答案:

答案 0 :(得分:0)

Data Source是包含文件的文件夹路径,文件是表(SELECT * FROM ..)。将"\\filename.txt"中的strcon替换为文件夹路径。

http://www.connectionstrings.com/textfile/