Ir ao conteúdo

Posts recomendados

Postado

@Midori

 

sou leigo no VBA, não sei inserir isso como macro.

poderias me ajudar como configurar isso por favor?

31 minutos atrás, Midori disse:

Pode ser feito assim,

 


Application.GetSaveAsFilename FileFilter:="Delimitado por vírgulas (*.csv), *.csv"

 

sou leigo no VBA, não sei inserir isso como macro.

poderias me ajudar como configurar isso por favor?

Postado

@Matheus Ittner Giampiccolo  No menu Desenvolvedor escolha Inserir > Controles Active X > Botão de Comando.

 

Após desenhar o botão na planilha dê dois cliques nele para abrir o editor e cole o código assim,

 

Private Sub CommandButton1_Click()
Application.GetSaveAsFilename FileFilter:="Delimitado por vírgulas (*.csv), *.csv"
End Sub

 

Para funcionar volte para a planilha e desmarque a opção Modo de Design do menu Desenvolvedor.

 

Aqui também tem um passo a passo,

 

https://support.microsoft.com/en-us/office/assign-a-macro-to-a-form-or-a-control-button-d58edd7d-cb04-4964-bead-9c72c843a283

 

  • Amei 1
Postado
29 minutos atrás, Midori disse:

@Matheus Ittner Giampiccolo  No menu Desenvolvedor escolha Inserir > Controles Active X > Botão de Comando.

 

Após desenhar o botão na planilha dê dois cliques nele para abrir o editor e cole o código assim,

 


Private Sub CommandButton1_Click()
Application.GetSaveAsFilename FileFilter:="Delimitado por vírgulas (*.csv), *.csv"
End Sub

 

Para funcionar volte para a planilha e desmarque a opção Modo de Design do menu Desenvolvedor.

 

Aqui também tem um passo a passo,

 

https://support.microsoft.com/en-us/office/assign-a-macro-to-a-form-or-a-control-button-d58edd7d-cb04-4964-bead-9c72c843a283

 

 

Consegui fazer o botão e abre a caixa para salvar, porém nao conclui 

 

quando salvo, depois vou na pasta e não esta la

 

 

image.png

Postado

@Matheus Ittner Giampiccolo  Essa função é para atribuir o nome do arquivo, para salvar pode ser assim,

 

Private Sub CommandButton1_Click()
    Dim Arquivo As String
    
    Arquivo = Application.GetSaveAsFilename( _
        FileFilter:="Delimitado por vírgulas (*.csv), *.csv")
    
    ThisWorkbook.ActiveSheet.Copy
    ActiveWorkbook.SaveAs Arquivo, xlCSV
    ActiveWorkbook.Close
End Sub

 

  • Amei 1
Postado
28 minutos atrás, Midori disse:

@Matheus Ittner Giampiccolo  Essa função é para atribuir o nome do arquivo, para salvar pode ser assim,

 


Private Sub CommandButton1_Click()
    Dim Arquivo As String
    
    Arquivo = Application.GetSaveAsFilename( _
        FileFilter:="Delimitado por vírgulas (*.csv), *.csv")
    
    ThisWorkbook.ActiveSheet.Copy
    ActiveWorkbook.SaveAs Arquivo, xlCSV
    ActiveWorkbook.Close
End Sub

 

Agora esta salvando certinho, porém fica esses ,,,, nas celulas abaixo, teriam que ficam em branco

image.png

Postado

Se puder anexar o arquivo vai ficar mais fácil ajudar nisso, mas essas linhas devem ter fórmulas ou caractere vazio, por isso fica assim. Para remover essa vírgulas tem que identificar a última linha com os dados e apagar antes de salvar. Isso pode ser feito via macro com uma função que conte a coluna correta. Supondo que seja a coluna E,

 

