2012-02-27 12 views
1

私は先日取り組んでいたこととは異なるアプローチを試みています。職場では、Outlook 2010を使用し、1日を通して.XLSX添付ファイル付きの電子メールを受信します。 OutlookでVBAを使用して着信電子メールの添付ファイルをチェックする方法を理解しようとしています。添付ファイルの数が0より大きい場合は添付ファイルをテストし、スプレッドシートの場合はtblOutlookLogを送信者のアドレス帳情報で更新します。これはMS Accessの外でVBAを試してみた2日目または3日目の私だけです。暗黙のうちに文法を理解しようとしています。私は下のOutlookから以下のコードを投稿しました。 olInbox_ItemAdd(ByValアイテムをオブジェクトとして)セクションにという部分にエラーが表示されます。オブジェクトは、"無効なまたは修飾されていない参照"であることを示しています。私はそれがあまりにも前に謝罪しています。ご協力いただきありがとうございます。Outlook 2010 VBAが無効または未確認の参照

Option Explicit 

Private WithEvents InboxItems As Outlook.Items 
    Dim olns As NameSpace 
    Dim olInbox As MAPIFolder 
    Dim olItem As Object 
    Dim olAtmt As Attachment 
    Dim db As DAO.Database 
    Dim rst As DAO.Recordset 

    Const strdbPath = "\\FMI-FS\Users\sharp-c\Desktop\" 
    Const strdbName = "MSOutlook.accdb" 
    Const strTableName = "tblOutlookLog" 

Private Sub Application_Startup() 
    Set olns = GetNamespace("MAPI") 
    Set olInbox = olns.GetDefaultFolder(olFolderInbox).Items 
    Set db = OpenDatabase(strdbPath & strdbName) 
    Set rst = db.OpenRecordset(strTableName, dbOpenDynaset) 
End Sub 

Private Sub Application_Quit() 
    On Error Resume Next 
    rst.Close 
    db.Close 
    Set olns = Nothing 
End Sub 


Private Sub olInbox_ItemAdd(ByVal Item As Object) 
    Dim olItem As Outlook.MailItem 
    Dim olAtmt As Outlook.Attachment 
    Dim strFoldername As String 
    Dim strFilename As String 
    Dim i As Integer 
    i = 0 

    For Each olItem In olInbox.Items 
     For Each olAtmt In olItem.Attachments 
     If olItem.olAtmt.Count > 0 Then 
      If Right$(olAtmt.FileName, 5) = ".xlsx" Then 
       strFilename = "\\FMI-FS\Users\sharp-c\Desktop\Test" & olAtmt.FileName 
       olAtmt.SaveAsFile strFilename 
       i = i + 1 
        rst.AddNew 
        rst!Subject = Left(.Subject, 255) 
        rst!Sender = .Sender 
        rst!FromAddress = .SenderEmailAddress 
        rst!Status = "Inbox" 
        rst!Logged = .ReceivedTime 
        rst!AttachmentPath = strFilename 
        Next 
        rst.Update 
      End If 

     Next olAtmt 
     Next olItem 

     Set olAtmt = Nothing 
     Set olItem = Nothing 
End Sub 

答えて

3

あなたがオブジェクトと項目の前に付ける必要がありますなど

rst!Subject = Left(olItem.Subject, 255) 

とします。私はあなたがいくつかの段階で削除したかもしれないと思います。

+0

Remou、私はアイテムの接頭辞を付け加えました。私はこの投稿に対して私が受け取ったエラーを排除しました。私の情報では、私のポストがアドレッシングされている問題が解決したので、新しいトピックをカバーする新しい投稿を作成するのですか、既存の投稿を引き続き使用しますか?私はお詫び申し上げます、私はこれに新しいです! – CSharp821

+0

投稿の理由が同じ場合、通常は同じ投稿を使用します。この場合、コードは実行されません。 – Fionnuala

+0

それは意味があります、それについては申し訳ありません。 – CSharp821

関連する問題