2015-09-18 88 views
-1

到達我有一個要求,以收集郵件兩個日期,並插入到一個Excel表格,每當一個消息到達我的Outlook 2010年我創建Outlook中的rule將「運行腳本」每當按摩到達前景。我通過了除inserting collected data into the Excel sheet之外的部分。值插入Excel中,當消息在Outlook

我嘗試下面的代碼這在VBA Excel中完美的作品,但它似乎是不與Outlook:

Dim wb1 As Excel.Workbook 
Dim sh As Worksheet 
Set wb1 = Workbooks.Open("U:\leaveBook.xls") 
Set sh = ActiveSheet ''wb1.Sheets("Sheet1") 
For Each rw In sh.Rows 
    If sh.Cells(rw.Row, 1).Value = "" Then 
    sh.Cells(rw.Row, 1) = 1 
    sh.Cells(rw.Row, 2) = "Name" 
    sh.Cells(rw.Row, 3) = "TestData1" 
    sh.Cells(rw.Row, 4) = "TestData2" 
    GoTo BREAK 
    End If 
Next rw 
BREAK: 

我試圖在Excel工作表中的數據添加到下一個可用行。

有人可以幫助我在Outlook VBA中編寫相同的代碼嗎?

回答

1

下面的意志需要通過VBE的工具►參考命令添加Microsoft Excel 15.0對象庫或等效項目。

您發佈的示例代碼很漂亮,我試圖維護'Hello World!'樣式。這個框架是非常基本的,但它的表現會被問到。

Option Explicit 

Sub testXL() 
    Dim xlApp As New Excel.Application 
    xlApp.DisplayAlerts = False 
    Dim wb1 As Excel.Workbook, nr As Long 
    Set wb1 = Workbooks.Open("U:\leaveBook.xls") 
    With wb1.Worksheets("Sheet1") 
     nr = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Row 
     .Cells(nr, 1) = 1 
     .Cells(nr, 2) = "Name" 
     .Cells(nr, 3) = "TestData1" 
     .Cells(nr, 4) = "TestData2" 
    End With 
    wb1.Close True 
    xlApp.Quit 
    Set xlApp = Nothing 
End Sub 

我與Office 2013的Microsoft Excel 15.0對象庫測試這一點。如果遇到兼容性確認,可以使用Workbooks.Open method中的apprpriate選項繞過這些確認。

+0

對於遲到的回覆感到抱歉,但您的代碼幫助我節省了大量時間。非常感謝您的寶貴時間! – chriz

0

您將需要識別上次使用的行並在其後放置新數據。喜歡的東西: -

Dim wb1 As Excel.Workbook 
Dim sh As Worksheet 
Dim RowNext As Integer 

Set wb1 = Workbooks.Open("U:\leaveBook.xls") 
Set sh = wb1.Sheets("Sheet1") 
RowNext = sh.Cells.SpecialCells(xlCellTypeLastCell).Row + 1 

sh.Cells(RowNext, 1) = 1 
sh.Cells(RowNext, 2) = "Name" 
sh.Cells(RowNext, 3) = "TestData1" 
sh.Cells(RowNext, 4) = "TestData2" 
GoTo BREAK 

而且不要忘了保存,關閉和處置這樣結束(我建議GoTo BREAK前加入的話):

wb1.Save 
wb1.Close 
Set sh = Nothing 
Set wb1 = Nothing