Ir ao conteúdo
  • Cadastre-se

Excel VBA salvar planilha nome variavel


Posts recomendados

Bom dia Pessoal
Tenho uma solicitação próximo deste assunto.

Preciso Salvar uma copia da planilha atual .

mas preciso que seja verificado se ja existe um arquivo com o mesmo nome .
Ex. "Relatorio-01-08-2022- 01"
Se já existe quero que seja salvo para "Relatorio-01-08-2022- 02"

Após salvar a copia preciso que seja enviado via e-mail em anexo.

Poderia me ajudar, acredito que tenha que adicionar uma estrutura de repeticao.

Tenho o seguinte condigo.

 

 

Sub SavaCopia_envia_Email()


    Dim sPara      As String
    Dim sMsg       As String
    Dim sAssunt    As String
    Dim NomeCopia As String
    Dim DirCopia    As String
    Dim Contador   As Integer
    Dim Caminho     As String
    
    

        NomeCopia = "Relatório_" & VBA.Format(VBA.Now, "dd-mm-yyyy") & "." & Contador & ".xlsx"
        Caminho = "C:\Users\Nunes\Desktop\PROJETO\Teste\BKPDOCUMENTO\"
        DirCopia = "C:\Users\Nunes\Desktop\PROJETO\Teste\BKPDOCUMENTO\" + NomeCopia
        Contador = 1
    
        
        If NomeCopia = Caminho Then
        Contador = Contador + 1
        
        Else
        
        ActiveWorkbook.SaveAs Filename:= _
        Caminho + NomeCopia, _
        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
        
        
        End If
        
    
        'Enviar e-mail
    
        NomeCopia = "Relatório_" & VBA.Format(VBA.Now, "dd-mm-yyyy") & "." & Contador & ".xlsx"
        sAssunt = "Assunto de Envio de Relatório em Anexo"
        sMsg = "Mensagem teste de envio de e-mail com anexo"
  
        Dim OutlookApp   As Object
        Dim OutlookMail  As Object
        Set OutlookApp = CreateObject("Outlook.Application")
        Set OutlookMail = OutlookApp.CreateItem(0)
    
         With OutlookMail
        .to = ""
        .CC = ""
        .BCC = ""
        .Subject = sAssunt
        .Body = sMsg
        .Attachments.Add DirCopia
        .Display ' para envia o email diretamente defina o código  .Send
        
        End With
        Set OutlookMail = Nothing
        Set OutlookApp = Nothing
        
        
    
End Sub

 

Link para o comentário
Compartilhar em outros sites

Boas @Quedison Nunes Alves ,

Experimente assim:
 

Sub SavaCopia_envia_Email()

    Dim contador As Integer
    Dim caminho As String: caminho = "C:\Users\Nunes\Desktop\PROJETO\Teste\BKPDOCUMENTO\"
    Dim nomeCopia As String: nomeCopia = "Relatório_" & VBA.Format(VBA.Now, "dd-mm-yyyy") & "." & contador & ".xlsx"
    Dim dirCopia As String: dirCopia = caminho & nomeCopia
    Dim verifica_existe As String

    verifica_existe = Dir(dirCopia)

    Do While verifica_existe <> ""
        contador = contador + 1
        nomeCopia = "Relatório_" & VBA.Format(VBA.Now, "dd-mm-yyyy") & "." & contador & ".xlsx"
        dirCopia = caminho & nomeCopia
        verifica_existe = Dir(dirCopia)
    Loop

    ThisWorkbook.SaveAs Filename:= _
                        caminho + nomeCopia, _
                        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
                        ReadOnlyRecommended:=False, CreateBackup:=False

    Dim sPara      As String
    Dim sMsg       As String
    Dim sAssunt    As String

    'Enviar e-mail
    nomeCopia = "Relatório_" & VBA.Format(VBA.Now, "dd-mm-yyyy") & "." & contador & ".xlsx"
    sAssunt = "Assunto de Envio de Relatório em Anexo"
    sMsg = "Mensagem teste de envio de e-mail com anexo"

    Dim OutlookApp   As Object
    Dim OutlookMail  As Object
    Set OutlookApp = CreateObject("Outlook.Application")
    Set OutlookMail = OutlookApp.CreateItem(0)

    With OutlookMail
        .to = ""
        .CC = ""
        .BCC = ""
        .Subject = sAssunt
        .Body = sMsg
        .Attachments.Add dirCopia
        .Display                                 ' para envia o email diretamente defina o código  .Send
    End With

    Set OutlookMail = Nothing
    Set OutlookApp = Nothing

End Sub

 

  • Curtir 1
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!