Excel 打开特定工作簿并对userform运行查找公式时出现问题

Excel 打开特定工作簿并对userform运行查找公式时出现问题,excel,vba,copying,Excel,Vba,Copying,我有下面的代码,当从“filename.xlsx”第6页上的命令按钮运行时,它可以完美地工作。(名称更改,因为它是一个工作文件)它打开一个用户表单,我在文本框(dateFind)中输入日期,然后在用户表单上填充100个标签,然后从第29页获得相应的周数 一旦用户表单上有了所有信息,它就会将其移动到tester.xlsx中。然后使用userform中的变量保存文件以创建文件名。完成从open userform到tester的数字快速检查,然后单击消息框上的OK关闭表单 (抱歉,如果这是长篇大论,我

我有下面的代码,当从“filename.xlsx”第6页上的命令按钮运行时,它可以完美地工作。(名称更改,因为它是一个工作文件)它打开一个用户表单,我在文本框(dateFind)中输入日期,然后在用户表单上填充100个标签,然后从第29页获得相应的周数

一旦用户表单上有了所有信息,它就会将其移动到tester.xlsx中。然后使用userform中的变量保存文件以创建文件名。完成从open userform到tester的数字快速检查,然后单击消息框上的OK关闭表单

(抱歉,如果这是长篇大论,我想上面的内容可能有助于解释我在做什么):)

但我需要它从另一个用户窗体上的按钮运行。这需要引用filename.xlsx的完整文件路径,因为当它最终在工作中运行时,“filename.xlsx”和“tester.xlsx”将位于不同的文件夹中

我尝试了set=workbooks.open,然后是第29页和第6页的完整文件路径,结果得到运行时错误424。对象是必需的。第29页。我认为第6页也是如此,但它就在那里

Private Sub cb1_Click()
Dim wkbk As Workbook
Dim SubDate As Range
Dim WkNo As Range
Dim txt As String
Dim Filename As Variant

    With Application
         .EnableEvents = False
        .ScreenUpdating = False
         .DisplayAlerts = False
    End With
'建议编辑的代码开始

    Set sourceWb = Workbooks.Open ("F:\Users\e-lia\Desktop\filename.xlsx" )

    Set WkNo = sourceWb.Sheets("Sheet29").Range("A:A").Find(what:=dateFind.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not WkNo Is Nothing Then
    Me.WeekNo.Caption = WkNo.Offset(0, 1).Text
    Else
    MsgBox "Please check the date, and try again!"
    End If
    Set SubDate = sourceWb.Sheets("Sheet6").Range("A:A").Find(what:=dateFind.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not SubDate Is Nothing Then
'建议编辑的代码结束

    Me.MON.Caption = SubDate.Offset(0, 0).Text  ‘another 100 similar lines

    Else
    MsgBox "Please check the date, and try again!"
    End If
    Set wkbk = Workbooks.Open("F:\Users\e-lia\Desktop\tester.xlsx")


    wkbk.Sheets(3).Range("M21") = MON.Caption   ‘another 100 similar lines


    ActiveWorkbook.SaveAs Filename:="F:\Users\e-lia\Desktop\filename for - Wk No." & WeekNo.Caption & " - for the Week ending " & FRI.Caption & ".xlsx"
    MsgBox "The filename for Wk No. " & WeekNo.Caption & " and week ending " & FRI.Caption & " has been created and saved to the Desktop Folder."
    wkbk.Close False
    With Application
      .EnableEvents = True
      .ScreenUpdating = True
      .DisplayAlerts = True
    End With

    End Sub

您可能使用的是代码名而不是实际的Sheetname。Sheetname是选项卡上的名称,Codename是您将在项目窗口中看到的名称,而不是括号中的名称。它们都可以使用,但有不同的使用方法。查看示例,您可以使用代码名引用
ThisWorkbook.Sheet1
,使用工作表名引用
ThisWorkbook.Worksheets(“数据”)

您可能使用了代码名而不是实际的图纸名。Sheetname是选项卡上的名称,Codename是您将在项目窗口中看到的名称,而不是括号中的名称。它们都可以使用,但有不同的使用方法。查看示例,您可以使用代码名引用
ThisWorkbook.Sheet1
,使用工作表名引用
ThisWorkbook.Worksheets(“数据”)

欢迎访问该网站!哪一行代码触发了错误?我怀疑您可能想要
设置sourceWb=workbooks.open(文件名):sourceWb.Sheets(“Sheet29”).Range…
。也就是说,正如通过工作簿变量引用tester.xlsx一样,引用filename.xlsx的方式也一样。请记住,您可以编辑问题以包含更多信息。您好,cxw,谢谢您的帮助。行集合WkNo=。。触发错误。我试图添加您建议的新代码,但在Set WkNo=sourceWb.Sheets(“Sheet29”).Range(“a:a”).Find(what:=dateFind.Value,LookIn:=xlValues,lookat:=xlother)上出现运行时错误9。我对你的理解正确吗?我是新来的。。(上面编辑代码以显示更改)该文件中是否有“Sheet29”?运行时错误9的下标超出范围,这意味着它不存在。您好,Darrell。有。我只是通过原始工作表上的按钮运行它,它仍然有效。除了将该文件从xlsm重命名为xlsx之外,它仍然是同一个工作簿。此外,我注释掉了对第29页的引用,因此它仅从第6页开始,并得到了相同的错误..:(欢迎访问该站点!哪一行代码触发了错误?我怀疑您可能希望
设置sourceWb=workbooks.open(文件名):sourceWb.Sheets(“Sheet29”).Range…
。也就是说,正如通过工作簿变量引用tester.xlsx一样,引用filename.xlsx的方式相同。请记住,您可以编辑问题以包含更多信息。您好,cxw,谢谢您的帮助。行集合WkNo=…会触发错误。我正在尝试添加您建议的新代码,但遇到运行时错误9在设置WkNo=sourceWb.Sheets(“Sheet29”).Range(“A:A”).Find(what:=dateFind.Value,LookIn:=xlValues,lookat:=xlother)。我理解正确吗?我是新来的..(上面编辑的代码显示更改)是否有“Sheet29”在该文件中?运行时错误9是
下标超出范围
,这意味着它不存在。嗨,Darrell。有。我只是通过原始工作表上的按钮运行了它,它仍然有效。除了该文件从xlsm重命名为xlsx之外,它仍然是同一个工作簿。而且,我注释掉了对工作表29的引用,所以它才开始从第6页,得到了相同的错误..:(