Compartilhar via

E-mail automaticamente x RefreshALL.

Anônima
2009-07-20T11:43:18+00:00

Boa dia!

Tenho uma planilha que envia e-mail's automaticamente, para uma lista de destinatários, atraves de uma macro, conforme abaixo.

Só que há uma mesnagem de erro apos a instrução "ActiveWorkbook.RefreshAll", dizendo que "Esta ação cancelará um comando 'Atualizar Dados' pendente. Continuar?" .

Alguem teria uma solução para este caso?

Abraços

Anderson

Sub Envia_Email()

    Dim Data

    Dim MyTitulo

    Dim Arquivo

    Dim Email

    Dim Titulo

    Dim C

    For Each C In Worksheets("Resumo").Range("b9:b200").Cells

        If C.Value <> "" Then

            Arquivo = C.Value

            Data = Worksheets("resumo").Range("b6").Value

            Titulo = C.Offset(rowOffset:=0, columnOffset:=3)

            MyTitulo = Titulo & Data

            Email = C.Offset(rowOffset:=0, columnOffset:=2)

            Workbooks.Open Filename:=Arquivo

            ActiveWorkbook.RefreshAll

            ActiveWorkbook.Save

            ActiveWorkbook.SendMail Recipients:=Email, Subject:=MyTitulo

            ActiveWorkbook.Close

        End If

    Next C

End Sub

Microsoft 365 e Office 365 | Instalar, resgatar, ativar | Para uso doméstico | Outro

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

Resposta aceita pelo autor da pergunta

Anônima
2009-07-24T14:53:31+00:00

Bom dia!

Eu tenho links externos.

Mas agora esta funcionado, fiz a seguinte alteração:

Troquei a instrução "RefreshAll" por "QueryTable.Refresh", "PivotTable.RefreshTable" e "PivotCache.RefreshTable".

Segue abaixo o código refeito.

Obrigado,

Anderson

Sub Envia_Email()

    Application.ScreenUpdating = False

    Dim Data, MyTitulo, Diretorio, Nome, Arquivo, Email, Titulo, C

    For Each C In Worksheets("Resumo").Range("b9:b200").Cells

        If C.Value <> "" Then

            Diretorio = C.Value

            Nome = C.Offset(rowOffset:=0, columnOffset:=1)

            Arquivo = Diretorio & Nome

            Data = Worksheets("resumo").Range("b6").Value

            Titulo = C.Offset(rowOffset:=0, columnOffset:=4)

            MyTitulo = Titulo & Data

            Email = C.Offset(rowOffset:=0, columnOffset:=3)

            Workbooks.Open Filename:=Arquivo

            For Each Worksheet In ActiveWorkbook.Worksheets

               For Each QueryTable In Worksheet.QueryTables

                         QueryTable.Refresh

               Next QueryTable

            Next Worksheet

            For Each Worksheet In ActiveWorkbook.Worksheets

               For Each PivotTable In Worksheet.PivotTables

                    PivotTable.RefreshTable

               Next PivotTable

            Next Worksheet

            For Each Worksheet In ActiveWorkbook.Worksheets

               For Each PivotCache In ActiveSheet.PivotTables

                    PivotCache.RefreshTable

               Next PivotCache

            Next Worksheet

            Workbooks(Nome).Activate

            ActiveWorkbook.Save

            ActiveWorkbook.SendMail Recipients:=Email, Subject:=MyTitulo

            ActiveWorkbook.Close

        End If

    Next C

    Application.ScreenUpdating = True

End Sub

Esta resposta foi útil?

1 pessoa achou esta resposta útil.
0 comentários Sem comentários

1 resposta adicional

Classificar por: Mais útil
  1. Anônima
    2009-07-22T23:22:55+00:00

    Retire esta linha. Este comando é para atualização de links externos que não parece ser o seu caso.

    Esta resposta foi útil?

    0 comentários Sem comentários