0

empList.xlsxという名前の Excel ファイルには、サーバーの空き容量がほとんどないユーザーのリストが含まれています。

この電子メールは、ユーザーに現在の容量の状態を知らせ、一部のファイルを削除して容量を解放することを目的としています。

以下の VB スクリプトは、従業員の電子メール アドレスを読み取り、電子メール通知を送信するだけで、特定の行の残りのデータは読み取りません。

Set objExcel = CreateObject("Excel.Application")

Function getEmail()
    Dim iCol As Integer, iRow As Integer
    Dim sEmailBody As String
    Dim sEmailTo as string ' the recipient
    iCol = 1 ' column A
    iRow = 2 ' row 2

    Do
        sEmailTo = cells(irow, 1).text
        sEmailBody = sendData(iRow)
        iRow = iRow + 1
    Loop While Not Len(Trim(Cells(iRow, iCol))) = 0
End Function

Function sendData(ByVal iRow As Integer) As String
    Dim iCol As Integer

    For iCol = 2 To 11 ' B=2, K=11
        sendData = sendData & Cells(iRow, iCol).Text & vbCrLf
    Next

    MsgBox sendData
End Function

Set objExcel = CreateObject("Excel.Application")
Set objEmail = CreateObject("CDO.Message")
set objConf = CreateObject("CDO.Configuration")
Set objWorkbook = objExcel.Workbooks.Open _
   ("C:\Logs\EmpList.xlsx")

Set objFlds = objConf.Fields
With objFlds
  .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
  .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtprey.domain.com"
  .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
  '.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoAnonymous
  .Update
End With
Set objEmail.Configuration = objConf
x = 2
Do Until objExcel.Cells(x, 2).Value = ""
    Set objEmail.Configuration = objConf

    objEmail.From = "noReply@domain.com"
    objEmail.To = objExcel.Cells(x, 2)
    objEmail.Subject = "Your H Drive is Full"
    objEmail.Textbody = sendData(2)
    objEmail.Send
    x = x + 1
Loop
objExcel.Quit

以下は、各行がどのようにレイアウトされるかの例です。

Jim.Brown@domain.com|H:\home\matt.tavakolian\|60.3 GB|54629.5 GB|2274|288|0.0 GB| 6.7%|3/4/2013 3:11 PM|3/11/2013 12:16 PM|9/23/2008 3:26 PM

添付ファイルを追加する方法がわからないので、パイプ (|) を使用して、行ごとに各セルのデータを示しました。

上記の例は、CellA から CellK までの行 #2 を表しています。

やりたいことは、Jim.Brown@domain.com という名前の行 #2 に電子メールを送信し、その行 (CellA から CellK まで) のすべてのデータを含めて、現在のサーバーのハード ドライブ容量を表示することです。

これは可能ですか?

4

1 に答える 1

0

次のようなことを試すことができます (明らかに Excel オブジェクトとワークブック オブジェクトを使用します):

Function getEmail()

Dim iCol As Integer, iRow As Integer
Dim sEmailBody As String
Dim sEmailTo as string ' the recipient
iCol = 1 ' column A
iRow = 2 ' row 2

Do
    sEmailTo=cells(irow,1).text
    sEmailBody = sendData(iRow)
    iRow = iRow + 1
Loop While Not Len(Trim(Cells(iRow, iCol))) = 0

End Function

その関数では、以下の関数を呼び出してメール本文を取得します!

Function sendData(ByVal iRow As Integer) As String

Dim iCol As Integer

For iCol = 2 To 11 ' B=2, K=11
    sendData = sendData & Cells(iRow, iCol).Text & vbCrLf
Next

    MsgBox sendData

End Function

関数「getEmaily」を呼び出して、電子メール アドレスと、電子メール本文に挿入される本文を取得します。

HTH

フィリップ

于 2013-03-12T18:28:44.123 に答える