COMO SELECIONAR E USAR O ARQUIVO ABERTO VBA EXCEL
Amigos, bom dia!
Estou fazendo uma Macro no VBA Excel para abrir uma arquivo Txt.
A abertura do arquivo eu já consegui e aprendi aqui no VBmania.
Comando:
Shell [Ô]C:\Windows\System32\Notepad.exe K:\DAF\CONTABILIDADE\Pasta Usuários\Adriano\03 - Macros\Fiscal\SISCOSERV[Ô], vbMaximizedFocus
Problema:
O problema é que quando eu abro o arquivo txt eu perco a referencia. Pois a intenção de abrir o arquivo txt é copiar e colar dados da planilha em excel para o txt e depois salva-lo com a informação que eu copiei e colei do excel.
Solução Desejada:
Eu preciso além de abri-lo manter ele selecionado para
Copiar as informações desejadas.
Em seguida Salvar o arquivo txt no mome desejado e diretório desejado.
Grato.
Estou fazendo uma Macro no VBA Excel para abrir uma arquivo Txt.
A abertura do arquivo eu já consegui e aprendi aqui no VBmania.
Comando:
Shell [Ô]C:\Windows\System32\Notepad.exe K:\DAF\CONTABILIDADE\Pasta Usuários\Adriano\03 - Macros\Fiscal\SISCOSERV[Ô], vbMaximizedFocus
Problema:
O problema é que quando eu abro o arquivo txt eu perco a referencia. Pois a intenção de abrir o arquivo txt é copiar e colar dados da planilha em excel para o txt e depois salva-lo com a informação que eu copiei e colei do excel.
Solução Desejada:
Eu preciso além de abri-lo manter ele selecionado para
Copiar as informações desejadas.
Em seguida Salvar o arquivo txt no mome desejado e diretório desejado.
Grato.
Amigos do VBmania, Apenas complementando o problema na hora de salvar.
Estou com um problema em uma das minhas macros. Estou precisando abrir um txt e copiar e colar as informações da planilha excel no txt e salva-lo como .XML e com codificação: UTF-8.
Abertura do Arquivo:
A abertura do arquivo eu aprendi aqui no VBMANIA o seguinte comando:
Shell [Ô]C:\Windows\System32\Notepad.exe K:\DAF\CONTABILIDADE\Pasta Usuários\Adriano\03 - Macros\Fiscal\SISCOSERV[Ô], vbMaximizedFocus
Problema: O comando funciona e abre o arquivo desejado, porém, ele perde a referencia, ele abre mas, não fica com o programa selecionado para que eu possa executar o comando de colar no txt.
Solução Desejada:
Abrir o arquivo txt e copiar e colar as informações da planilha excel.
Em seguida salvar o txt em formato XML e com codificação: UTF-8.
Aos salvar quero escolher o nome no qual o arquivo irá ser salvo.
Estou com um problema em uma das minhas macros. Estou precisando abrir um txt e copiar e colar as informações da planilha excel no txt e salva-lo como .XML e com codificação: UTF-8.
Abertura do Arquivo:
A abertura do arquivo eu aprendi aqui no VBMANIA o seguinte comando:
Shell [Ô]C:\Windows\System32\Notepad.exe K:\DAF\CONTABILIDADE\Pasta Usuários\Adriano\03 - Macros\Fiscal\SISCOSERV[Ô], vbMaximizedFocus
Problema: O comando funciona e abre o arquivo desejado, porém, ele perde a referencia, ele abre mas, não fica com o programa selecionado para que eu possa executar o comando de colar no txt.
Solução Desejada:
Abrir o arquivo txt e copiar e colar as informações da planilha excel.
Em seguida salvar o txt em formato XML e com codificação: UTF-8.
Aos salvar quero escolher o nome no qual o arquivo irá ser salvo.
Amigo, vejo pela sua pergunta que você é bem iniciante ainda. Gosto de ajudar nesses casos. Portanto se prepare para ler um pouco:
Por ser ainda iniciante, você está com a [Ô]visão de usuário[Ô], onde para transferir conteúdo de um arquivo para o outro, você usa o programa especÃfico para abri-lo, seleciona o texto desejado e cola no outro. Acontece que não é assim que fazemos, digo, nós programadores.
Nesse caso, você vai fazer o que o notepad e o excel fazem nos seus processos de abertura. Para o caso de abrir um arquivo texto, seria:
Analisando linha por linha:
As duas primeiras são de declarações de variáveis que vão ler o conteúdo do arquivo.
Open [Ô]c:\caminho\arquivo.txt[Ô] For Input As #1
Esta linha, seria o equivalente de abrir o notepad, clicar no menu abrir e especificar o arquivo.
O bloco de Loop abaixo disso, percorre o arquivo inteiro, lendo cada linha que é representada pela variável [Ô]conteudo[Ô], e em seguida concatenamos(juntamos textos), das variáveis arquivo e conteudo. Com essa concatenação feita em cada linha, no final, a variável [Ô]arquivo[Ô], vai conter todas as linhas do arquivo e ela será o que você vai colar no excel(ou vice versa).
O processo para com o arquivo do excel é bem semelhante à isso, mas primeiro, veja se consegue esse funcionar.
Por ser ainda iniciante, você está com a [Ô]visão de usuário[Ô], onde para transferir conteúdo de um arquivo para o outro, você usa o programa especÃfico para abri-lo, seleciona o texto desejado e cola no outro. Acontece que não é assim que fazemos, digo, nós programadores.
Nesse caso, você vai fazer o que o notepad e o excel fazem nos seus processos de abertura. Para o caso de abrir um arquivo texto, seria:
Dim arquivo As String
Dim conteudo As String
Open [Ô]K:\DAF\CONTABILIDADE\Pasta Usuários\Adriano\03 - Macros\Fiscal\SISCOSERV[Ô] For Input As #1
Do While Not EOF(1)
Line Input #1, conteudo
arquivo = arquivo & conteudo
Loop
Close #1
Analisando linha por linha:
As duas primeiras são de declarações de variáveis que vão ler o conteúdo do arquivo.
Open [Ô]c:\caminho\arquivo.txt[Ô] For Input As #1
Esta linha, seria o equivalente de abrir o notepad, clicar no menu abrir e especificar o arquivo.
O bloco de Loop abaixo disso, percorre o arquivo inteiro, lendo cada linha que é representada pela variável [Ô]conteudo[Ô], e em seguida concatenamos(juntamos textos), das variáveis arquivo e conteudo. Com essa concatenação feita em cada linha, no final, a variável [Ô]arquivo[Ô], vai conter todas as linhas do arquivo e ela será o que você vai colar no excel(ou vice versa).
O processo para com o arquivo do excel é bem semelhante à isso, mas primeiro, veja se consegue esse funcionar.
KERPLUNK, boa tarde!
Obrigado por seu retorno, mas, o código que você informou, até faz a leitura e o processamento, porém, não aconteceu nada e o txt também não abriu.
Também não houve a ação de colar a informação.
Eu já fiz a macro que trabalhou as informações no Excel e inclusive a ação de copiar já esta pronta.
O que estou precisando é abrir o txt (Isso eu já consegui, mas, esta perdendo a referencia) e colar as informações no txt.
Depois, preciso salvar essas informações com o seguinte formato.
.XML e com codificação: UTF-8.
Nova explicativa:
Abertura do Arquivo:
A abertura do arquivo eu aprendi aqui no VBMANIA o seguinte comando:
Shell [Ô]C:\Windows\System32\Notepad.exe K:\DAF\CONTABILIDADE\Pasta Usuários\Adriano\03 - Macros\Fiscal\SISCOSERV[Ô], vbMaximizedFocus
Problema: O comando funciona e abre o arquivo desejado, porém, ele perde a referencia, ele abre mas, não fica com o programa selecionado para que eu possa executar o comando de colar no txt.
Solução Desejada:
Abrir o arquivo txt e copiar e colar as informações da planilha excel.
Em seguida salvar o txt em formato XML e com codificação: UTF-8.
Aos salvar quero escolher o nome no qual o arquivo irá ser salvo.
Obrigado por seu retorno, mas, o código que você informou, até faz a leitura e o processamento, porém, não aconteceu nada e o txt também não abriu.
Também não houve a ação de colar a informação.
Eu já fiz a macro que trabalhou as informações no Excel e inclusive a ação de copiar já esta pronta.
O que estou precisando é abrir o txt (Isso eu já consegui, mas, esta perdendo a referencia) e colar as informações no txt.
Depois, preciso salvar essas informações com o seguinte formato.
.XML e com codificação: UTF-8.
Nova explicativa:
Abertura do Arquivo:
A abertura do arquivo eu aprendi aqui no VBMANIA o seguinte comando:
Shell [Ô]C:\Windows\System32\Notepad.exe K:\DAF\CONTABILIDADE\Pasta Usuários\Adriano\03 - Macros\Fiscal\SISCOSERV[Ô], vbMaximizedFocus
Problema: O comando funciona e abre o arquivo desejado, porém, ele perde a referencia, ele abre mas, não fica com o programa selecionado para que eu possa executar o comando de colar no txt.
Solução Desejada:
Abrir o arquivo txt e copiar e colar as informações da planilha excel.
Em seguida salvar o txt em formato XML e com codificação: UTF-8.
Aos salvar quero escolher o nome no qual o arquivo irá ser salvo.
Então basicamente você quer é salvar o conteúdo do excel em um XML, não entendi porque tem que ter o arquivo de texto...
KERPLUNK, boa tarde!
Agora eu entendi o que você quis realizar com o código que enviou, o problema que ele esta lendo o txt, mas, o txt esta vazio, por isso que ele não tras informação quando executa.
As informações estão no Excel e serão coladas e salvas no txt conforme a formatação informada.
Veja, existe uma sheet no Excel, na propria planilha onde esta a macro chamada Base
ele irá selecionar as linhas 1 ao 18 e copiar essas informações e colar no txt.
veja, as informações baixo são as linhas 1 a 18 da planilha (sheet) no excel chamada Base.
essa é a informação que quero passar para o txt.
O codigo que você me enviou esta contando as informações do txt, mas, ele ainda esta vazio.
<?xml version=[Ô]1.0[Ô] encoding=[Ô]UTF-8[Ô] ?>
<IncluirRAS xmlns:xsi=[Ô]http://www.w3.org/2001/XMLSchema-instance[Ô] xsi:noNamespaceSchemaLocation=[Ô]incluir_RAS.xsd[Ô]>
<NumeroRASEmpresa>14/00013605</NumeroRASEmpresa>
<NomeVendedor>EUROP ASSISTANCE (AUSTRIA) VAMOS FILES</NomeVendedor>
<EnderecoVendedor>A-1220 WIEN</EnderecoVendedor>
<CodigoPaisVendedor>72</CodigoPaisVendedor>
<Operacao>
<NumeroServAdqEmpresa>13605</NumeroServAdqEmpresa>
<CodigoNbs>118054000</CodigoNbs>
<CodigoPaisDestino>105</CodigoPaisDestino>
<ModoPrestacao>1</ModoPrestacao>
<DataInicio>2014-02-04</DataInicio>
<DataConclusao>2014-02-04</DataConclusao>
<Valor>5663.43</Valor>
</Operacao>
<InfoComplementar>SERVIÇOS DE ASSISTÊNCIA AVCW-06</InfoComplementar>
<CodigoMoeda>220</CodigoMoeda>
</IncluirRAS>
Agora eu entendi o que você quis realizar com o código que enviou, o problema que ele esta lendo o txt, mas, o txt esta vazio, por isso que ele não tras informação quando executa.
As informações estão no Excel e serão coladas e salvas no txt conforme a formatação informada.
Veja, existe uma sheet no Excel, na propria planilha onde esta a macro chamada Base
ele irá selecionar as linhas 1 ao 18 e copiar essas informações e colar no txt.
veja, as informações baixo são as linhas 1 a 18 da planilha (sheet) no excel chamada Base.
essa é a informação que quero passar para o txt.
O codigo que você me enviou esta contando as informações do txt, mas, ele ainda esta vazio.
<?xml version=[Ô]1.0[Ô] encoding=[Ô]UTF-8[Ô] ?>
<IncluirRAS xmlns:xsi=[Ô]http://www.w3.org/2001/XMLSchema-instance[Ô] xsi:noNamespaceSchemaLocation=[Ô]incluir_RAS.xsd[Ô]>
<NumeroRASEmpresa>14/00013605</NumeroRASEmpresa>
<NomeVendedor>EUROP ASSISTANCE (AUSTRIA) VAMOS FILES</NomeVendedor>
<EnderecoVendedor>A-1220 WIEN</EnderecoVendedor>
<CodigoPaisVendedor>72</CodigoPaisVendedor>
<Operacao>
<NumeroServAdqEmpresa>13605</NumeroServAdqEmpresa>
<CodigoNbs>118054000</CodigoNbs>
<CodigoPaisDestino>105</CodigoPaisDestino>
<ModoPrestacao>1</ModoPrestacao>
<DataInicio>2014-02-04</DataInicio>
<DataConclusao>2014-02-04</DataConclusao>
<Valor>5663.43</Valor>
</Operacao>
<InfoComplementar>SERVIÇOS DE ASSISTÊNCIA AVCW-06</InfoComplementar>
<CodigoMoeda>220</CodigoMoeda>
</IncluirRAS>
Citação::
Então basicamente você quer é salvar o conteúdo do excel em um XML, não entendi porque tem que ter o arquivo de texto...
Motivo:
é por que ele possui caracteres especiais e quando eu salvo do Excel direto no txt, onde já caracteres especiais como [Ô], ele me acrescenta aspas.
São exatamente as aspas que estão atrapalhando minha macro, pois essa informação com aspas é rejeitada pelo sistema da receita federal.
Agora, quando eu copio e colo diretamente no txt e salvo, ele não carrega essas aspas por causa dos caracteres especiais.
Veja como esta no arquivo do excel:
<?xml version=[Ô]1.0[Ô] encoding=[Ô]UTF-8[Ô] ?>
<IncluirRAS xmlns:xsi=[Ô]http://www.w3.org/2001/XMLSchema-instance[Ô] xsi:noNamespaceSchemaLocation=[Ô]incluir_RAS.xsd[Ô]>
Veja como ele salva no txt quando eu salvo diretamente do excel para txt
[Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]UTF-8[Ô][Ô] ?>[Ô]
[Ô]<IncluirRAS xmlns:xsi=[Ô][Ô]http://www.w3.org/2001/XMLSchema-instance[Ô][Ô] xsi:noNamespaceSchemaLocation=[Ô][Ô]incluir_RAS.xsd[Ô][Ô]>[Ô]
Viu como ele me acrescentou as aspas?
Certo, é isso mesmo, você quer salvar conteúdo do excel para um arquivo XML. Nesse caso, esqueça o txt, notepad e tudo mais. Você tem duas maneiras de fazer isso. Uma é uma macro no próprio excel para fazer isso. Outra é um programa que abra a planilha, pegue os dados e crie o XML.
Entenda uma coisa importante: XML não é simplesmente um arquivo txt.
Então o que você prefere? Com uma macro, vai ser mais [Ô]simples[Ô], mais fácil de entender o código, mas vai dar mais trabalho e fica mais difÃcil de fazer manutenção e detectar erros. Fazendo um programa para isso, fica tecnicamente um pouco mais complexo no começo, mas é muito mais seguro e mais fácil de se fazer manutenção
Entenda uma coisa importante: XML não é simplesmente um arquivo txt.
Então o que você prefere? Com uma macro, vai ser mais [Ô]simples[Ô], mais fácil de entender o código, mas vai dar mais trabalho e fica mais difÃcil de fazer manutenção e detectar erros. Fazendo um programa para isso, fica tecnicamente um pouco mais complexo no começo, mas é muito mais seguro e mais fácil de se fazer manutenção
Citação::
Então basicamente você quer é salvar o conteúdo do Excel em um XML, não entendi porque tem que ter o arquivo de texto...
Não estou conseguindo salvar do Excel diretamente no xml com as especificações necessárias.
Sempre quando vou salvar em xml no Excel ele dá erro e não processa o XML.
Quando eu jogo do Excel para o txt com a ação ou função de copiar e colar, não terá problemas com as aspas que o próprio programa inclui para manter as informações, quando salvo diretamente do excel para o txt.
Devido a esses motivos que estou querendo copiar e colar para o txt e só depois salvar as informações.
[quote]:
Você tem duas maneiras de fazer isso. Uma é uma macro no próprio excel para fazer isso. Outra é um programa que abra a planilha, pegue os dados e crie o XML.
Entenda uma coisa importante: XML não é simplesmente um arquivo txt.
Então o que você prefere?
Bom, eu já tentei gerar diretamente no Excel no xml em SUPLEMENTOS > XML TOOLS, além de funcionar apenas na versão 2007, pois as demais versões superiores esta dando erro de usuário não definido.
Mesmo gerando esse XML diretamente do excel através do XML TOOLS, o sistema da receita esta dando o erro 5 e, quando eu faço o processo de copiar e colar no txt e arrumar as diferenças na mão, o arquivo processa normalmente pela receita.
Gostaria da linguagem VBA, pois não sei se vou ter dinheiro para pagar esse programa que gera o xml, no qual você citou, por isso estou recorrendo a macro em vba do excel.
Eu já trabalhei o arquivo todo, com a macro que eu fiz, mas, o processo de copiar do excel e colar no txt é manual, inclusive a ação de salvar com codificação: UTF-8.
Quando eu faço isso, a receita aceita e valida com sucesso as informações.
Grato.
Você tem duas maneiras de fazer isso. Uma é uma macro no próprio excel para fazer isso. Outra é um programa que abra a planilha, pegue os dados e crie o XML.
Entenda uma coisa importante: XML não é simplesmente um arquivo txt.
Então o que você prefere?
Bom, eu já tentei gerar diretamente no Excel no xml em SUPLEMENTOS > XML TOOLS, além de funcionar apenas na versão 2007, pois as demais versões superiores esta dando erro de usuário não definido.
Mesmo gerando esse XML diretamente do excel através do XML TOOLS, o sistema da receita esta dando o erro 5 e, quando eu faço o processo de copiar e colar no txt e arrumar as diferenças na mão, o arquivo processa normalmente pela receita.
Gostaria da linguagem VBA, pois não sei se vou ter dinheiro para pagar esse programa que gera o xml, no qual você citou, por isso estou recorrendo a macro em vba do excel.
Eu já trabalhei o arquivo todo, com a macro que eu fiz, mas, o processo de copiar do excel e colar no txt é manual, inclusive a ação de salvar com codificação: UTF-8.
Quando eu faço isso, a receita aceita e valida com sucesso as informações.
Grato.
Ok, vejo que você não é um programador ainda, você é um usuário que está querendo automatizar alguma tarefa, muito boa iniciativa. Vamos lá:
Para gerar o XML, não precisa de nenhuma ferramenta especial, uma macro do excel vai dar conta. Do mesmo modo que mostrei a abertura do arquivo, também é possÃvel fazer a [Ô]escrita[Ô], você pode percorrer os dados do excel e ir gravando no arquivo texto. Pode ser assim?
Para gerar o XML, não precisa de nenhuma ferramenta especial, uma macro do excel vai dar conta. Do mesmo modo que mostrei a abertura do arquivo, também é possÃvel fazer a [Ô]escrita[Ô], você pode percorrer os dados do excel e ir gravando no arquivo texto. Pode ser assim?
Faça seu login para responder