2012-07-16 35 views
60

Tengo un archivo que se agrega o modifica manualmente según las entradas. Como la mayoría de los contenidos son repetitivos en ese archivo, solo cambian los valores hexadecimales, quiero convertirlo en un archivo generado por la herramienta.Cómo crear y escribir en un archivo txt usando VBA

Quiero escribir los códigos c que van a imprimirse en ese archivo .txt.

¿Cuál es el comando para crear un archivo .txt con VBA, y cómo puedo escribir en él

+0

¿Quieres modificar un archivo existente, una vez que se crea? ¿Y qué es "los códigos C" – brettdj

Respuesta

117

Uso FSO para crear el archivo y escribir en él.

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  

Consulte la documentación aquí:

+12

cuando hace referencia directamente al Scripting Runtime, puede usar los tipos correctos: 'Dim oFs como New FileSystemObject Dim oFile As TextStream' –

+0

¿Está utilizando el Scripting Runtime preferido sobre el método de canal anterior? Me gustaría algunas razones para contarles a mis alumnos información respaldada por otra experiencia. –

+0

@RickHenderson, lo prefiero, si eso es lo que quieres decir. La ventaja es la encapsulación. Una vez que objeta (establece oFile = Nothing |), o sale del alcance, el archivo se cierra automáticamente. – Ben

15

una manera fácil de salir mucho redundancia.

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

¿Es posible usar el selector de archivos para establecer la ruta? – 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

Esto puede ayudar con la escritura y lectura de un archivo de texto –

+1

Creo que no lee cuál es la pregunta y tampoco le gusta explicar qué va a intentar, lo que no es bueno mientras ayuda a los demás. –

+0

Y ni siquiera está formateando su respuesta correctamente. – BDL

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

Solicite que escriba la respuesta con algunas explicaciones y detalles. –

+0

Esto no proporciona una respuesta a la pregunta. Una vez que tenga suficiente [reputación] (https://stackoverflow.com/help/whats-reputation) podrá [comentar cualquier publicación] (https://stackoverflow.com/help/privileges/comment); en su lugar, [brinde respuestas que no requieran aclaración del autor de la pregunta] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-instead). - [De la crítica] (/ review/low-quality-posts/17750668) – Rich

+0

Prefiero este método al método FSO porque no requiere referencias externas y es bastante corto. Aunque sugiero usar FreeFile para obtener el número de archivo en lugar de codificarlo como # 1. – phrebh

Cuestiones relacionadas