2016-08-23 13 views
-1

電子メールの本文をコピーして新しいExcelブックに貼り付けようとしています。以下のコードは、 "Set Wb"行に "Object Required"エラーを生成しています。私はOutlook VBAを初めて使用しています。このエラーに関する情報をどこからでも探し出そうとしています。このコードの大部分はどこか他の場所からコピーされましたが、それはしばらくありました。どんな助けも大歓迎です。オブジェクトが必要ですOutlook VBAコピーを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キーワードを使用してオブジェクト参照を割り当てると、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" 
関連する問題