我有一个访问2013表,其中包含一个以逗号分隔值的字段。我创建了第二个表,我需要用这样的结构解析结果
uPPID number
value1 short text
value2 short text
value3 short text
value4 short text
我正在动态创建表,因此它总是有足够的“值”字段来容纳将要解析的数字。样本数据如下:
uppID values
aeo031 boat, goat, hoat, moat
我希望字段映射像这样
uPPID = aeo031
value1 = boat
value2 = goat
value3 = hoat
value4 = moat
如何访问vba将csv列表从一个字段解析为多个?
答案 0 :(得分:0)
可能比在目标表中逐个插入记录的后续VBA循环更快/更好的解决方案。但是,例如它完成了这项工作。
TableCSV
是源表的名称TableFields
是目标表的名称maxValues
指定可用的字段数values
INSERT INTO
字段后动态编写values
语句;它完成它以提供所有列,并添加周围的引号'...'
。 (例如,如果我们可以在不指定所有列值的情况下进行插入,则可以简化它。)
Sub splitTable()
Const maxValues As Long = 4 ' <-- Set to number of value fields in destination table
Dim query As String, values As String, rs
Set rs = CurrentDb.OpenRecordset("TableCSV")
Do Until rs.EOF
values = rs!values ' next we add commas to provide all fields
values = values & String(maxValues - UBound(Split(values, ",")) - 1, ",")
values = "'" & Replace(values, ",", "','") & "'" ' 'a', 'b', '', '' etc
query = "INSERT INTO TableFields VALUES (" & rs!uPPID & "," & values & ")"
Debug.Print query
CurrentDb.Execute query
rs.moveNext
Loop
End Sub