无法打开特定工作簿,并且 运行 向用户窗体查找公式

Trouble opening a specific workbook, and running a find formula to a userform

我有下面的代码,当 运行 来自 "filename.xlsx" 的 sheet 6 上的命令按钮时,它可以完美运行。 (名称更改,因为它是一个工作文件)它打开一个用户窗体,我在文本框(dateFind)中输入日期,然后在用户窗体上填充 100 个标签,然后从 sheet 29,它得到适当的星期数字。

一旦它获得了用户表单上的所有信息,它就会将其移至 tester.xlsx。然后使用用户窗体中的变量保存文件以创建文件名。快速检查从打开的用户表单到测试人员的数字,然后单击消息框上的“确定”关闭表单。

(对不起,如果啰嗦了,我认为以上内容可能有助于解释我在做什么):)

我需要它做的是 运行 来自另一个用户表单上的按钮。这需要引用 filename.xlsx 的完整文件路径,因为当它最终在 运行 工作时,"filename.xlsx" 和 "tester.xlsx" 将位于不同的文件夹中。

我试过 set = workbooks.open 然后是 sheet 29 和 sheet 6 的完整文件路径,并得到 运行 时间错误 424。所需对象。在 sheet 29 中。我假设 sheet 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 是选项卡上的名称,Codename 是您将在项目 window 中看到的名称,而不是括号中的名称。它们都可以使用,但是有不同的使用方法。查看示例,您将使用代号引用 ThisWorkbook.Sheet1,使用 sheet 名称引用 ThisWorkbook.Worksheets("Data")