2017-08-09 13 views
1

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は受信トレイ内のメールの数によって異なります。

+0

どの行にポップアップが表示されるのですか。 –

+0

'InputBox'に*フルパス*を指定していない限り、ファイル名を与えるだけで、' SaveAs'は* current *ディレクトリに入れます。だから、絶対に*ファイルを保存している、それはあなたが思う 'D:\ ...'パスに保存していないだけです。 –

+0

のstrFil = InputBox( "D:\ LocalData \ xl02926 \ Documents \ Samuel \ AutoCockpit \ test.xlsx"、 "Export Messages to Excel")の後にポップアップが表示されます。 – SamRosignoli

答えて

1

あなたはInputBoxフルパスを提供している場合を除き、あなたはそれにファイル名を与えているとSaveAs現在ディレクトリに入れます。

enter image description here

上記のあなたはそれを与えたプロンプトを表示しているInputBox、ないデフォルトまたは初期値。次に、SaveAsに到達すると、フルパスなしでファイルを保存すると、現在のディレクトリに保存されます。これは、恐らくInputBoxプロンプトでハードコードされたパスとは異なります。

だから、です。ファイルを保存していると思うのですが、そのファイルはD:\...のパスに保存されていません。上記

strFile = InputBox(Prompt:="Specify file location for export.", _ 
    Default:="D:\LocalData\xl02926\Documents\Samuel\AutoCockpit\test.xlsx", _ 
    Title:="Export Messages to Excel") 

、我々はプロンプト、デフォルト値、およびタイトルを与えた:

あなたのInputBox関数は、おそらくのようにする必要があります。デフォルト値は、InputBoxのテキスト入力フィールドを満たしています。希望する場合は、それを変更することができます。

NB:もちろん、ユーザーに有効なパスが提供されていること、ファイルが存在しないこと、潜在的なエラー状況が発生した場合は、それらのエラーを管理するコードを記述する必要がありますこの質問の範囲。

+0

ありがとうございます!コードを理解するだけの問題でした。だから私は完全な道を提供していなかったし、それは他の場所で貯蓄していた。今私は正しいフォルダに保存することができ、それは魅力のように動作します!どうもありがとう! – SamRosignoli

関連する問題