Private Sub CommandButton1_Click()
    Dim Arquivo As String
    Dim Linhas  As Long
    
    Arquivo = Application.GetSaveAsFilename( _
        FileFilter:="Delimitado por vírgulas (*.csv), *.csv")
        
    ThisWorkbook.ActiveSheet.Copy
    
    With ActiveWorkbook.ActiveSheet
        Linhas = WorksheetFunction.CountA(.[E:E])
        .Range(.Cells(Linhas + 1, 1), _
            .Cells([A:A].Rows.Count, 1)).EntireRow.Clear
    End With
    ActiveWorkbook.SaveAs Arquivo, xlCSV
    ActiveWorkbook.Close
End Sub

 

  • Amei 1
Postado
37 minutos atrás, Midori disse:

Se puder anexar o arquivo vai ficar mais fácil ajudar nisso, mas essas linhas devem ter fórmulas ou caractere vazio, por isso fica assim. Para remover essa vírgulas tem que identificar a última linha com os dados e apagar antes de salvar. Isso pode ser feito via macro com uma função que conte a coluna correta. Supondo que seja a coluna E,

 



Private Sub CommandButton1_Click()
    Dim Arquivo As String
    Dim Linhas  As Long
    
    Arquivo = Application.GetSaveAsFilename( _
        FileFilter:="Delimitado por vírgulas (*.csv), *.csv")
        
    ThisWorkbook.ActiveSheet.Copy
    
    With ActiveWorkbook.ActiveSheet
        Linhas = WorksheetFunction.CountA(.[E:E])
        .Range(.Cells(Linhas + 1, 1), _
            .Cells([A:A].Rows.Count, 1)).EntireRow.Clear
    End With
    ActiveWorkbook.SaveAs Arquivo, xlCSV
    ActiveWorkbook.Close
End Sub

 

exclui as linhas abaixo para limpar elas, agora funcionou!

Muito obrigado pela ajuda!!!!

tenho como configurar para salvar em uma pasta especifica?

 

C:\Users\User\Desktop\cote fácil 

este seria o caminho

Postado

@Matheus Ittner Giampiccolo Você pode passar o diretório para o parâmetro da função, aí a janela sempre vai abrir nessa pasta,

 

Private Sub CommandButton1_Click()
    Dim Arquivo As Variant
    Dim Linhas  As Long
    
    Arquivo = Application.GetSaveAsFilename( _
        InitialFileName:="C:\Users\User\Desktop\cote fácil\", _
        FileFilter:="Delimitado por vírgulas (*.csv), *.csv")
    
    If Arquivo <> False Then
        ThisWorkbook.ActiveSheet.Copy
    
        With ActiveWorkbook.ActiveSheet
            Linhas = WorksheetFunction.CountA(.[E:E])
            .Range(.Cells(Linhas + 1, 1), _
                .Cells([A:A].Rows.Count, 1)).EntireRow.Clear
        End With
        ActiveWorkbook.SaveAs Arquivo, xlCSV
        ActiveWorkbook.Close
    End If
End Sub

 

Mas se não quiser dar a opção de escolher a pasta, pode atribuir o diretório para uma variável e depois concatenar com outra só com o nome do arquivo.

  • Amei 1
Postado
40 minutos atrás, Midori disse:

@Matheus Ittner Giampiccolo Você pode passar o diretório para o parâmetro da função, aí a janela sempre vai abrir nessa pasta,

 


Private Sub CommandButton1_Click()
    Dim Arquivo As Variant
    Dim Linhas  As Long
    
    Arquivo = Application.GetSaveAsFilename( _
        InitialFileName:="C:\Users\User\Desktop\cote fácil\", _
        FileFilter:="Delimitado por vírgulas (*.csv), *.csv")
    
    If Arquivo <> False Then
        ThisWorkbook.ActiveSheet.Copy
    
        With ActiveWorkbook.ActiveSheet
            Linhas = WorksheetFunction.CountA(.[E:E])
            .Range(.Cells(Linhas + 1, 1), _
                .Cells([A:A].Rows.Count, 1)).EntireRow.Clear
        End With
        ActiveWorkbook.SaveAs Arquivo, xlCSV
        ActiveWorkbook.Close
    End If
