我需要VBA中的过程从csv excel文件导入数据到没有一些记录,如页眉和页脚.例子,,,我在csv文件中有表,其中包含一些不属于表日期的句子
A1这是一些句子标题.......
A2标题
A3 .......
A7数据数据数据数据
A8行数据数据数据...... ......
A256数据数据DATA
A257这是一句话
我的Acess只包含A7到A256之间的行.有没有人知道VBA中的程序或其他什么来解决我的问题?
非常感谢
编辑
Oli*_*bes 12
最简单的方法是将CSV文件作为表链接到Access数据库.然后,您可以像处理普通访问表一样处理此表,例如通过基于此表创建适当的查询来准确返回所需内容.
您可以手动链接表,也可以像这样链接VBA
DoCmd.TransferText TransferType:=acLinkDelim, TableName:="tblImport", _
FileName:="C:\MyData.csv", HasFieldNames:=true
Run Code Online (Sandbox Code Playgroud)
Dim db As DAO.Database
' Re-link the CSV Table
Set db = CurrentDb
On Error Resume Next: db.TableDefs.Delete "tblImport": On Error GoTo 0
db.TableDefs.Refresh
DoCmd.TransferText TransferType:=acLinkDelim, TableName:="tblImport", _
FileName:="C:\MyData.csv", HasFieldNames:=true
db.TableDefs.Refresh
' Perform the import
db.Execute "INSERT INTO someTable SELECT col1, col2, ... FROM tblImport " _
& "WHERE NOT F1 IN ('A1', 'A2', 'A3')"
db.Close: Set db = Nothing
Run Code Online (Sandbox Code Playgroud)
您的文件看起来很小(297 行),因此您可以非常快速地读写它们。您引用了不存在的 Excel CSV,并在示例中显示了以空格分隔的数据。此外,Access 限制为 255 列,而 CSV 不是,因此不能保证这会起作用
Sub StripHeaderAndFooter()
Dim fs As Object ''FileSystemObject
Dim tsIn As Object, tsOut As Object ''TextStream
Dim sFileIn As String, sFileOut As String
Dim aryFile As Variant
sFileIn = "z:\docs\FileName.csv"
sFileOut = "z:\docs\FileOut.csv"
Set fs = CreateObject("Scripting.FileSystemObject")
Set tsIn = fs.OpenTextFile(sFileIn, 1) ''ForReading
sTmp = tsIn.ReadAll
Set tsOut = fs.CreateTextFile(sFileOut, True) ''Overwrite
aryFile = Split(sTmp, vbCrLf)
''Start at line 3 and end at last line -1
For i = 3 To UBound(aryFile) - 1
tsOut.WriteLine aryFile(i)
Next
tsOut.Close
DoCmd.TransferText acImportDelim, , "NewCSV", sFileOut, False
End Sub
Run Code Online (Sandbox Code Playgroud)
编辑各种评论
可以手动将文本文件导入 MS Access,这将允许您选择自己的单元格分隔符和文本分隔符。您需要从菜单中选择外部数据,选择您的文件并逐步完成向导。
关于导入和链接数据和数据库对象 -- 适用于:Microsoft Office Access 2003
导入导出数据简介 -- 适用于:Microsoft Access 2010
使用向导进行导入后,您可以保存导入规范并在下一个 DoCmd.TransferText 中使用它,如@Olivier Jacot-Descombes 所述。这将允许您使用非标准分隔符,例如分号和单引号文本。