无法打开特定工作簿,并且 运行 向用户窗体查找公式
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")
。
我有下面的代码,当 运行 来自 "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")
。