Ir ao conteúdo
  • Cadastre-se

Excel vba/macro/excel - copia celulas não vazia e cola em um .txt


Posts recomendados

Boa tarde

 

Essa macro abaixo seleciona uma determinada aba copia e salva a mesma em .txt, porém copia ela toda (até onde tem formula), e eu quero que copie até onde tem células NÃO vazias. Acredito que a mudança deve ser feita na parte de negrito.

Alguém pode me ajudar?

 

Sub EXPORTAR()
    Application.DisplayAlerts = False
 
    template_file = ActiveWorkbook.FullName
 
    fileSaveName = Application.GetSaveAsFilename( _
                   InitialFileName:="C:\CTBIL" + _
                                    ".txt", _
                   fileFilter:="Text Files (*.txt), *.txt")
 
    If fileSaveName = False Then
        Exit Sub
    End If
 
    
    Dim newBook As Workbook
    Dim plan As Worksheet
    Set newBook = Workbooks.Add
 
    ThisWorkbook.Worksheets("CTBIL.txt").Copy Before:=newBook.Sheets(1)
 
    
    For Each plan In newBook.Sheets
        If plan.Name <> ActiveSheet.Name Then
            newBook.Worksheets(plan.Index).Delete
        End If
    Next
 
    newBook.SaveAs Filename:= _
                          fileSaveName, FileFormat:=xlTextWindows, _
                          CreateBackup:=False
 
    
    newBook.Close SaveChanges:=True
    Set newBook = Nothing
 
    MsgBox "O arquivo foi exportado com sucesso! ", vbInformation, "Exportar arquivos"
 
End Sub

 

Link para o comentário
Compartilhar em outros sites

Acho que só é possível exportar uma aba toda, embora eu testei essa sua macro e não vi nenhum problema nela.
Agora se você precisa muito que só exporte uma única tabela da sua aba, você pode fazer é o seguinte:


1) fazer uma macro que copie até as células vazias
2) uma macro que abra o txt e cole os dados lá.

Dicas:


1) Se os dados estiverem numa tabela organizadinha, entre A1 e "xy" eu faria um simples:

Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).Copy

 

ou

 

Você pode usar Do Until pra descobrir a primeira linha (ou coluna) vazia para depois copiar o que está à cima (ou à esquerda). por exemplo (supondo 10 colunas):

Dim linha as Integer
Do Until (linha, 10) = ""
linha = linha + 1
Loop

 

2) Depois de copiar tudo que você quer> abrir bloco de notas e colar dados

 

AbrirNotePad = Shell("Notepad.exe", vbNormalFocus)
SendKeys "^v"

 


 

 

 

Link para o comentário
Compartilhar em outros sites

image.thumb.png.f19a6e8a7f65f5325f4d48174316f800.png

adicionado 5 minutos depois

miniCheed - Na imagem acima mostra  a aba que é para ser copiada no .txt (bloco de notas).

O que eu quero é que a ultima celula preenchida, no caso ai a 71, mas como tem formulas pra baixo, ele copia até onde tem.

 

Vou tentar fazer do jeito que você explicou, porém com a caixa para salvar e com o nome pré-definido igual na que eu postei.

Link para o comentário
Compartilhar em outros sites

É apenas 1 coluna? De qualquer forma, pra selecionar até a última célula vazia vai ser o seguinte:

Sub UltimaLinha()



Dim coluna As Integer
coluna = 1


Do Until Cells(1, coluna).Value = ""

coluna = coluna + 1
Cells(1, coluna - 1).Select



Dim uColun4 As Long
uColun4 = ActiveCell.Column


Loop



Dim linha As Integer
linha = 1


Do Until Cells(linha, 1).Value = ""

linha = linha + 1
Cells(linha - 1, 1).Select



Dim ulinh4 As Long
ulinh4 = ActiveCell.Row

Loop



Range(Cells(1, "A"), Cells(ulinh4, uColun4)).Select

Range(Cells(1, "A"), Cells(ulinh4, uColun4)).Copy



AbrirNotePad = Shell("Notepad.exe", vbNormalFocus)

SendKeys "^v"


End Sub

 

 

adicionado 22 minutos depois

 

Link para o comentário
Compartilhar em outros sites

Exatamento isso. Muito Obrigado

Sou iniciante, nessa macro como eu faço pra escolher a aba q ele vai copiar? porque o comando é dado em abas diferentes, e na macro copia a planilha ativa.

adicionado 58 minutos depois

E depois retorne a planilha onde executei o macro.

E ao invés de abrir o notepad e colar, ele abra a caixa de salvar com um nome definido.


f

ileSaveName = Application.GetSaveAsFilename( _
                   InitialFileName:="C:\DEFINIRNOMEPADRAO" + _
                                    ".txt", _
                   fileFilter:="Text Files (*.txt), *.txt")

 

 

adicionado 59 minutos depois

Não consegui encaixar esses comandos na tua macro. =/

Link para o comentário
Compartilhar em outros sites

@rafacba87

1) Pra Escolher a aba que você quer (dentro da mesma planilha), coloca:

Sheets("nome da aba").Activate

2) Se você tiver 2 planilhas diferentes> primeiro coloca ela numa mesma pasta dentro do pc, depois:

 

caminho = ThisWorkbook.Path

 

Workbooks.Open (caminho & "\NOME DA OUTRA PLANILHA.xlsx")   '<< Se for outro formato, por exemplo, xlsm, basta trocar aqui<<

 

Sheets("nome da aba").Activate
 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!