Вставка нескольких связанных диаграмм Excel в Word, возвращающих ошибку во время выполнения 5345 Word не может получить данные - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь скопировать несколько диаграмм Excel и вставить их в документ Word , на отдельных страницах, в качестве типа данных , связанный с OLEObject , но яполучение ошибки времени выполнения.

Ошибка времени выполнения '5343':

Word не может получить данные для ссылки {00020832-0000-0000-C000-000000000046.

enter image description here

Это код, который я использовал в прошлом, но буквально единственное, что я изменил в этом коде, это , чтобыдобавьте внешний цикл, который обрабатывает рабочие листы в активной рабочей книге. После добавления этого внешнего цикла он больше не работает, что немного странно для меня, потому что я действительно не вижу, что отличается.

Он работает для первого листа (активного в данный момент), но не работает, когда цикл переходит на следующий лист.Неважно, вставлен ли график со ссылкой или без нее.

Вот полный код для вашей справки:

Sub ExportingToWord_MultipleCharts()

'Declare Word Variables
Dim WrdApp As Word.Application
Dim WrdDoc As Word.Document
Dim SecCnt As Integer

'Declare Excel Variables
Dim ChrtObj As ChartObject
Dim Rng As Range

'Create a new instance of Word
Set WrdApp = New Word.Application
    WrdApp.Visible = True
    WrdApp.Activate

'Create a new word document
Set WrdDoc = WrdApp.Documents.Add

'Loop through each worksheet in the active workbook.
For Each WrkSht In ActiveWorkbook.Worksheets

    'Loop through the charts on the active sheet
    For Each ChrtObj In WrkSht.ChartObjects

        'Copy the chart
        ChrtObj.Chart.ChartArea.Copy

        'Paste the Chart in the Word Document
        With WrdApp.Selection
            .PasteSpecial Link:=True, DataType:=wdPasteOLEObject, Placement:=wdInLine
        End With

        'Add a new page to the document.
        WrdApp.ActiveDocument.Sections.Add

        'Go to the newly created page.
        WrdApp.Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext

    Next ChrtObj

Next WrkSht

End Sub

Возвращает ошибку в следующей строке :

'Paste the Chart in the Word Document
With WrdApp.Selection
     .PasteSpecial Link:=True, DataType:=wdPasteOLEObject, Placement:=wdInLine
End With

1 Ответ

0 голосов
/ 13 декабря 2018

Я нашел обходной путь, но это все еще не объясняет, почему происходит ошибка. Мне нужно было активировать фактическую рабочую таблицу в цикле .

'***ACTIVATE THE WORKSHEET IN ORDER TO REMOVE THE ERROR***
 WrkSht.Activate

По какой-то причине это, похоже, убирало ошибку из всплывающего окна.Тем не менее, я нахожу это странным, потому что когда я экспортировал диаграммы из PowerPoint, мне не нужно активировать лист, чтобы скопировать его. Вот код с настройками, я вызвал разделЯ добавил.

Sub ExportingToWord_MultipleCharts()

    'Declare Word Variables
    Dim WrdApp As Word.Application
    Dim WrdDoc As Word.Document
    Dim SecCnt As Integer

    'Declare Excel Variables
    Dim ChrtObj As ChartObject
    Dim Rng As Range

    'Create a new instance of Word
    Set WrdApp = New Word.Application
        WrdApp.Visible = True
        WrdApp.Activate

    'Create a new word document
    Set WrdDoc = WrdApp.Documents.Add

    'Loop through each worksheet in the active workbook.
    For Each WrkSht In ActiveWorkbook.Worksheets

        '***ACTIVATE THE WORKSHEET IN ORDER TO REMOVE THE ERROR***
         WrkSht.Activate

        'Loop through the charts on the active sheet
        For Each ChrtObj In WrkSht.ChartObjects

            'Copy the chart
            ChrtObj.Chart.ChartArea.Copy

            'Paste the Chart in the Word Document
            With WrdApp.Selection
                .PasteSpecial Link:=False, DataType:=wdPasteOLEObject, Placement:=wdInLine
            End With

            'Add a new page to the document.
            WrdApp.ActiveDocument.Sections.Add

            'Go to the newly created page.
            WrdApp.Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext

        Next ChrtObj

    Next WrkSht

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...