End Sub

 

Mas se não quiser dar a opção de escolher a pasta, pode atribuir o diretório para uma variável e depois concatenar com outra só com o nome do arquivo.


Consegui fazer abrir direto na pasta que desejo selecionar.

Porém só agora percebi que o arquivo esta sendo salvo separando por virgula, preciso de separe por ";"

será que é possivel?

image.thumb.png.13b2348fc70e995043025d1626f3b3aa.png

agora, Matheus Ittner Giampiccolo disse:


Consegui fazer abrir direto na pasta que desejo selecionar.

Porém só agora percebi que o arquivo esta sendo salvo separando por virgula, preciso de separe por ";"

será que é possivel?

image.thumb.png.13b2348fc70e995043025d1626f3b3aa.png

image.thumb.png.4e7c5fcd6b67ee4590392fc735fa616d.pngdeimage.thumb.png.f733a1c603bbd76b243dc066a9bb40db.png

Postado
11 minutos atrás, Matheus Ittner Giampiccolo disse:

Porém só agora percebi que o arquivo esta sendo salvo separando por virgula, preciso de separe por ";"

será que é possivel?

 

Veja se resolve atribuindo True ao parâmetro Local. Deixe a linha do SaveAs assim,

 

ActiveWorkbook.SaveAs Filename:=Arquivo, FileFormat:=xlCSV, Local:=True

 

  • Amei 1
Postado
agora, Midori disse:

 

Veja se resolve atribuindo true ao parâmetro Local. Deixe a linha do SaveAs assim,

 


ActiveWorkbook.SaveAs Filename:=Arquivo, FileFormat:=xlCSV, Local:=True

 

image.thumb.png.24f91873747816c273ac1b96e50515f6.pngagora foi, porém abre novamente essa janela de salvar alterações.

 

se clico em salvar voltar ao padrão errado, se não salvo fica correto

 

Postado
9 minutos atrás, Matheus Ittner Giampiccolo disse:

agora foi, porém abre novamente essa janela de salvar alterações.

 

se clico em salvar voltar ao padrão errado, se não salvo fica correto

Deve ter outra planilha ativa rodando a macro anterior.

 

Feche tudo e tente novamente com essa última macro.

  • Amei 1
Postado
8 minutos atrás, Midori disse:

Deve ter outra planilha ativa rodando a macro anterior.

 

Feche tudo e tente novamente com essa última macro.

refiz do zero tudo e continuar abrindo a janela de salvar ou não( mesmo ja tendo sido salvo)

ps. o arquivo ja foi salvo corretamente, ele é aberto automaticamente, quando é fechado solicita salvar

image.thumb.png.e92b961b03a6e8cfafb03deacfb22519.png

Postado

@Matheus Ittner Giampiccolo A macro exibe uma mensagem de confirmação no caso de tentar salvar um arquivo com o mesmo nome de um já existente. A outra mensagem deve ser por alguma atualização na planilha feita antes de fechar, pode ser uma fórmula. Veja se com DisplayAlerts resolve,

 

Private Sub CommandButton1_Click()
    Dim Arquivo As Variant
    Dim Linhas  As Long
    
    Arquivo = Application.GetSaveAsFilename( _
        InitialFileName:="C:\Users\User\Desktop\cote fácil\", _
        FileFilter:="Delimitado por vírgulas (*.csv), *.csv")
    
    If Arquivo <> False Then
        ThisWorkbook.ActiveSheet.Copy
    
        With ActiveWorkbook.ActiveSheet
            Linhas = WorksheetFunction.CountA(.[E:E])
            .Range(.Cells(Linhas + 1, 1), _
                .Cells([A:A].Rows.Count, 1)).EntireRow.Clear
        End With
        ActiveWorkbook.SaveAs Filename:=Arquivo, FileFormat:=xlCSV, Local:=True
        Application.DisplayAlerts = False
        ActiveWorkbook.Close
        Application.DisplayAlerts = True
    End If
End Sub

 

  • Curtir 1
  • Amei 1
