質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

解決済

OUTLOOKメールからのmsgファイル保存

yuujiMotoki
yuujiMotoki

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

2回答

0評価

0クリップ

55閲覧

投稿2018/03/12 00:15

編集2022/01/12 10:58

EXCELのVBAにて、outlookメールをシートに吐き出すマクロを作っています。

しかしながら、最終のSAVEASを実施すると、
エラーが出てとまってしまいます。

ディスクの要領は半分も空いておりますし、フォルダのパーミッションも特に問題ない状況です。何が悪いものでしょうか?

イメージ説明

Sub msg_link()

Sheets("mail").Activate

Const olFolderInbox = 6

On Error Resume Next

Dim i As Integer
Dim FolderName As String
Dim MyDate As String
Dim MyFileName As String
Dim MySubject As String
Dim MySenderName As String
Dim StartTime As Date

StartTime = Now

FolderName = Sheets("menu").TextBox1.Text

Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objInbox = objNamespace.GetDefaultFolder(olFolderInbox)
strFolderName = objInbox.Parent
Set objMailbox = objNamespace.Folders(strFolderName)

y = 0
id = Sheets("menu").ComboBox1.ListIndex

If id <> -1 Then

y = 0

On Error Resume Next

For Each oMail In objMailbox.Folders(id + 1).Items
sName = oMail.Subject
sName = Replace(sName, "?", "?")
sName = Left(sName, 50)

dtDate = oMail.ReceivedTime
sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, _
vbUseSystem) & Format(dtDate, "-hhnnss", _
vbUseSystemDayOfWeek, vbUseSystem)

sPath = FolderName & "\backup\"

** Debug.Print sPath & sName
oMail.SaveAs sPath & sName & ".txt", olTXT**

Range("a2").Offset(y, 0) = Format(oMail.ReceivedTime, "yyyy/m/d") Range("a2").Offset(y, 1) = Format(oMail.ReceivedTime, "hh") Range("a2").Offset(y, 2) = Format(oMail.ReceivedTime, "nn") Range("a2").Offset(y, 3) = oMail.SenderName Range("a2").Offset(y, 4) = oMail.Subject bb = seiki(objItem.Body) Range("a2").Offset(y, 5) = Left(bb, 50) ActiveSheet.Hyperlinks.Add _ Anchor:=Range("A2").Offset(y, 6), Address:=sPath & sName & ".txt", TextToDisplay:="msg" attno = oMail.Attachments.Count If attno > 0 Then For k = 1 To attno If Dir(sPath & sName, vbDirectory) = "" Then MkDir sPath & sName End If oMail.Attachments(k).SaveAsFile (sPath & sName & "\" & oMail.Attachments(k).DisplayName) Next ActiveSheet.Hyperlinks.Add Anchor:=Range("A2").Offset(y, 7), Address:=sPath & sName & "\", TextToDisplay:="files" Else Range("A2").Offset(y, 7) = "なし" End If

end sub

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

dodox86
dodox86

2018/03/12 02:23

コードを提示されるときは、シンタックスハイライトを利用してください。https://teratail.com/help/question-tips また、お使いのWindows やExcel、Outlookのバージョンも記載するとより正確な回答をいただけると思います。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。