1

Webから直接コピーしたマクロをOutlook2010VBAに認識させるのに問題があります。マクロは、電子メールメッセージから添付ファイルのコピーを抽出し、それをローカルフォルダに保存することになっています。数日前は機能していましたが、VBAで(Outlook.MailItemとして)コードを実行しようとすると、Outlookはそれをマクロとして認識しません。それを取り出して括弧だけを残すと、マクロとして表示されますが、424オブジェクトが必要なエラーが発生し、マクロを実行できません。私がそうするならそれは酷い、そうでないならそれは酷い。

元のコードは次のとおりです。

Public Sub saveAttachtoDisk(itm as Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder as String

saveFolder = "c:\temp\"
    For Each objAtt In itm.Attachments

        objAtt.SaveAsFile savefolder & "\" & objAtt.DisplayName

        Set objAtt = Nothing

    Next

End Sub

私はすべてを試しましたが、何も機能していないようです。何か案は?

4

2 に答える 2

1

コードにはパラメータが含まれているため、別のプロシージャからこのプロシージャを呼び出して、そのパラメータを渡す必要があります。元:

Sub CallMyProcedure()

Dim itms As Outlook.Items
Dim itm As Object

' loop through default Inbox items
Set itms = Session.GetDefaultFolder(olFolderInbox).Items

For Each itm In itms
  If TypeName(itm) = "MailItem" Then
    ' your code is called here
    saveAttachtoDisk itm
  End If
Next itm

End Sub

これは呼び出す必要のあるプロシージャであり、パラメータがないため、マクロダイアログで確認できるはずです。

于 2012-08-08T20:19:12.133 に答える
1

「そのコードはどのように見えるでしょうか?どこに行くのでしょうか?」

Alt-F11をクリックしてOutlookVisualBasic Editorを開き、このコードを以前のバージョンのマクロに貼り付けます。おそらく現在「このOutlookセッション」内にあります。

これまで行ってきたように、マクロダイアログ内から実行できます。または、[ファイル]>[オプション]>[リボンのカスタマイズ]をクリックして、リボンボタンにアタッチすることもできます。また、[開発者]タブでマクロセキュリティを[すべてのマクロの通知]に設定する必要があります。特定のOutlookセッションで最初にクリックしたときに、安全に実行できることを確認するように求められます。

Public Sub saveAttachtoDisk()

Dim saveFolder As String
Dim objAtt As Outlook.Attachment
Dim itm As Outlook.MailItem

saveFolder = "c:\temp\"
For Each itm In ActiveExplorer.Selection
    For Each objAtt In itm.Attachments
        objAtt.SaveAsFile saveFolder & "\" & objAtt.DisplayName
        Set objAtt = Nothing
    Next objAtt
Next itm
End Sub

このサブは、現在開いているフォルダ内の選択したすべてのアイテムの添付ファイルを保存します。現在選択されているフォルダー、または受信トレイなどの静的フォルダー内のすべてのアイテムを実行するように調整できます。そのためには、Outlookオブジェクトモデルに精通している必要があります。JimmyPenaの回答は、すべての受信トレイアイテムでそれを行う例を示しています。

于 2012-08-08T20:05:31.977 に答える