ms access vba中的CSV数组操作转置
我已经在编写这段代码,我需要帮助以转置形式从csv传输值 我的数据是行ms access vba中的CSV数组操作转置,vba,Vba,我已经在编写这段代码,我需要帮助以转置形式从csv传输值 我的数据是行 date | field1 | field2 | field3...|field 800 date |value |value |value ... |value 我想把它改成 date| Field1| value date| Field2| value date| field3| value 我只能读取csv文件的1行,并使用日期作为分组值,我有2000多行和800列。我也不需要包含空值。请帮我操作
date | field1 | field2 | field3...|field 800
date |value |value |value ... |value
我想把它改成
date| Field1| value
date| Field2| value
date| field3| value
我只能读取csv文件的1行,并使用日期作为分组值,我有2000多行和800列。我也不需要包含空值。请帮我操作数组。谢谢。考虑通过行循环并转置它们
Set xlWb1 = xlApp.Workbooks.Open(SourcePathAndName)
Set xlWb2 = xlApp.Workbooks.Add
lastrow = xlWb1.Worksheets(1).UsedRange.Rows.Count
lastcolum = xlWb1.Worksheets(1).UsedRange.Columns.Count
' ITERATES THROUGH 2,000 ROWS
For i = 1 to lastrow
' COPIES ENTIRE ROW FROM COLUMNS 1 to 800
With xlWb1.Worksheets(1)
.Range(.Cells(i, 1), .Cells(i, lastcolumn)).Copy
End With
' TRANSPOSES TO 2,000 COLUMNS <---- NOTE: TOO WIDE FOR MS ACCESS TABLE
xlWb2.Worksheets(1).Cells(1, i).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Next i
请注意,MS Access对表的列数限制为255。为什么不直接复制标题行,转置它,然后复制值行并转置它,然后导入Access?不需要通过数组。是的,我知道这个限制,使用excel vba运行它,我能够读取255多个列,实际上是800个列成功读取和转置,但仅使用我的代码就可以读取一行。我试图读取下一行直到2000,同时将字段值保留在顶部作为字段标志。在excel中进行转置意味着在导入之前,我将进行2000次。有没有想法任何人。。。请帮忙。。。感谢将问题分部分解决:1首先,请确保该文件已导入某个位置,例如Excel文件。2创建两个数组:一个用于保存标题,另一个用于保存每个数据行。3阅读标题。4对于每个数据行,读取该行并将其写入另一个位置表。在把事情复杂化之前,试着用一种简单的方法来解决问题。谢谢Barranka,是的,我会用这个codehi冻糕来尝试,它说细胞是一个未定义的子。。。我怎么修理它?谢谢编辑。我忘了在粘贴行中声明第二个工作簿的第一个工作表。您好,我已经包括了您所做的更改,它仍然有相同的错误。我必须初始化任何东西吗?Thankshi冻糕,它工作正常,但它只能读取一行数据。。。它不会转到下一行。。。我真的很感谢你的帮助。。。非常感谢。
Set xlWb1 = xlApp.Workbooks.Open(SourcePathAndName)
Set xlWb2 = xlApp.Workbooks.Add
lastrow = xlWb1.Worksheets(1).UsedRange.Rows.Count
lastcolum = xlWb1.Worksheets(1).UsedRange.Columns.Count
' ITERATES THROUGH 2,000 ROWS
For i = 1 to lastrow
' COPIES ENTIRE ROW FROM COLUMNS 1 to 800
With xlWb1.Worksheets(1)
.Range(.Cells(i, 1), .Cells(i, lastcolumn)).Copy
End With
' TRANSPOSES TO 2,000 COLUMNS <---- NOTE: TOO WIDE FOR MS ACCESS TABLE
xlWb2.Worksheets(1).Cells(1, i).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Next i