Outlook 2010で到着時に自動的に添付ファイルを印刷しようとしています。
私はこれをインターネットで見つけました。VBAコードは
Sub LSPrint(Item As Outlook.MailItem)
On Error GoTo OError
'detect Temp
Dim oFS As FileSystemObject
Dim sTempFolder As String
Set oFS = New FileSystemObject
'Temporary Folder Path
sTempFolder = oFS.GetSpecialFolder(TemporaryFolder)
'creates a special temp folder
cTmpFld = sTempFolder & "\OETMP" & Format(Now, "yyyymmddhhmmss")
MkDir (cTmpFld)
'save & print
Dim oAtt As Attachment
For Each oAtt In Item.Attachments
FileName = oAtt.FileName
FullFile = cTmpFld & "\" & FileName
'save attachment
oAtt.SaveAsFile (FullFile)
'prints attachment
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(0)
Set objFolderItem = objFolder.ParseName(FullFile)
objFolderItem.InvokeVerbEx ("print")
Next oAtt
'Cleanup
If Not oFS Is Nothing Then Set oFS = Nothing
If Not objFolder Is Nothing Then Set objFolder = Nothing
If Not objFolderItem Is Nothing Then Set objFolderItem = Nothing
If Not objShell Is Nothing Then Set objShell = Nothing
OError:
If Err <> 0 Then
MsgBox Err.Number & " - " & Err.Description
Err.Clear
End If
Exit Sub
End Sub
マクロの実行を許可しました。VBAエディターでThisOutlookSessionにコードを貼り付け、Microsoft Scripting Runtimeへの参照を追加しました。新しいメッセージが自分からのものかどうかを確認し、そうであればスクリプトを実行するルールを作成しました。.doc添付ファイル付きのメッセージを自分に送信しましたが、受信時に「424-オブジェクトが必要です」というエラーメッセージが表示されました。
自宅にプリンターがありません(別の場所にコードが必要です)ので、Microsoft XPS Writerを既定のプリンターとして設定し、機能するかどうかを確認しました。これがエラーの理由ですか?そうでない場合、何であり、どのように修正しますか?
そして最も重要なことは、どのように仕事を成し遂げるのですか?(アドオンではなく)VBAスクリプトを使用する必要がありますが、VBAは初めてです。
現在Windows XPを使用していますが、Windows 7で動作するものが必要です。
VBAエディターを開くと、マクロの先頭にブレークポイントを設定できます。次に、メールを送信してテストを繰り返します。エディターがポップアップ表示され、マクロを行ごとにF8で実行できます。このようにして、エラーの原因となっている行を詳細に取得します。
—
nixda
このVBAコードも試しましたか?それとも、このルールベースのソリューションですか?
—
nixda
@nixda「MsgBox Err.Number& "-"&Err.Description」という行を強調表示してF8キーを押すと、エラーメッセージが表示されます。
—
ミチャウマスニー
@nixda 2番目のリンクの解決策は、別の問題に対するものです。添付ファイルを自動的に印刷するには、ルールだけでは不十分です。メッセージの印刷のみが許可されます。
—
ミチャウマスニー