vba workbook.open的文件名怎么使用变量

Set nm = Sheet4.ComboBox1.textex = ThisWorkbook.Path & "\" & nm & ".xls"
Set xlbook = Workbooks.Open(ex)
Set sh = xlbook.Sheets(nm)
这样写对吗?
看一下我下面的语句哪里出问题了,为什么抓不到数据呢?
Dim f
Dim nm
Set nm = Sheet4.ComboBox1.Text
Set xlbook = Workbooks.Open(ThisWorkbook.Path & "\" & nm & ".xls“) '打开工件簿文件
Set sh = xlbook.Sheets(nm)
Set sh1 = Sheets("Daily_reports1")
r = sh1.Range("a65536").End(3).Row
For i = 2 To r
Set c = sh.Range("a:a").Find(sh1.Cells(i, 1), lookat:=xlWhole)
Set x = sh.Range("f1:ho1").Find(Sheet4.Cells(1, 7), lookat:=xlWhole)
If Not c Is Nothing Then
rr = c.Row
xx = x.Column
For xxx = xx To xx + Sheet4.Cells(3, 7)
sh1.Cells(i, 20) = sh.Cells(rr, 20)
Next
End If
Next i
End If
Windows(ThisWorkbook.Name).Activate '回到操作主表界面
xlbook.Close (False) '关闭工作簿,不保存Sheet4.Select

下面的代码,打开工作薄的名称为变量nm
并把这个工作薄中名称为变量nm 的工作表赋值给sh
nm = Sheet4.ComboBox1.Text
ex = ThisWorkbook.Path & "\" & nm & ".xls"
Set xlbook = Workbooks.Open(ex)
Set sh = xlbook.Sheets(nm)追问

更新了问题帮忙看看

追答

Set sh1 = Sheets("Daily_reports1")
这个sheets 没有指明是哪个工作薄的sheets. 默认的就是当前激活工作薄的sheets了.

而当前激活的工作薄应该是你刚刚打开的工作薄.
你F8单步执行 一下代码, 监视一下SH1 变量 看看
其他的好像没什么问题

温馨提示:答案为网友推荐,仅供参考
相似回答