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

Ms access 如何在函数中引用Excel工作表,ms-access,excel,ms-access-2007,vba,Ms Access,Excel,Ms Access 2007,Vba,我正在尝试调用excel工作表到函数,但出现错误438“对象不支持此属性或方法” 下面的代码调用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)

我正在尝试调用excel工作表到函数,但出现错误
438“对象不支持此属性或方法”

下面的代码调用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

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

请尝试将您的第五行更改为:

Set wks7 = wkb.Sheets.Add
致:

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

第一个问题

strDir&“\NEXTDAY.xls”
应该是
strDir&“\NEXTDAY.xls”
&
标志前后应留有空格

第二个问题

您已声明了
wkb7
,但正在
设置wks7=wkb.Sheets.Add中使用
wkb
。我建议使用
选项Explicit

第三个问题

按照@MarkHone
的建议更改行,设置wks7=wkb.Sheets。将
添加到

Set wks7 = wkb7.Worksheets.Add
第四个问题(您的实际问题!)

applyStyle1
是一个需要返回某些内容的函数。如果您没有返回任何内容,请使用
子项

比如说

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

好的和详细的答案,我同意选项显式建议。我不知道你为什么要把第五行分成两条语句?@MarkHone:对不起,我在测试一些东西,忘了更新。不过,我在第四道题中确实提到了正确的答案:)哦,是的,你提到了;然后没有抱怨:-)感谢@SiddharthRout的快速回复,我正在测试代码,但是在“applyStyle1 wks7”上出现错误。错误表明ByRef参数类型不匹配,但是在代码中两者都被引用为Excel.Worksheet。@KSM:您是否将
Dim wks7声明为Excel.Worksheet
我在您的原始代码中没有看到这一点?谢谢您的帮助@MarkHone
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