2015-09-18 44 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