2012-07-16 15 views
60

Mam plik, który jest ręcznie dodawany lub modyfikowany na podstawie danych wejściowych. Ponieważ większość zawartości jest powtarzalna w tym pliku, zmieniają się tylko wartości szesnastkowe, chcę uczynić z niego plik wygenerowany przez narzędzie.Tworzenie i zapisywanie do pliku txt za pomocą VBA

Chcę napisać kody c, które zostaną wydrukowane w tym pliku .txt.

Co to jest polecenie, aby utworzyć plik .txt przy użyciu VBA i jak mogę napisać to

+0

Czy chcesz zmodyfikować istniejący plik po jego utworzeniu? A co to jest "kody kodów" – brettdj

Odpowiedz

117

Zastosowanie FSO, aby utworzyć plik i napisać do niego.

Dim fso as Object 
Set fso = CreateObject("Scripting.FileSystemObject") 
Dim oFile as Object 
Set oFile = FSO.CreateTextFile(strPath) 
oFile.WriteLine "test" 
oFile.Close 
Set fso = Nothing 
Set oFile = Nothing  

Zobacz dokumentację tutaj:

+12

, gdy bezpośrednio odwołujesz się do środowiska wykonawczego skryptów, możesz użyć poprawnych typów: 'Dim oFs jako nowy FileSystemObject Dim oFile jako TextStream' –

+0

Czy korzystasz z Scripting Runtime preferowanego w porównaniu ze starszą metodą? Chciałbym podać kilka powodów, aby powiedzieć moim uczniom z informacjami popartymi innymi doświadczeniami. –

+0

@RickHenderson, Wolę to, jeśli o to ci chodzi. Zaletą jest enkapsulacja. Po obiekt (ustawić oFile = Nothing |) lub wykracza poza zakres, plik jest automatycznie zamknięty. – Ben

15

łatwy sposób z redundancją się znacznie.

Dim fso As Object 
    Set fso = CreateObject("Scripting.FileSystemObject") 

    Dim Fileout As Object 
    Set Fileout = fso.CreateTextFile("C:\your_path\vba.txt", True, True) 
    Fileout.Write "your string goes here" 
    Fileout.Close 
+0

Czy można użyć selektora plików, aby ustawić ścieżkę? – rrs

-3
Dim SaveVar As Object 

Sub Main() 

    Console.WriteLine("Enter Text") 

    Console.WriteLine("") 

    SaveVar = Console.ReadLine 

    My.Computer.FileSystem.WriteAllText("N:\A-Level Computing\2017!\PPE\SaveFile\SaveData.txt", "Text: " & SaveVar & ", ", True) 

    Console.WriteLine("") 

    Console.WriteLine("File Saved") 

    Console.WriteLine("") 

    Console.WriteLine(My.Computer.FileSystem.ReadAllText("N:\A-Level Computing\2017!\PPE\SaveFile\SaveData.txt")) 
    Console.ReadLine() 

End Sub() 
+0

To może pomóc w pisaniu i czytaniu pliku tekstowego. –

+1

Myślę, że nie czytasz tego, co to jest, a także nie lubisz wyjaśniać, co zamierzasz zrobić, co nie jest dobrą rzeczą podczas pomagania innym. –

+0

Nawet nie formatujesz poprawnie odpowiedzi. – BDL

5
Open ThisWorkbook.Path & "\template.txt" For Output As #1 
Print #1, strContent 
Close #1 
+0

Zarzuty napisz odpowiedź z kilkoma wyjaśnieniami i szczegółami. –

+0

Nie zapewnia to odpowiedzi na pytanie. Gdy masz już wystarczającą [reputację] (https://stackoverflow.com/help/whats-reputation), będziesz mógł [komentować dowolny wpis] (https://stackoverflow.com/help/privileges/comment); zamiast tego [dostarczaj odpowiedzi, które nie wymagają wyjaśnień od pytającego] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-zamiast). - [Z recenzji] (/ review/low-quality-posts/17750668) – Rich

+0

Preferuję tę metodę do metody FSO, ponieważ nie wymaga ona zewnętrznych odniesień i jest dość krótka. Chociaż sugeruję użycie FreeFile, aby uzyskać numer pliku zamiast kodowania go jako nr 1. – phrebh

Powiązane problemy