如何在函数中引用Excel工作表

时间:2014-01-06 16:05:34

标签: ms-access excel-vba ms-access-2007 access-vba vba

我正在尝试将excel工作表调用到函数但是我收到错误438 "OBJECT DOESN'T SUPPORT THIS PROPERTY OR METHOD"

以下代码调用applyStyle1

Dim wkb7 As Excel.Workbook
Set wkb7 = Excel.Application.Workbooks.Open(strDir&"\NEXTDAY.xls")
wkb7.ActiveSheet.Cells.Select
Selection.Copy
Set wks7 = wkb.Sheets.Add

applyStyle1 (wks7)

功能:

Function applyStyle1(wksContainer As Excel.Worksheet)
     With wksContainer
              ......
     End With
End Function

当函数调用被函数中的代码替换时,此代码有效,但由于它被多次调用,我需要它在函数中而不是复制代码。感谢您的时间,如果您需要更详细的解释,请告诉我。

2 个答案:

答案 0 :(得分:5)

  

第一个问题

strDir&"\NEXTDAY.xls"行应为strDir & "\NEXTDAY.xls"&符号之前和之后应该有一个空格。

  

第二个问题

您已声明wkb7但在wkb中使用Set wks7 = wkb.Sheets.Add。我建议使用Option Explicit

  

第三个问题

将@MarkHone Set wks7 = wkb.Sheets.Add建议的行更改为

Set wks7 = wkb7.Worksheets.Add
  

第四个问题(您的实际问题!)

applyStyle1是一个需要返回内容的函数。如果您没有返回任何内容,请改为使用Sub

例如

Sub Sample()
    Dim wkb7 As Excel.Workbook
    Dim wks7 As Excel.Worksheet

    Set wkb7 = Excel.Application.Workbooks.Open(strDir & "\NEXTDAY.xls")
    wkb7.ActiveSheet.Cells.Copy

    Set wks7 = wkb7.Worksheets.Add

    applyStyle1 wks7
End Sub

Sub applyStyle1(wksContainer As Excel.Worksheet)
    With wksContainer

    End With
End Sub

答案 1 :(得分:3)

请尝试更改您的第5行:

Set wks7 = wkb.Sheets.Add

为:

Set wks7 = wkb.Worksheets.Add

表格将包括工作簿中的所有工作表,包括图表。