Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal,

 

Em meu formulário VBA, quero habilitar um botão chamado "Salvar Documento" que faça o seguinte:

 

- Salve como

- Diretório pré-estabelecido (na própria programação)

- E que o nome do arquivo a ser salvo, já esteja pré-definido, sendo ele, uma variável que depende do valor de determinada célula

 

ActiveWorkbook.SaveAs Filename:="D:\Documentos\Excel\[A1].xlsm", FileFormat _
:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
 
Onde [A1] seria o valor da célula A1
 
Segue em anexo o exemplo que fiz para este caso.
 
Penso que seria necessário usar a concatenação, mas não consegui.
 
Agradeço qualquer ajuda que me for passada
 
Att, 
 
Yago Cypriano

Teste.rar

Postado

experimente:

 

substitua [A1]

 

por  " & [A1] & "

Postado

Hum.. Perfeito Osvaldo.

 

Em todo tipo de concatenação é assim que devo usar?


PS: Aproveitando o embalo, teria como fazer uma verificação simples antes de executar uma macro? Como por exemplo:

 

If Sheets("Plan1") Existir Then

....

End If

  • Solução
Postado

Em todo tipo de concatenação é assim que devo usar?

a sintaxe normal é:

"texto entre aspas" & VariávelSemAspas & "mais texto entre aspas"

 

PS: Aproveitando o embalo, teria como fazer uma verificação simples antes de executar uma macro? Como por exemplo:

 

If Sheets("Plan1") Existir Then

....

End If

Veja exemplo abaixo.

Sub VerificaPlan() Dim ws As Worksheet, nomePlan As String  nomePlan = "Plan1" 'ou nomePlan = [A1] se quiser colocar o nome em uma célula  For Each ws In ThisWorkbook.Worksheets   If ws.Name Like nomePlan Then    MsgBox "existe uma planilha com nome " & nomePlan    Exit Sub   End If  Next ws  MsgBox "não existe planilha com nome " & nomePlanEnd Sub

 

Postado

Fala, Yago.

Que bom que resolveu.

Grato pelo retorno.

  • 3 anos depois...
Postado

Prezados, boa tarde!

 

To com um prolema a dias, 

montei esse código com o intuito de que salve a pasta na data certa, no mes certo e com o nome certo,mas ao tentar salvar ela dá que o documento não foi salvo. Segue o codigo abaixo, conseguem me ajudar?

 

 

Sub testing()

Dim path As String
Dim nome As String
Dim mes As String
Dim dia As String
Dim ano As String


mes = MonthName(Month(Now))
dia = Date - 1
nome = "RESUMO DIARIO" & dia
ano = Year(Now)
path = "C:\Users\galemos\Desktop\ano\mes\"

Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=path & nome & ".xlsx", FileFormat:=xlOpenXMLWorkbook
    Application.DisplayAlerts = True
    
Active.Workbook.Close

End Sub

 

image.png.65d36bcec64c6c7c4132384bd05c544f.png

Postado

Testaí...

 

Sub SalvaArquivo()

 Dim path As String
 Dim nome As String
 Dim mes As String
 Dim data As String
 Dim ano As String
 
  mes = Format(Date, "mmmm")
  data = Format(Date - 1, "dd_mm_yyyy")
  nome = "RESUMO DIARIO" & data
  ano = Format(Date, "yyyy")
  path = "C:\Users\galemos\Desktop\" & ano & "\" & mes & "\"
 
  Application.DisplayAlerts = False
      ActiveWorkbook.SaveAs Filename:=path & nome & ".xlsx", FileFormat:=xlOpenXMLWorkbook
      Application.DisplayAlerts = True
 
  ThisWorkbook.Close

End Sub

 

Postado

Disponibilize o arquivo.

 

Em qual linha do código ocorre o erro ?

Postado

 

 @osvaldomp Não é uma planilha especifica, eu abro um arquivo novo, copio e coloco o código, para ver se vai salvar.

ele renomeia a planilha, mas nao salva.

 

o nome das pastas são:

"2019" e "abril".

 

 

Postado

Eu pedi para você disponibilizar o arquivo pois às vezes ao copiar o código aqui do fórum e colar no módulo, esse "transporte" altera o código; lembrando que o código salva o seu arquivo como .xlsx, ou seja, sem macros (post #7). Mas ... tente fazer as verificações conforme comentado abaixo.

 

O caminho para salvar o arquivo é este ~~~> C:\Users\galemos\Desktop\2019\abril\

Então, olhando o caminho da direita para a esquerda, o arquivo será salvo na pasta existente de nome "abril" (pois é o mês corrente), que deve ser uma sub pasta  da pasta de nome "2019" (pois é o ano corrente), ... , e assim até a unidade C.

 

Então verifique se esse caminho existe na unidade C (ou seja, verifique se todas as pastas que fazem parte do caminho existem e se estão na sequência informada no caminho, isto é, cada uma sendo sub pasta da pasta à esquerda).

 

O código acrescenta ao caminho acima o nome do arquivo (e não da planilha, como você comentou), então se for salvo hoje (26/abr/19) o nome será RESUMO DIARIO25_04_2019, e o caminho completo será C:\Users\galemos\Desktop\2019\abril\RESUMO DIARIO25_04_2019

  • 3 anos depois...
Postado

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

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...