Ir ao conteúdo

Excel Abrir varios arquivos .xlsm e inserir uma imagem


Ir à solução Resolvido por AfonsoMira,

Posts recomendados

Postado

Boa tarde senhores, senhoras e reptlianos.

 

Imagina esse cenário: preciso inserir uma imagem especifica, em uma worksheet especifica em todas as planilhas que estão em uma pasta no windows(é a mesma imagem para todas e todas essas planilhas possuem essa mesma worksheet).

 

alguem poderia me ajudar com uma macro pra isso? 

Postado

@thiago.alves22 Certo. E essa pasta qual o nome dela e onde ela se encontra?
Faz o seguinte:

  1. Clique com o botão direito sobre a pasta
  2. Vá em Propriedades
  3. Depois na aba Segurança
  4. Onde está "Nome do Objeto" copie o que está em frente e mande para aqui

Ps. Esse é o caminho da pasta.

Postado

@AfonsoMira C:\Users\thiago.vasconcelos\OneDrive - Axess AS\Desktop\Axess\Axess\Modelo

 

No meu caso a pasta é essa. Teria algum comando para abrir os arquivos um a um da pasta em que o arquivo excel esta independente do endereço?

  • Solução
Postado

@thiago.alves22 Então fiz aqui dois códigos:

 

Um com o caminho da pasta e da imagem já dentro do código:

Sub loopFoto()

    Dim MinhaPasta As String, MeuFicheiro As String, MinhaImagem As String
    
    MinhaPasta = "C:\Users\thiago.vasconcelos\OneDrive - Axess AS\Desktop\Axess\Axess\Modelo"
    MinhaImagem = "C:\Users\thiago.vasconcelos\OneDrive - Axess AS\Desktop\Axess\Axess\Assinatura Lincon\Assinaturas\Assinatura Lincon Daquilla.jpeg"
    
    Application.ScreenUpdating = False
    Application.DisplayStatusBar = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
    
    MeuFicheiro = Dir(MinhaPasta & "\", vbReadOnly)
    
    Do While MeuFicheiro <> ""
        DoEvents
        On Error GoTo 0
        Workbooks.Open Filename:=MinhaPasta & "\" & MeuFicheiro, UpdateLinks:=False
        'Aqui vai o nome da WorkSheet
        Sheets("SegundaPagina2Fotos").Select
        
        With ActiveSheet.Pictures.Insert(MinhaImagem)
            With .ShapeRange
                .LockAspectRatio = msoTrue
                .Width = 75 'Alterar tamanho
                .Height = 100 'Alterar tamanho
            End With
            .Left = ActiveSheet.Range("Q59").Left
            .Top = ActiveSheet.Range("Q59").Top
            .Placement = 1
            .PrintObject = True
        End With
        
0
        Workbooks(MeuFicheiro).Close SaveChanges:=True
        MeuFicheiro = Dir
    Loop
    
    Application.ScreenUpdating = True
    Application.DisplayStatusBar = True
    Application.EnableEvents = True
    Application.Calculation = xlCalculationManual

End Sub

 

Outro com a possibilidade de escolher a pasta e a imagem:

Sub loopFoto()

    Dim MinhaPasta As String, MeuFicheiro As String, MinhaImagem As String
    
    MsgBox "Selecione a pasta!", vbOKOnly
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        .AllowMultiSelect = False
        .Show
        MinhaPasta = .SelectedItems(1)
        Err.Clear
    End With
    
    MsgBox "Selecione a imagem!", vbOKOnly
    
    With Application.FileDialog(msoFileDialogFilePicker)
        .Filters.Clear
        .Filters.Add "JPG", "*.JPG"
        .Filters.Add "JPEG File Interchange Format", "*.JPEG"
        .Filters.Add "Graphics Interchange Format", "*.GIF"
        .Filters.Add "Portable Network Graphics", "*.PNG"
        .Filters.Add "Tag Image File Format", "*.TIFF"
        .Filters.Add "All Pictures", "*.*"
        .AllowMultiSelect = False
        .Show
        MinhaImagem = .SelectedItems(1)
        Err.Clear
    End With
    
    Application.ScreenUpdating = False
    Application.DisplayStatusBar = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
    
    MeuFicheiro = Dir(MinhaPasta & "\", vbReadOnly)
    
    Do While MeuFicheiro <> ""
        DoEvents
        On Error GoTo 0
        Workbooks.Open Filename:=MinhaPasta & "\" & MeuFicheiro, UpdateLinks:=False
        Sheets("SegundaPagina2Fotos").Select
        
        With ActiveSheet.Pictures.Insert(MinhaImagem)
            With .ShapeRange
                .LockAspectRatio = msoTrue
                .Width = 75
                .Height = 100
            End With
            .Left = ActiveSheet.Range("Q59").Left
            .Top = ActiveSheet.Range("Q59").Top
            .Placement = 1
            .PrintObject = True
        End With
        
0
        Workbooks(MeuFicheiro).Close SaveChanges:=True
        MeuFicheiro = Dir
    Loop
    
    Application.ScreenUpdating = True
    Application.DisplayStatusBar = True
    Application.EnableEvents = True
    Application.Calculation = xlCalculationManual

End Sub

 

Espero que lhe ajude! :)

Ps. Certifique-se que dentro da pasta apenas existem ficheiros Excel caso contrário vai causar erro.

Postado

@thiago.alves22 Sim precisa.

Troque a linha de código:  

Sheets("SegundaPagina2Fotos").Select

 Por:

Sheets("SegundaPagina2Fotos").visible = true
Sheets("SegundaPagina2Fotos").Select

 

O que vai fazer é caso a worksheet(SegundaPagina2Fotos) não esteja visível ele vai tornar visível.

Postado

@thiago.alves22 Ok eu atualizei esse código, pode ser que não tenha reparado.

Troque esse IF

If Sheets("SegundaPagina2Fotos").visible = false Then
  Sheets("SegundaPagina2Fotos").visible = true
  Sheets("SegundaPagina2Fotos").Select
  Sheets("SegundaPagina2Fotos").visible = false
Else
	Sheets("SegundaPagina2Fotos").Select
End if

por:

Sheets("SegundaPagina2Fotos").visible = true
Sheets("SegundaPagina2Fotos").Select

 

 

E veja se resolve.

 

Experimente também utilizar o segundo código.

Postado

@AfonsoMira eu coloquei essa linha que você propos por ultimo no lugar do if e ao fim da inserção de imagem eu coloquei pra ocultar de novo, funcionou como esperado. 

apesar do primeiro codigo nao funcionar, o segundo atende muito mais a situação porque a assinatura que pretendo inserir varia, valeu mesmo! a principio acho que foi resolvido, qualquer coisa eu marco voce de novo! tyty

  • Curtir 1

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!