2013-03-12 6 views
1

Im пытается записать в текстовый файл с помощью 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

Никогда не используйте Set предупреждения, он повернется и укусить вас: http://stackoverflow.com/questions/11213892/whats-the-difference-between-docmd-setwarnings-and-currentdb-execute/11213943# 11213943 – Fionnuala

ответ

1

Вам не разрешено писать в корне 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 минут после этого - я пренебрег тем, что дал ему имя файла, и он пытался перезаписать каталог. Теперь я получаю «Item not found in эта ошибка коллекции " – Katana24

+0

Почему вы хотите пройти долгий путь? Ошибка связана с тем, что вы ссылаетесь на номера записей, как на поля. – Fionnuala

+0

Я попробовал то, что вы предложили, и получил ошибку - «Недопустимое использование null», которое было для цикла do. Я пошел с трансферным подходом, и это сработало - Cheers Remou – Katana24

Смежные вопросы