无法写入VBA中的文本文件

问题描述:

我试图使用VBA写入文本文件。这是我的代码:无法写入VBA中的文本文件

DoCmd.SetWarnings False 

'Delete all data from the source table 
DoCmd.RunSQL "DELETE * FROM tblSource;" 

'Run query to fill it 
DoCmd.OpenQuery "qryFilltblSource" 

' Declare a FileSystemObject. 
Dim fso As FileSystemObject 

' Create a FileSystemObject. 
Set fso = New FileSystemObject 

' Declare a TextStream. 
Dim stream As TextStream 

' Create a TextStream. The true part overwrites a text file it it already exists 
Set stream = fso.CreateTextFile("C:\Target Folder", True) 

Set rst = CurrentDb.OpenRecordset("tblSource") 

Dim i As Integer 
i = 1 

Do Until rst.EOF = True 
    stream.WriteLine (rst!i) 
    i = i + 1 
    rst.MoveNext 
Loop 

stream.Close 

DoCmd.SetWarnings True 

第一个错误,我假设我可能会得到另一个,是“权限被拒绝”。我无法理解这个,因为我是这台机器上的管理员。我查看了目标文件夹,并且已经有权限执行我想要的操作 - 但是,当我查看其属性时,“只读”框突出显示 - 这是为什么?

感谢

+0

切勿使用设置警告,它会转身咬你:http://*.com/questions/11213892/whats-the-difference-between-docmd-setwarnings-and-currentdb-execute/11213943# 11213943 – Fionnuala 2013-03-12 13:52:03

你将不会被允许写入到C盘根,所以C:\Target Folder\Atextfile.txt

考虑使用TransferText

DoCmd.TransferText acExportDelim, , tblSource, "c:\docs\output.txt", True 

请注意,你不能说:

Dim i As Integer 
i = 1 

Do Until rst.EOF = True 
    stream.WriteLine (rst!i) <-- i is a record, not a field 
    i = i + 1 
    rst.MoveNext 
Loop 

您需要

Do Until rst.EOF 
    For i=0 to rst.Fields.Count-1 
     stream.WriteLine rst(i) ''or rst(i) & "" to avoid problems with Null 
    Next 
    rst.MoveNext 
Loop 
+0

我排序那一个 - 总是似乎是我发布它的方式我5分钟后解决它 - 我忽略了给它一个文件名,它试图覆盖一个目录 - 现在我得到一个“找不到的项目这个收集错误“ – Katana24 2013-03-12 13:28:08

+0

你为什么想走很长的路?错误是因为你指的是记录号,就好像它们是字段一样。 – Fionnuala 2013-03-12 13:33:12

+0

我尝试了你的建议,并得到了错误 - “无效使用null”,这是为循环。我采用了转移方式,并且提供了一种享受 - 干杯Remou – Katana24 2013-03-12 13:45:10