0

vbscript と Excel を使用してタスクの 1 つを自動化しています。下記のコードは、Outlook で添付ファイル付きの電子メールを自動的に下書きします。ただし、「aa」値とコード「1」値を手動で入力する必要があります。これらの値はExcelで定義されており、そこから取得したい.iから「名前」値を取得できますobjFso.GetFileName(objFile.path)。しかし、これらの値をhtmlコードで渡す方法がわかりません。

 For Each objFolder In objFolder.SubFolders
    For Each objFile In objFolder.Files

        If objFso.GetExtensionName(objFile.Path) = "xls" Then


Set MyApp = CreateObject("Outlook.Application")
Set MyItem = MyApp.CreateItem(0) 'olMailItem
With MyItem
    .To = "a@abc.com"
    .Subject = ""
    .ReadReceiptRequested = False

    .HTMLBody = "<font size='3' face='Calibri' color='#203B78'>Hi,<BR><BR>Please approve the attached doc for **<b>aa</b>** for code **<b>1</b>.** 



    .Attachments.Add objFolder.Path & "\" & objFso.GetFileName(objFile.path)
End With
MyItem.Display
End if
  Next
Next    

提案してください !!!

4

1 に答える 1

1

Excelファイルを開く必要があります

Set xl = CreateObject("Excel.Application")
xl.Visible = True  'set to False for production use

Set wb = xl.Workbooks.Open("C:\path\to\your.xls")
Set ws = wb.Sheets(1)

値をメール本文に挿入します。

With MyItem
  .HTMLBody = "... approve the attached doc for **<b>" _
    & ws.Cells(1, 1).Value & "</b>** for code **<b>" _
    & ws.Cells(1, 2).Value & "</b>.**"

1, 1と を、実際の値を含むセルの行番号と1, 2列番号に置き換えます。

完了したら、ブックを閉じて Excel を終了します。

wb.Close
xl.Quit

別のメモとしてobjFile.Path、ファイルへの完全なパスが既にあるため、単純に使用できます

.Attachments.Add objFile.Path

それ以外の

.Attachments.Add objFolder.Path & "\" & objFso.GetFileName(objFile.path)

何らかの理由でフォルダーとファイル名からパスを作成する必要がある場合は、BuildPath文字列連結によって手動でパスを作成するよりも、メソッドを使用することをお勧めします。

.Attachments.Add objFso.BuildPath(objFolder.Path, objFile.Name)

編集:ファイル名は次のように変換できます。

name = Replace(Mid(objFso.GetBaseName(objFile.Name), 26), "_", " ")

長いバージョン:

name = objFso.GetBaseName(objFile.Name) 'get file name without extension
name = Mid(name, 26)             'get part after "Timecard Adjustment_Form_"
name = Replace(name, "_", " ")   'replace underscore with space
于 2013-06-03T07:49:56.820 に答える