2016-08-23 7 views
-1

Я пытаюсь скопировать тело письма и вставить его в новую книгу Excel. Следующий код генерирует ошибку «Object Required» в строке «Set Wb». Я новичок в Outlook VBA, и мне сложно найти информацию об этой ошибке где угодно. Большинство этого кода я скопировал из другого места, но это было какое-то время, и я забыл, где. Буду признателен за любую оказанную помощь.Требуемый объект Outlook VBA Copy Paste to Excel

Sub PasteToExcel() 
Dim activeMailMessage As MailItem 
Dim xlApp As Excel.Application 
Dim Wb As Excel.Workbook 
Dim Ws As Excel.Worksheet 


If TypeName(ActiveExplorer.Selection.Item(1)) = "MailItem" Then 

    'Get a handle on the email 
    Set activeMailMessage = ActiveExplorer.Selection.Item(1) 

    'Copy the formatted text: 
    activeMailMessage.GetInspector().WordEditor.Range.FormattedText.Copy 

    'Ensure Excel Application is open 
    Set xlApp = CreateObject("Excel.Application") 

    'Make Excel Application visible 
    xlApp.Visible = True 

    'Name the Excel File 
    Set Wb = xlObject.Object.Workbooks("Test.xlsx") 

    'Paste the email 
    Set Ws = xlObject.Object.Sheets(1) 
    Ws.Range("A1").Paste 

    End If 
End Sub 
+0

Что такое 'xlObject'? Вы имеете в виду 'xlApp.Workbooks()'? –

+0

Я сделал это изменение, и он дал мне ошибку индекса. – battery514

+0

Куда он дает вам эту ошибку? –

ответ

3

xlObject не объявляется или не назначается нигде. Укажите Option Explicit в верхней части модуля - VBE, скорее всего, будет жаловаться на необъявленный идентификатор.

Потому что xlObject не объявлен, он неявно Variant, и поскольку он никогда не назначается, его тип фактически равен Variant/Empty. И поскольку Empty не является типом объекта, использование ключевого слова Set для назначения ссылки на объект приводит к ошибке «Object required», потому что Set может использоваться только для назначения ссылки на объект.

Этот код воспроизводит вопрос - попробуйте в непосредственной панели:

Set foo = xyz.abc 

Другими словами, xlObject не существует, VBA doens't знают, что делать с ним. Как вам сказали в комментариях, вам нужно использовать правильно объявленную и назначенную ссылку xlApp.

Set Wb = xlApp.Workbooks("Test.xlsx") 

Это дает мне аут ошибки диапазона

Конечно, это делает. В этом экземпляре Excel нет книги с именем Test.xlsx.

Решение открыть его:

Set Wb = xlApp.Workbooks.Open("Test.xlsx") 

Теперь, вы должны ожидать другую ошибку, если этот файл не существует: ручка это.

Test.xlsx не существует. Мне нужен макрос, чтобы создать новую книгу и назовите ее.

Метод Add создаст совершенно новую книгу:

Set Wb = xlApp.Workbooks.Add 

Вы можете назвать книгу, когда вы сохраните его, прежде чем закрыть его:

wb.SaveAs "test.xlsx" 
wb.Close False 

Метод Close имеет параметры для сохранения изменений, поэтому вы также можете сделать это в одной строке:

wb.Close True, "test.xlsx" 
Смежные вопросы