在VBA中parsing选项卡分隔值

我正在尝试从Excel中复制剪贴板数据(即制表符分隔的文本),并将其parsing为词典的集合。 这个想法是,每一行将由一个字典表示,从头到单元格值映射。 复制数据中的第一行将包含标题。

从剪贴板中获取文本非常简单:

Dim dataObj As DataObject Dim clipString As String Set dataObj = New DataObject dataObj.GetFromClipboard clipString = dataObj.GetText 

然后我把input分成几行:

 Dim strRows As Variant strRows = Split(clipString, vbNewLine) 

接下来我尝试提取标题:

 Dim headers As New Collection Dim strCols As Variant strCols = Split(strRows(0), vbTab) For col = LBound(strCols) To UBound(strCols) - 1 headers.Add strCols(col) Next 

最后我提取行:

 Dim cells Dim rows As New Collection For i = 1 To UBound(strRows) - 1 strCols = Split(strRows(0), vbTab) Set cells = CreateObject("Scripting.Dictionary") For col = 0 To UBound(strCols) - 1 cells.Add headers.Item(col + 1), strCols(col) Next rows.Add cells Next 

但是,我收到一个错误。 在线上

 headers.Add strCols(col), col 

访问返回运行时错误'12':types不匹配。

更新修复了上面的问题,谢谢你的build议。 现在我得到了一个错误的线

 Set cells = CreateObject(Scripting.Dictionary) 

424:需要的对象。

任何暗示,我什么是错的 – VBA真的不是我的特长。

更新2也解决了这个问题(谢谢下面的build议)。 现在的代码工作。

对于你的第二个问题 – 你需要提供目标类的string名称,所以它实际上是

 Set cells = CreateObject("Scripting.Dictionary") 

我认为col必须是stringtypes。

headers.Add strCols(col), cstr(col)