Como criar e gravar em um arquivo txt usando VBA
Eu tenho um arquivo que é adicionado ou modificado manualmente com base nas entradas. Como a maior parte do conteúdo é repetitiva nesse arquivo, apenas os valores hexadecimais estão mudando, quero torná-lo um arquivo gerado por ferramenta.
Quero escrever os códigos c que serão impressos nesse arquivo .txt .
Qual é o comando para criar um arquivo .txt usando VBA e como faço para escrever nele
Deseja modificar um arquivo existente depois de criado? E o que são "os códigos c"
Se alguma das respostas existentes atender às suas necessidades, você se importaria em aceitá-la como uma resposta, para que sua pergunta não apareça mais como sem resposta? (Caso contrário, adicione detalhes sobre o que está faltando nas respostas existentes para resolver seu problema :))
— Marcus Mangelsdorf
Para elaborar a resposta de Ben :
Se você adicionar uma referência Microsoft Scripting Runtimee digitar corretamente a variável fso, poderá aproveitar as vantagens do preenchimento automático (Intellisense) e descobrir os outros excelentes recursos do FileSystemObject.
Obrigado por escrever uma resposta completa com comentários úteis sobre o código.
— Portland Runner de
Fico mais do que feliz se você aprendeu alguma coisa com minha postagem! :)
Use FSO para criar o arquivo e escrever nele.
ao fazer referência ao Scripting Runtime diretamente, você pode usar os tipos corretos: Dim oFs As New FileSystemObject Dim oFile As TextStream
O uso do Scripting Runtime é preferível ao método de canal mais antigo? Eu gostaria de alguns motivos para contar aos meus alunos com informações apoiadas por outra experiência.
@RickHenderson, eu prefiro, se é o que você quer dizer. A vantagem é o encapsulamento. Assim que você objetar (definir oFile = Nothing |) ou sair do escopo, o arquivo será fechado automaticamente.
Observe que esta resposta promove práticas de codificação inadequadas : O problema é que não definir explicitamente os tipos de variáveis ​​corretos , bem como criar um objeto por uma referência de string ao seu nome pode dificultar muito a depuração de problemas no futuro (por exemplo, se você erros de ortografia em partes do nome). Além disso, ao não digitar as variáveis, você não tem como aprender sobre os outros métodos incríveis que FileSystemObjecttem a oferecer. @Ben: Por favor, considere atualizar sua resposta para levar os iniciantes a uma direção melhor .
@MarcusMangelsdorf Já ouvi você, mas não quero debater.
Microsoft Docs: Opendeclaração
Microsoft Docs: Print #declaração
Microsoft Docs: Closedeclaração
wellsr.com: VBA grava em arquivo de texto com a Printdeclaração
Suporte de escritório: Workbook.Pathpropriedade
— Bhanu Sinha
Por favor escreva a resposta com algumas explicações e detalhes.
Prefiro este método ao método FSO porque não requer referências externas e é bastante curto. Embora eu sugira usar o FreeFile para obter o número do arquivo em vez de codificá-lo como # 1.
— phrebh de
isso funciona muito bem. Nunca vi a Open somePath For Output As #1sintaxe antes, esta documenta: msdn.microsoft.com/en-us/vba/language-reference-vba/articles/…
Eu prefiro essa abordagem também para a escrita de arquivos de texto comuns. Essas declarações fazem parte da linguagem BASIC desde pelo menos 1981.
Com relação ao comentário de @phrebh sobre o uso de FreeFile em vez de um codificado # 1, consulte wellsr.com/vba/2016/excel/vba-freefile-for-foolproof-file-IO
— pelos
É possível usar o seletor de arquivos para definir o caminho?
Isso cria um arquivo que é codificado em UCS2. É possível criar um que seja ANSI?
— paolov
— Zack Brightman
Isso pode ajudar a escrever e ler um arquivo de texto
Acho que você não leu qual é a pergunta e também não gosta de explicar o que vai tentar, o que não é bom para ajudar os outros.
— M. Adeel Khalid de
E você nem está formatando sua resposta adequadamente.
— BDL de
Infelizmente, o código que você postou não é VBA. Não há My.Computer.FileSystemobjeto no VBA por padrão e, portanto, você também não pode usar o WriteAllTextmétodo.
— Marcus Mangelsdorf,
Zack, evite postar respostas apenas com código e certifique-se de que a linguagem que você está usando está alinhada com op.