2016-10-15 2 views
1

Я хотел бы редактировать ячейки в Excel из Outlook с помощью VBA.Редактировать ячейки в Excel из Outlook без повторного открытия Workbook

Хотелось бы так:
В первый раз, когда я запускаю макрос, ячейка A1 является «1».
Во второй раз, когда я запускаю макрос, Cell A2 - «1».
В третий раз, когда я запускаю макрос, ячейка A3 - «1».
.
.
Когда я запускаю макрос в пятый раз, он возвращается к ячейке 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"). Когда я отлаживаю, я вижу эту строку выделенной.

ответ

0

это потому, что с Workbooks(...) вы неявно используя Item() свойство Workbooks объекта, который требует имени или порядкового номера объекта, в то время как вы даете его полное имя с путем

использование

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

Owesome, It's run. Огромное спасибо :) – Bruce

Смежные вопросы