Postado
59 minutos atrás, Midori disse:

@Matheus Ittner Giampiccolo A macro exibe uma mensagem de confirmação no caso de tentar salvar um arquivo com o mesmo nome de um já existente. A outra mensagem deve ser por alguma atualização na planilha feita antes de fechar, pode ser uma fórmula. Veja se com DisplayAlerts resolve,

 


Private Sub CommandButton1_Click()
    Dim Arquivo As Variant
    Dim Linhas  As Long
    
    Arquivo = Application.GetSaveAsFilename( _
        InitialFileName:="C:\Users\User\Desktop\cote fácil\", _
        FileFilter:="Delimitado por vírgulas (*.csv), *.csv")
    
    If Arquivo <> False Then
        ThisWorkbook.ActiveSheet.Copy
    
        With ActiveWorkbook.ActiveSheet
            Linhas = WorksheetFunction.CountA(.[E:E])
            .Range(.Cells(Linhas + 1, 1), _
                .Cells([A:A].Rows.Count, 1)).EntireRow.Clear
        End With
        ActiveWorkbook.SaveAs Filename:=Arquivo, FileFormat:=xlCSV, Local:=True
        Application.DisplayAlerts = False
        ActiveWorkbook.Close
        Application.DisplayAlerts = True
    End If
End Sub

 

agora foi!!! troquei de pc, show obrigado

poderia me ajudar com o codigo para preenchimento automatico da coluna E (é uma formula). queria que fosse em um botão também, mas deve terminar quando as outra colunas estiverem vazias.

 

image.thumb.png.15fe41cf8faeeab2b9807faa8e8bd97d.png

image.thumb.png.972a03297652fefa4e257e9515bd0956.png

  • 1 ano depois...
Postado

Boa Tarde Midori

Copiei o código que você criou acima e ele salva tudo certo. Porém quando eu abro no notepad++, aparece uma linha em branco a mais do que a tabela tem. Isso atrapalha meu fluxo para frente com esse arquivo.
 

sabe como me ajudar?

 

Private Sub CommandButton1_Click()
    Dim Arquivo As Variant
    Dim Linhas  As Long
    
    Arquivo = Application.GetSaveAsFilename( _
        InitialFileName:="C:\Users\Public\", _
        FileFilter:="Delimitado por vírgulas (*.csv), *.csv")
    
    If Arquivo <> False Then
        ThisWorkbook.ActiveSheet.Copy
    
        With ActiveWorkbook.ActiveSheet
            Linhas = WorksheetFunction.CountA(.[O:O])
            .Range(.Cells(Linhas + 1, 1), _
                .Cells([A:A].Rows.Count, 1)).EntireRow.Delete
        End With
        ActiveWorkbook.SaveAs Filename:=Arquivo, FileFormat:=xlCSV, Local:=False
        Application.DisplayAlerts = False
        ActiveWorkbook.Close
        Application.DisplayAlerts = True
    End If
End Sub

 

 

No excel não tem nada nas linhas abaixo da tabela preenchida.

 

Postado

@Gabriel Spinola Sempre terá uma linha sem dados na última do arquivo csv. Isso é comum em arquivos texto por causa do Carriage Return (caractere de retorno de carro). No VBA é a constante vbCr (ou vbCrLf) para mover o cursor para a próxima linha como se fosse o enter. Uma forma remover o caractere vbCr da última linha é com outra macro para ler todas as linhas do arquivo csv e ir copiando para outro, aí quando chegar na última linha não coloca o vbCr.

  • Curtir 1
  • 11 meses depois...
Postado

Midori, boa noite! Gostaria de usar a mesma macro que fez para o Matheus, porém a mesma deve salvar diretamente o arquivo em determinada pasta e não deve abrir o "salvar como". Qual alteração deve ser feita? Além disso, gostaria de usar a macro no Módulo1, ou seja, terá que especificar na macro a qual worksheet se refere. Consegue ajudar? Segue abaixo a macro.

 

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!