Access VBA如何将新图纸添加到excel?

Access VBA如何将新图纸添加到excel?,excel,ms-access,vba,Excel,Ms Access,Vba,我正在access中运行一些代码模块,并将数据写入 擅长。当我第一次写入时,数据被正确写入。但是再一次 当我尝试时,新数据被写在旧数据之上。我该怎么办 插入新的工作表 我现有的代码是 Dim objexcel As Excel.Application Dim wbexcel As Excel.Workbook Dim wbExists As Boolean Dim objSht As Excel.Worksheet Dim objRange As Excel.Range

我正在access中运行一些代码模块,并将数据写入 擅长。当我第一次写入时,数据被正确写入。但是再一次 当我尝试时,新数据被写在旧数据之上。我该怎么办 插入新的工作表

我现有的代码是

Dim objexcel As Excel.Application
Dim wbexcel As Excel.Workbook
Dim wbExists As Boolean
Dim objSht As Excel.Worksheet
Dim objRange As Excel.Range                                    
Set objexcel = CreateObject("excel.Application")
On Error GoTo Openwb
wbExists = False
Set wbexcel = objexcel.Workbooks.Open("C:\REPORT1.xls")
Set objSht = wbexcel.Worksheets("Sheet1")
objSht.Activate
wbExists = True

Openwb:              
On Error GoTo 0
If Not wbExists Then
    objexcel.Workbooks.Add
    Set wbexcel = objexcel.ActiveWorkbook
    Set objSht = wbexcel.Worksheets("Sheet1")
End If

我认为下面的代码应该满足您的要求。它与您的非常相似,只是它使用.Add方法的返回值来获取所需的对象

Public Sub YourSub()
    Dim objexcel As Excel.Application
    Dim wbexcel As Excel.Workbook
    Dim wbExists As Boolean
    Set objexcel = CreateObject("excel.Application")

    'This is a bad way of handling errors. We should'
    'instead check for the file existing, having correct'
    'permissions, and so on, and actually stop the process'
    'if an unexpected error occurs.'
    On Error GoTo Openwb
    wbExists = False
    Set wbexcel = objexcel.Workbooks.Open("C:\REPORT1.xls")
    wbExists = True

Openwb:
    On Error GoTo 0
    If Not wbExists Then
        Set wbexcel = objexcel.Workbooks.Add()
    End If

    CopyToWorkbook wbexcel
EndSub

Private Sub CopyToWorkbook(objWorkbook As Excel.Workbook)
    Dim newWorksheet As Excel.Worksheet
    set newWorksheet = objWorkbook.Worksheets.Add()

    'Copy stuff to the worksheet here'
End Sub

这仍将执行相同的功能。当我重新运行时,代码数据只会被复制到sheet1中。我不会否决你的答案,因为与问题相关的部分是正确的,但我认为使用On Error Resume Next然后On Error GoTo 0作为代码块是非常糟糕的做法。如果有一个您知道可以安全忽略的预期错误,请编写一个错误处理程序来丢弃该错误。否则,您将面临忽略不应丢弃的重要错误的危险。我本可以更改它来检查文件是否存在,权限是否设置等等,但我认为他知道得最清楚。但是你是对的,所以我将编辑我的答案,以说明这不是一种很好的方法。在尝试打开工作簿之前检查工作簿是否存在不是更简单吗?如果Len(Dir(“C:\REPORT1.xls”)=0,则创建工作簿如果它存在,但用户没有访问权,该怎么办?我个人认为只使用空白工作簿更简单,但我想tksy希望附加到现有工作簿上。是的,如果填充了工作表1,则转到工作表2如果填充了工作表2,则转到工作表3,依此类推。