【发布时间】:2018-01-25 02:10:10
【问题描述】:
vba 很新,但我编写了一个代码,用于取消合并列中的行,复制单元格然后粘贴到不同的宏工作簿中。代码在我第一次运行时运行良好。但是我今天尝试使用它,我很震惊我有一个错误。此错误表明它找不到目标文件名。这很奇怪,因为目标文件名没有改变或移动。这是代码示例。
错误显示在以下行:
Set book2 = Workbooks.Open("17 财年报告的跨式燃料 用法.xlsm")
代码如下:
Public Sub Button6_Click()
'Change name of button
Worksheets("7500").Buttons("Button 6").Text = "Send"
With Sheets("7500")
'Unmerge cells
.Range("AI3:AI92").Select
With Selection
For Each rCell In Selection
With rCell
If .MergeCells Then
.MergeArea.UnMerge
End If
End With
Next rCell
End With
End With
'open destination workbook
Dim book1 As Workbook
Dim sheet1 As Worksheet
Dim book2 As Workbook
Dim sheet2 As Worksheet
Application.ScreenUpdating = False
Set book1 = ThisWorkbook
Set book2 = Workbooks.Open("Fiscal '17 Reported Straddle Fuel Usage.xlsm")
Set sheet1 = book1.Sheets("7500")
Set sheet2 = book2.Sheets("Nov ‘17")
【问题讨论】:
-
很可能您的工作簿文件名或路径已更改。
-
不相关,但如果
book1是ThisWorkbook,如果您删除book1并使用已经存在的ThisWorkbook对象引用,您的代码将更容易遵循。另请参阅how to avoid Select and Activate。 ...然后,您已经在With块中引用了sheet1... -
让我困惑为什么你从 2 个不同的集合中访问同一个工作表(
Worksheets,然后是下一行的Sheets) - 将.Buttons("Button 6").Text分配移动到With块. -
另外,
Public的事件处理程序会引发一个标志。而且压痕也低于标准。我建议看看 Rubberduck 如何帮助您改进代码。
标签: vba excel runtime-error filenames