永发信息网

可以使用VBA代码从Access导出数据至文本文件吗

答案:4  悬赏:0  手机版
解决时间 2021-12-16 19:04
可以使用VBA代码从Access导出数据至文本文件吗
最佳答案
在工具-引用中选择macrosoft ActiveX Data Objects
Private Sub CommandButton1_Click() '以output打开方式
Application.ScreenUpdating = False
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim arrTable() As String
Dim i As Long
i = 0
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
With conn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ActiveWorkbook.Path & "\" & "01.mdb" '数据库名称自己修改
.Open
End With
Set rs = conn.OpenSchema(adSchemaTables)
rs.MoveFirst
While rs.EOF = False
If rs.Fields("Table_Type").Value = "TABLE" Then
ReDim Preserve arrTable(i)
arrTable(i) = rs.Fields("Table_name").Value
i = i + 1
End If
rs.MoveNext
Wend
If i = 0 Then
MsgBox "no table in database"
Exit Sub
End If
rs.Close
Dim j As Long
Dim strTemp As String
For j = 0 To UBound(arrTable)
strTemp = ""
rs.Open "select * from " & arrTable(j), conn, 3, 1
If rs.RecordCount < 1 Then
MsgBox "no record in table " & arrTable(j)
else
Open ActiveWorkbook.Path & "\" & arrTable(j) & ".txt" For Output As #1
For i = 0 To rs.Fields.Count - 1
strTemp = strTemp & rs.Fields(i).Name & "|"
Next
Print #1, Left(strTemp, Len(strTemp) - 1) & Chr(13)
rs.MoveFirst

While rs.EOF = False
strTemp = ""
For i = 0 To rs.Fields.Count - 1
strTemp = strTemp & rs.Fields(i).Value & "|"
Next
Print #1, Left(strTemp, Len(strTemp) - 1) & Chr(13)
rs.MoveNext
Wend
Close #1
end if
Next
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
End Sub
全部回答
可以的 没问题 我能写
可以,有多种方法给你一个最简单的 生成的文件以;分隔各字段 Sub SaveToFile() Dim tabelName As String Dim Rst tabelName = "你的表名" Set Rst = CreateObject("ADODB.Recordset") Rst.Open tabelName, CurrentProject.Connection CreateObject("scripting.filesystemobject").CreateTextFile("c:\" & tabelName & ".txt").Write Rst.GetString(adClipString, -1, ";", vbCrLf) Rst.Close Set Rst = Nothing End Sub
在工具-引用中选择macrosoft ActiveX Data Objects Private Sub CommandButton1_Click() '以output打开方式 Application.ScreenUpdating = False Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim arrTable() As String Dim i As Long i = 0 Set conn = New ADODB.Connection Set rs = New ADODB.Recordset With conn .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ActiveWorkbook.Path & "\" & "01.mdb" '数据库名称自己修改 .Open End With Set rs = conn.OpenSchema(adSchemaTables) rs.MoveFirst While rs.EOF = False If rs.Fields("Table_Type").Value = "TABLE" Then ReDim Preserve arrTable(i) arrTable(i) = rs.Fields("Table_name").Value i = i + 1 End If rs.MoveNext Wend If i = 0 Then MsgBox "no table in database" Exit Sub End If rs.Close Dim j As Long Dim strTemp As String For j = 0 To UBound(arrTable) strTemp = "" rs.Open "select * from " & arrTable(j), conn, 3, 1 If rs.RecordCount < 1 Then MsgBox "no record in table " & arrTable(j) else Open ActiveWorkbook.Path & "\" & arrTable(j) & ".txt" For Output As #1 For i = 0 To rs.Fields.Count - 1 strTemp = strTemp & rs.Fields(i).Name & "|" Next Print #1, Left(strTemp, Len(strTemp) - 1) & Chr(13) rs.MoveFirst While rs.EOF = False strTemp = "" For i = 0 To rs.Fields.Count - 1 strTemp = strTemp & rs.Fields(i).Value & "|" Next Print #1, Left(strTemp, Len(strTemp) - 1) & Chr(13) rs.MoveNext Wend Close #1 end if Next rs.Close conn.Close Set rs = Nothing Set conn = Nothing End Sub
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
国通快递单子丢失怎么查询单号,网点不给查,
跟薛之谦有关的网名
阆中火车票代售点能买学生票吗
形容动作缓慢不慌不忙词语
索尼公司的全称是什么?
gta5全特效流畅至少要多少块的笔记本?
电话办理停机保号宽带还能用吗?
手机内存清理了又涨怎么办
c76扇料尺寸怎么算
形容巧思的成语
懂法律的帮个忙,关于印刷经营许可证的。
tutuanna的袜子,香港有么?请地址?
波司登济南
新款捷达换的新发电机不发电是什么原因。
飞科剃须刀FS336是镭电池吗?
推荐资讯
新县郭家河派出所在什么地方啊,我要处理点事
韶关学院通知书来时有没发手机卡,银行卡
人力资源管理概论招聘的程序是什么,请展开简
镜泉居委会地址有知道的么?有点事想过去!
郏县平顶山皮尔卡丹专卖店哪位知道具体地址啊
银行卡签约增金宝该怎么解约
三星c7性能可以吗?
盘锦辽河机动车检测服务有限公司位置在什么地
以家是港湾写作文,800字。急。
有没有一种手机按一个键就能呼叫家人
第一次刷卡POS小票没有打出,收银员又刷了一
古诗译文路途遥远我怎样才能把礼物送给你
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?