2016-03-29 18 views
3

"ScorBase" adlı bir program için bir VBA komut dosyası yazıyorum. Ben 506 '"bu sorunu yaşamaya devam m' henüz bir metin dosyası oluşturur bir alt yordamı çağırmak için çalışıyorumHata 506: Sınıf tanımlı değil: 'FileSystemObject'

bu ben kıvranma kodudur.

Sub emailFile() 

' Declare a TextStream. 
Dim stream 
'As TextStream 

dim fso 
Set fso = New FileSystemObject 

' Create a TextStream. 
Set stream = fso.CreateTextFile("C:\Users\eladt\Desktop\creatFile\Mail.txt", True) 

stream.WriteLine "user Email." 
stream.WriteLine "Maki" 
stream.WriteLine "Nigeri" 
stream.WriteLine "Sashimi" 
stream.Close 


End Sub 
+0

Aşağıdaki durumlarda ne olur: 'fso = new Scripting.FileSystemObject' veya' set fso = CreateObject ("Scripting.FileSystemObject") '? –

+0

hala aynı hatayı atıyor –

+0

Açık olanı belirtmekten nefret ediyorum, ancak "Referans" olarak "Microsoft Komut Dosyası Çalışma Zamanı" eklediniz mi? Araçlar> Referanslar> "Microsoft Komut Dosyası Çalışma Zamanı" nı Denetle> OK –

cevap

1

Bir daha basit bir yaklaşım herhangi bir dış referanslar kullanmadan:

Sub MM_Email_To_File() 

Dim FF As Integer 
FF = FreeFile 

'// The file will be created if it doesn't exist 
Open "C:\Users\eladt\Desktop\creatFile\Mail.txt" For Output As #FF 

    Print #FF, "User Email" 
    Print #FF, "Maki" 
    Print #FF, "Nigeri" 
    Print #FF, "Sashimi" 

Close #FF 

End Sub 

VBA'da G/Ç işlemi hakkında daha fazla bilgi için this MSDN article'u kontrol edebilirsiniz.

0

yorumların orijinal altında sorusu, Microsoft Scripting Runtime uygulamasının bilgisayarınızda bulunmadığını veya bilgisayarınızda yüklü olmadığını düşündürmektedir. Bu, istemeden de olabilir, ancak BT yöneticilerinin ortamınızdaki kitaplığa erişiminin sınırlı olmasından kaynaklanabilir.

Neyse ki; Bir metin dosyası yazma yollarının sayısı. Bir akış yazmak için ADO kütüphanesini kullanabilirsiniz ..

Sadece Microsoft ActiveX Data Objects 2.8 Library için bir başvuru ekleyin ve sonra kodunuzu değiştirin:

Sub emailFile() 

    ' Declare an ADO Stream. 
    Dim stream As ADODB.stream 

    ' Create an ADO Stream. 
    Set stream = New ADODB.stream 
    stream.Open 
    stream.Type = adTypeText 
    stream.WriteText "user Email.", stWriteLine 
    stream.WriteText "Maki", stWriteLine 
    stream.WriteText "Nigeri", stWriteLine 
    stream.WriteText "Sashimi", stWriteLine 
    stream.SaveToFile "C:\Users\eladt\Desktop\creatFile\Mail.txt", adSaveCreateOverWrite 
    stream.Close 

End Sub 
1

Eğer başka bir uygulamadan bağlama geç sonra 3. parti uygulama barındıran VBA çevre ile ilgili bir sorun, belki o olduğunu çalışıyor bir çeşit kum havuzunu gerçekleştirme.

bir dosyaya yazmak için herhangi bir harici kütüphaneleri gerekmez, sen doğal bunu deneyebilirsiniz:

Dim hf As Integer 
hf = FreeFile 

Open "C:\Users\eladt\Desktop\creatFile\Mail.txt" For Output As #hf 

Print #hf, "user Email." 
Print #hf, "Maki" 
Print #hf, "Nigeri" 
Print #hf, "Sashimi" 

Close #hf 
+0

Teşekkürler Alex K. işini yaptı :) –