从excel vba复制一个工作簿到另一个工作簿
我有工作簿,我必须将一个工作簿中的范围复制到活动工作簿中的范围variables。 我得到一个错误,当我执行以下…是否有任何其他方式做到这一点。
Dim NTwbk As Workbook Dim AppExcel As Excel.Application Dim NewRng As Range Dim res As Range Sub OpenWBK() Set AppExcel = New Excel.Application Set NTwbk = AppExcel.Workbooks.Open(Sheet1.Range("SecondWorkbookPath")) NewRng= NTwbk.Sheets("Sheet1").Range("B3") AppExcel.Quit End Sub
我也试过这个:
NewRng.Value = NTwbk.Sheets("Sheet1").Range("B3").Value
也没有工作
您的脚本的主要问题是,一旦closures第二个工作簿(通过AppExcel.Quit或NTwbk.close作为其他答案列表),您引用的范围对象不再在内存中,您的variables不再可用。 另外,当将一个对象分配给一个variables时,你必须使用set:
Set NewRng = Ntwbk.Sheets("Sheet1").Range("B3")
这不会失败,但也不会有用,因为你然后closuresNtwbk。
必须在工作簿closures之前执行任何需要在工作簿中使用范围执行的操作。
如果所有你想要的是范围的值,这是一个可能的变化:
Dim NTwbk As Workbook Dim AppExcel As Excel.Application Dim NewRng As Range Dim res As String 'Note the change from Range to String Sub OpenWBK() Set AppExcel = New Excel.Application Set NTwbk = AppExcel.Workbooks.Open(Sheet1.Range("SecondWorkbookPath")) NewRng = NTwbk.Sheets("Sheet1").Range("B3").Value AppExcel.Quit End Sub
然后可以自由使用NewRng作为其他工作簿中特定范围的值。
您已经打开了Excel,因此您不需要打开第二个副本如此丢弃:
Dim AppExcel As Excel.Application Set AppExcel = New Excel.Application AppExcel.Quit
将开放更改为:
Set NTwbk = Workbooks.Open(Sheet1.Range("SecondWorkbookPath"))
但是“SecondWorkbookPath”不是有效的范围。 如果工作表“Sheet1”的单元格A1包含有效的path和文件名称,则以下内容可以:
Set NTwbk = Workbooks.Open(Worksheets("Sheet1").Range("A1").Value) Set NewRng = NTwbk.Sheets("Sheet1").Range("B3") NTwbk.Close SaveChanges := False
进行上述更改并重试。
- 为什么当我使用“Format(string_variable,”###。#“)”并且string_variable的值被设置为0.0时,VBA会引发“types不匹配”错误
- excel vba – 删除数组中的重复项
- select范围和复制/粘贴到记事本 – 几乎完成
- VBA编译器不允许在方法参数周围使用括号
- 比较具有相同内容的XLSX文件之间的MD5哈希值
- VBA更改事件调用
- Excel 2007中的VBAmacros。我想在Excel VBA中使用正则expression式来将“他”replace为“她”,“他”replace为“她”,“他”replace为“她”
- PHP – 从不同文件格式中提取文本Word / Excel / Powerpoint / PDF / RTF
- 创build一个多条件,多行'IF和MIN'的条件公式