在ACCESS的VBA中如何实现将表"导出数据"以每10000行导出至C:\Users\icd\Desktop\流水分割文件夹中,并自动生成文件名?
时间: 2023-07-21 19:31:46 浏览: 114
mcodes_prep:将 ICD-10 XML 文件转换为 PG 表,并在终端中搜索-开源
可以使用以下VBA代码实现将表"导出数据"以每10000行导出至C:\Users\icd\Desktop\流水分割文件夹中,并自动生成文件名:
```vb
Sub ExportTable()
Dim tbl As DAO.TableDef
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim fld As DAO.Field
Dim i As Long, j As Long
Dim k As Long, n As Long
Dim strFilePath As String
Dim strFileName As String
'设置导出文件夹路径
strFilePath = "C:\Users\icd\Desktop\流水分割文件夹\"
'打开当前数据库
Set db = CurrentDb()
'设置要导出的表
Set tbl = db.TableDefs("导出数据")
'打开表的记录集
Set rs = tbl.OpenRecordset()
'获取表的字段数
j = tbl.Fields.Count
'获取表的记录总数
n = rs.RecordCount
'按每10000行分割导出
For i = 1 To n Step 10000
'设置导出文件名
strFileName = "导出数据" & Format(i, "00000") & ".csv"
'创建导出文件
Open strFilePath & strFileName For Output As #1
'写入表的字段名
For Each fld In tbl.Fields
Print #1, fld.Name;
If fld.OrdinalPosition < j Then
Print #1, ",";
Else
Print #1, ""
End If
Next fld
'写入表的记录
rs.MoveFirst
rs.Move i - 1
For k = 1 To 10000
If Not rs.EOF Then
For Each fld In tbl.Fields
Print #1, fld.Value;
If fld.OrdinalPosition < j Then
Print #1, ",";
Else
Print #1, ""
End If
Next fld
rs.MoveNext
Else
Exit For
End If
Next k
'关闭导出文件
Close #1
Next i
'关闭表的记录集
rs.Close
'释放对象
Set rs = Nothing
Set tbl = Nothing
Set db = Nothing
MsgBox "导出完成!"
End Sub
```
在这段代码中,设置导出文件名的方式是使用了`Format()`函数,将每个文件名的数字部分按照5位数的格式进行格式化,并与固定的文件名“导出数据”组合,从而生成文件名。
这样,每次运行代码时,都会生成一个新的文件名,避免了覆盖已有文件的情况。
阅读全文