Notifications
Clear all

Problema ao transferir imagem ao usar macro para copiar plan

3 Posts
2 Usuários
0 Reactions
963 Visualizações
(@dsouza)
Posts: 0
New Member
Topic starter
 

Olá, estou aprendendo a usar VBA faz pouco tempo.
Tenho usado uma macro para consolidar diversas planilhas de diversos arquivos de um diretório em uma única pasta de trabalho. A macro funciona bem, mas para as planilhas que contém imagem, a imagem não aparece na planilha copiada para a pasta de trabalho única, o que aparece é a caixa da imagem com a seguinte mensagem de erro: "A parte de imagem com identificação de relação rId2 não foi encontrada no arquivo".
Se eu crio uma cópia da planilha original movendo para a minha pasta de trabalho única a imagem aparece normalmente, não sei por que usando a macro não funciona. Estou usando MS 2010.

Segue a macro que estou usando:

Sub MergePlans()
Dim CurFile As String, DirLoc As String
Dim DestWB As Workbook
Dim ws As Object

DirLoc = ThisWorkbook.Path & "Merge" 
CurFile = Dir(DirLoc & "*.xlsx")

Application.ScreenUpdating = False
Application.EnableEvents = False

Set DestWB = Workbooks.Add(xlWorksheet)

Do While CurFile <> vbNullString
    Dim OrigWB As Workbook
    Set OrigWB = Workbooks.Open(Filename:=DirLoc & CurFile, ReadOnly:=True)

    For Each ws In OrigWB.Sheets
        ws.Select
        ws.Copy After:=DestWB.Sheets(DestWB.Sheets.Count)
    Next

    OrigWB.Close Savechanges:=False
    CurFile = Dir
Loop

Application.DisplayAlerts = False
DestWB.Sheets(1).Delete
Application.DisplayAlerts = True

Application.ScreenUpdating = True
Application.EnableEvents = True

Set DestWB = Nothing

End Sub

Alguém sabe o que está errado e como poderia resolver isso?

Obrigada!

 
Postado : 05/05/2016 6:39 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia DSouza

Seja bem-vinda ao fórum!

Movi teu tópico para VBA & Macros que é o assunto da tua dúvida, pois onde você havia postado é proibido postar dúvida, é exclusivo para a apresentação dos novos usuários do fórum;

Com você é novata no fórum, para facilitar a tua participação, sugiro tomar conhecimento do conteúdo dos links abaixo:
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s

Patropi - Moderador

 
Postado : 05/05/2016 8:06 am
(@dsouza)
Posts: 0
New Member
Topic starter
 

Olá, achei um modo de contornar o problema, não é a melhor solução, mas funcionou:

Habilitei a atualização da tela antes de fechar a pasta de trabalho de origem das planilhas copiadas. A macro ficou mais lenta, mas pelo menos as imagens aparecem corretamente.

Segue código corrigido:

Sub MergePlans()
Dim CurFile As String, DirLoc As String
Dim DestWB As Workbook
Dim ws As Object

DirLoc = ThisWorkbook.Path & "Merge
CurFile = Dir(DirLoc & "*.xlsx")

Application.ScreenUpdating = False
Application.EnableEvents = False

Set DestWB = Workbooks.Add(xlWorksheet)

Do While CurFile <> vbNullString
    Dim OrigWB As Workbook
    Set OrigWB = Workbooks.Open(Filename:=DirLoc & CurFile, ReadOnly:=True)
        
    For Each ws In OrigWB.Sheets
        ws.Select
        ws.Copy After:=DestWB.Sheets(DestWB.Sheets.Count)
    Next
    Application.ScreenUpdating = True
    OrigWB.Close Savechanges:=False
    CurFile = Dir
Loop

Application.DisplayAlerts = False
DestWB.Sheets(1).Delete
Application.DisplayAlerts = True

Application.ScreenUpdating = True
Application.EnableEvents = True

Set DestWB = Nothing


End Sub

Obrigada!

 
Postado : 05/05/2016 10:29 am