Outlookで約100件のメールを受信し、同様の件名「Dealer Sales Cockpit - XXXXXXXX」(XXXXXXXXは可変番号)を受信します。Excelファイルを保存するフォルダを指定する
電子メールの件名の末尾にある番号を取得し、Excelスプレッドシートの列(またはExcelでは不可能な場合は.txtファイル)に書き込む必要があります。
これは私が見つけたコードです。問題は、 "test.xlsx"に書き込むことはないということです。私はVBAで実際に働いたことがないので、それを解決することはできません。私はそれを実行すると
Sub ExportMessagesToExcel()
Dim olkMsg As Object, _
excApp As Object, _
excWkb As Object, _
excWks As Object, _
lngRow As Long, _
lngCnt As Long, _
intPos As Integer, _
strFil As String
strFil = InputBox("D:\LocalData\xl02926\Documents\Samuel\AutoCockpit\test.xlsx", "Export Messages to Excel")
If strFil <> "" Then
Set excApp = CreateObject("Excel.Application")
Set excWkb = excApp.Workbooks.Add()
Set excWks = excWkb.ActiveSheet
'Write Excel Column Headers
With excWks
.Cells(1, 1) = "Computer"
End With
lngRow = 2
'Write messages to spreadsheet
For Each olkMsg In Application.ActiveExplorer.CurrentFolder.Items
'Only export messages, not receipts or appointment requests, etc.
If olkMsg.Class = olMail Then
'Add a row for each field in the message you want to export
intPos = InStrRev(olkMsg.Subject, " ")
excWks.Cells(lngRow, 1) = Mid(olkMsg.Subject, intPos + 1)
lngRow = lngRow + 1
lngCnt = lngCnt + 1
End If
Next
Set olkMsg = Nothing
excWkb.SaveAs strFil
excWkb.Close
End If
Set excWks = Nothing
Set excWkb = Nothing
Set excApp = Nothing
MsgBox "Process complete. A total of " & lngCnt & " messages were
exported.", vbInformation + vbOKOnly, "Export messages to Excel"
End Sub
、ポップアップが表示され、私はそれがスプレッドシートの名前を尋ねると思いますが、私は選択した任意の名前がすでに存在しているようですので、何も作成されません。それは私の電子メールを数え、 "Xメッセージの合計がエクスポートされた"と言うので、私の受信トレイをスキャンします。 Xは受信トレイ内のメールの数によって異なります。
どの行にポップアップが表示されるのですか。 –
'InputBox'に*フルパス*を指定していない限り、ファイル名を与えるだけで、' SaveAs'は* current *ディレクトリに入れます。だから、絶対に*ファイルを保存している、それはあなたが思う 'D:\ ...'パスに保存していないだけです。 –
のstrFil = InputBox( "D:\ LocalData \ xl02926 \ Documents \ Samuel \ AutoCockpit \ test.xlsx"、 "Export Messages to Excel")の後にポップアップが表示されます。 – SamRosignoli