在Outlook中编辑Excel中的单元格而不重新打开工作簿

我想使用VBA从Outlook编辑Excel中的单元格。

我想这样做:
我第一次运行macros,单元格A1是“1”。
我第二次运行macros,单元格A2是“1”。
我第三次运行macros,单元格A3是“1”。


当我第五次运行macros时,它将回到单元格A1,并将单元格A1的值从“1”增加到“2”。

Dim count As Integer: count = 1 Dim number As Integer: number = 1 Sub test() Dim xlApp As Object Dim xlWB As Object Dim xlSheet As Object On Error Resume Next Set xlApp = GetObject(, "Excel.Application") If Err <> 0 Then Set xlApp = CreateObject("Excel.Application") End If On Error GoTo 0 If (IsWorkBookOpen("D:\Book1.xlsx") = True) Then 'Check workbook is opening or not Set xlWB = xlApp.Workbooks("D:\Book1.xlsx") Else Set xlWB = xlApp.Workbooks.Open("D:\Book1.xlsx") End If Set xlSheet = xlWB.Sheets("Sheet1") If (count < 5) Then xlSheet.Range("A" & count) = number count = count + 1 Else count = 0 number = number + 1 End If End Sub Function IsWorkBookOpen(FileName As String) Dim ff As Long, ErrNo As Long On Error Resume Next ff = FreeFile() Open FileName For Input Lock Read As #ff Close ff ErrNo = Err On Error GoTo 0 Select Case ErrNo Case 0: IsWorkBookOpen = False Case 70: IsWorkBookOpen = True Case Else: Error ErrNo End Select End Function 

它说“下标超出范围”。 我有这个行的一个问题: Set xlWB = xlApp.Workbooks("D:\Book1.xlsx") 。 当我debugging时,我看到这条线突出显示。

这是因为使用Workbooks(...)您隐式使用Workbooks对象的Item()属性,该对象需要对象的名称或索引号 ,而您将获取带path的全名

使用

 Set xlWB = xlApp.workbooks("Book1.xlsx")