Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por snizo1
#34931
Boa tarde caros amigos, estou com uma duvida referente a uma função no VBA. ,

E o seguinte, eu criei um macro onde há um botão que ao ser pressionado , ira abrir uma janela para que eu selecione um arquivo da extensao .csv . Após abrir o arquivo , se eu clicar novamente no botão e selecionar o mesmo arquivo ou um outro arquivo , ele insere este novo arquivo ao lado do outro que já estava aberto. Minha duvida e a seguinte, quais são os comandos que eu deveria adicionar para que ao pressionar o botao para abrir o arquivo , o vba perceba que já existe um arquivo aberto , apague este arquivo que já esta aberto e ai sim abrir o novo arquivo que selecionei ???

Sou novo em VBA , por isso estou com esse probleminha ^^



ABAIXO ESTA O CODIGO DO EXCELL , TAMBEM UPEI O ARQUIVO ..



Sub TESTE()
'
' TESTE Macro
'

'
Dim vFileName
vFileName = Application.GetOpenFilename("Text Files, *.csv", , "Por favor selecione o equivo CSV")
If vFileName = "False" Then Exit Sub

With ActiveSheet.QueryTables.Add(Connection:="TEXT;" + vFileName, Destination:=Range("$A$1"))
.Name = vFileName
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
:=xlByColumns, MatchCase:=False, SearchFormat:=False, ReplaceFormat:= _
False
End Sub
Você não está autorizado a ver ou baixar esse anexo.
Por mprudencio
Posts
#34937
Eu nao entendi vc quer apenas apagar os dados anteriores

No inicio do codigo

Sheets("Plan1").usedrange.delete

Apaga tudo da planilha ate titulos e formulas. Plan1 é o nome da guia
Por snizo1
#34954
mprudencio escreveu:Eu nao entendi vc quer apenas apagar os dados anteriores

No inicio do codigo

Sheets("Plan1").usedrange.delete

Apaga tudo da planilha ate titulos e formulas. Plan1 é o nome da guia
Desta forma que voce disse , creio que ira ser deletado tudo da planilha ate o botao e o intuito nao seria esse.
No inicio do projeto que estou montando , eu abriria o meu macro do excel , apos aberto , iria ter um botao com o nome "Abrir arquivo" que ao ser pressionado , ira aparecer uma janela pedindo para que eu selecione um arquivo .csv , assim que eu selecionar este arquivo , ele ira abrir as informaçoes deste arquivo nas grades do excel dentro do macro. O problema é que quando eu clicar novamente no botao refazendo o mesmo processo anterior, so que selecionando outro arquivo ou ate mesmo o mesmo arquivo, essas informaçoes do novo arquivo que eu estaria abrindo, estao sendo inserindas ao lado das informaçoes do arquivo que ja estava aberto anteriormente.. O que eu queria fazer é sempre que eu fosse abrir um arquivo novamente , os dados anteriores serem apagados para que o novo arquivo fique no excell sozinho , o botao deve continuar la no excell, para que sempre que eu desejar abrir os arquivos eu possa pressiona-lo e refazer o mesmo processo.

Em outras palavras e so voce imaginar o seguinte , digamos que a dona benta, adora ler receita de bolo no excel , ela entao procurou um programador e falou o seguinte , olha eu quero que seja feito um macro no excel com um botao, para que sempre que eu clicar neste botao, eu possa abrir uma receita em formato texto ou csv e esta receita sera aberta na tela do excel para que eu possa analisa la. Assim que eu terminar de ler essa receita , eu gostaria de poder clicar novamente no botao , selecionar outra receita e as informaçoes desta nova receita substituir as informaçoes da receita anterior.

O intuito seria sempre que eu for abrir um novo texto , os campos que estavam preenchidos anteriormente, serem apagados para que as novas informaçoes que irei abrir, serem reposicionadas nos mesmos campos que agora estao limpos.
Eu consegui fazer esse processo so que com outro botao, eu iniciei a gravaçao da macro, fui la e apaguei o texto e dei stop na gravaçao e inseri a macro em outro botao , so que se fosse tudo neste botao que abre o arquivo , seria melhor..

Creio que na programaçao , deva conter comandos que ao selecionar um arquivo ele verifica se os campos onde o arquivo vai ser inserido ja possui algum preenchimento , se possuir o comando vai e limpa e ai sim ele abre as informaçoes do novo arquivo.

Desculpe se meu portugues e minha explicaçao ainda estiver confusa , sou ruin para explicar kkk
Eu postei o codigo e tambem o arquivo , caso voce/alguem quiser ver o funcionamento do que eu estou tentando explicar.
Por osvaldomp
#34964
Veja se ajuda. Acrescente ao seu código a linha em vermelho conforme abaixo.
Dim vFileName
Cells = ""


Se você quiser quebrar o vínculo da operação QueryTable (aconselhável) acrescente a linha em vermelho conforme abaixo.
End With
ActiveSheet.QueryTables(1).Delete
Por snizo1
#35007
osvaldomp escreveu:Veja se ajuda. Acrescente ao seu código a linha em vermelho conforme abaixo.
Dim vFileName
Cells = ""


Se você quiser quebrar o vínculo da operação QueryTable (aconselhável) acrescente a linha em vermelho conforme abaixo.
End With
ActiveSheet.QueryTables(1).Delete
Deu certo ! Obrigado brother :D
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord