Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
PlayerMamuska

Excel Macro para "salvar como" SEM macro

Recommended Posts

Olás.

Tenho uma planilha matriz que se abre em somente leitura, recebe dados e deve ser salva como um novo arquivo.

 

Tenho uma macro nela que faz assim:

 

Dim Nome As String
Nome = Worksheets(1).Range("d1")          'D1 tem uma fórmula derivada de HOJE()

ActiveWorkbook.SaveAs Filename:="Controle Painel " & Nome & ".xlsx", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
 

 

Primeiro problema: preciso que o arquivo seja salvo na mesma pasta de onde está a matriz, sem especificar o caminho, pois são três máquinas diferentes com o mesmo arquivo base.

 

Segundo problema: o arquivo matriz é "xlsm". Mesmo forçando o salvamento para "xlsx", quando abre, as macros funcionam. Preciso que esses arquivos gerados não tenham nenhuma macro.

 

 

Alguém, prissss?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Primeiro problema resolvido.

    Ficou assim:


                       

    Dim Nome As String
                        Nome = Worksheets(1).Range("d1")          'D1 tem uma fórmula derivada de HOJE()
                        
                        Dim Endereço As String
                        Endereço = Replace(ThisWorkbook.FullName, "ThisWorkbook.Name", "")
    
                           
    
                             'FullName é o nome completo do arquivo
    
                             'Name é somente o nome do arquivo
    
                              'Replace......  joga na variável somente o caminho, tirando o nome do arquivo 
    
    
    
                        ActiveWorkbook.SaveAs Filename:=Endereço & "Controle Painel " & Nome & ".xlsx", _
                        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
                        ReadOnlyRecommended:=False, CreateBackup:=False


     

     

     

    Agora é a segunda parte que me mata................... :tw_bawling:

    Editado por PlayerMamuska
    A pessoa aprendeu a usar o <> ...

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Tente assim:


     

    Sub Salvar()
        
    Dim W As Worksheet
    Dim Arq As String
    
        
    Set W = Sheets("Plan1")
        
        
        
        'Este é o Nome do Novo Arquivo XLSX
        
    Arq = "Nome do arquivo"
        
        'Salva o arquivo na Pasta EscolhidaClientes
        
        ChDir "C:\Clientes" 'Atere o nome e o caminho da pasta
        
        ActiveWorkbook.SaveAs Filename:="C:\Clientes\" & Arq & ".xlsx"
        ActiveWorkbook.Close
        
        MsgBox "Dados do Cliente Salvo com Sucesso", vbOKOnly, "Atenção"
            
    End Sub

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • @CasaDoHardware Olá!

     

    Então, a parte do caminho eu consegui resolver. Falta a questão de desabilitar as macros. Dei um balão no excel colocando uma verificação. Quando ele gera o segundo arquivo, coloca uma informação numa determinada célula. Daí TOOOODAS as macros, antes de rodar verifica isso. Se ela existir, dá uma mensagem "Comando exclusivo para o arquivo matriz" .

    Resolveu, mas isso chega a ser indigno, né?

    kkkk fala sério....

     

     

    Desculpa a ignorância, mas como é que faz pro código ficar desse jeito no post?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    O codigo ja salva sem as macros.

    Ou seja o arqquivo gerado nao tera nenhuma macro.

     

     

    Para postar o codigo igual ao que fiz basta usar a função code repreentada na barra de ferramentas por <>

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @PlayerMamuska

    Nesta página acima da descrição do tópico, temos 2 comunicados, sendo que o segundo, contém uma explicação sobre a obrigatoriedade de usar a ferramenta ao postar codigos

     

    []s

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Segue exemplo adaptado que salva no formato *.xlsx,(s/ as macros), e na mesma pasta onde está o arquivo.

        Dim FileExtStr     As String
        Dim FileFormatNum  As Long
        Dim Sourcewb       As Workbook
        Dim Destwb         As Workbook
        Dim TempFilePath   As String
        Dim TempFileName   As String
        Dim Nome           As String
        
        On error goto Erro:
        Nome = ThisWorkbook.Worksheets(1).Range("d1")
       
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
        End With
    
        Set Sourcewb = ActiveWorkbook     
       
        ActiveSheet.Copy
        Set Destwb = ActiveWorkbook
       
        With Destwb
            If Val(Application.Version) < 12 Then ' se Excel 2003
               
                FileExtStr = ".xls": FileFormatNum = -4143
            Else
                    Select Case Sourcewb.FileFormat
                    Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
                    Case 52:
                        If .HasVBProject Then
                            FileExtStr = ".xlsm": FileFormatNum = 52
                        Else
                            FileExtStr = ".xlsx": FileFormatNum = 51
                        End If
                    Case 56: FileExtStr = ".xls": FileFormatNum = 56
                    Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
                    End Select
                End If
        End With
       
            With Destwb.Sheets(1).UsedRange
                .Cells.Copy
                .Cells.PasteSpecial xlPasteValues
                .Cells(1).Select
            End With
            Application.CutCopyMode = False
       
        TempFilePath = ThisWorkbook.Path & "\"
        TempFileName = "Controle Painel " & Nome
    
        With Destwb
            .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
            .Close SaveChanges:=False
        End With
    
        MsgBox "Você pode encontrar o novo arquivo em " & TempFilePath
    Erro:
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
        End With

    fonte: https://www.rondebruin.nl/win/s5/win001.htm

    Editado por Basole

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×