2013-03-12 4 views
1

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 

첫 번째 오류, 나는 아마 또 다른 하나를 얻을거야 있으리라 믿고있어, "권한 거부"입니다. 내가이 컴퓨터의 관리자이기 때문에 나는 이것을 이해할 수 없다. 대상 폴더를보고 필자가 원하는대로 할 수있는 권한을 가지고 있습니다. 그러나 속성을 볼 때 "읽기 전용"상자가 강조 표시됩니다. 왜이 옵션입니까?

감사

당신은 C 루트에 쓸 허용되지 않습니다
+0

경고를 사용하지 마십시오. 돌아 서서 물게됩니다. http://stackoverflow.com/questions/11213892/whats-the-difference-between-docmd-setwarnings-and-currentdb-execute/11213943# 11213943 – Fionnuala

답변

1

, 그래서 C:\Target Folder\Atextfile.txt

TransferText 사용을 고려 :

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 

을 : 당신이 말할 수 없다

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

이 필요합니다.
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

+0

왜 먼 길을 가고 싶습니까? 오류는 레코드 번호를 필드 인 것처럼 참조하기 때문입니다. – Fionnuala

+0

나는 당신이 제안한 것을 시도해보고 do 루프를위한 "null의 잘못된 사용"오류가 발생했습니다. 나는 이전 방식으로 갔고 치료를했습니다. - 건배 Remou – Katana24

관련 문제