excel - 打开用户指定的 Excel 工作簿并将数据范围复制到另一个工作簿

标签 excel vba

我正在尝试在 Excel 中运行宏,其中用户选择要打开的文件,宏将从该工作簿复制一个范围并将其粘贴到原始工作簿中用户指定的单元格。我对代码的尝试如下所示。我将“wbThis”作为要粘贴的原始工作簿,将“wbTarget”作为要打开和复制的工作簿。当我运行代码时,我可以选择要打开的文件,但它给出一个错误,提示“需要对象”,并且不会进一步进行复制和粘贴。

有没有办法使用 Workbook.Open 而不是 Application.GetOpenFilename,但仍然让用户能够选择要打开的文件?

感谢您的帮助。

Dim wbTarget As Workbook
Dim wbThis As Workbook

Set wbThis = ActiveWorkbook
Set wbTarget = Application.GetOpenFilename(FileFilter:="Excel workbook (*.xls),*.xls", Title:="Open data")

wbThis.Activate
Set rDest = Application.InputBox(Prompt:="Please select the Cell to paste to", Title:="Paste to", Type:=8)
On Error GoTo 0
wbTarget.Activate
Application.CutCopyMode = False
wbTarget.Range("A1").Select
wbTarget.Range("B6:B121").Copy
wbThis.Activate
rDest.PasteSpecial (xlPasteValues)
Application.CutCopyMode = False

wbTarget.Close False

最佳答案

GetOpenFileName 并不真正打开文件,只是获取文件的名称。 尝试执行 Application.Workbooks.Open(TheResultOfGetOpenFileName)

dim FileName as string
FileName = Application.GetOpenFilename(FileFilter:="Excel workbook (*.xls),*.xls", Title:="Open data")

Set wbTarget = Application.Workbooks.Open(FileName)

关于excel - 打开用户指定的 Excel 工作簿并将数据范围复制到另一个工作簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15641558/

相关文章:

python - Unicode解码错误: 'ascii' codec can't decode byte 0xea in position 8: ordinal not in range(128)

c# - 是否有现有文档说明为什么 VBA Val 函数的行为与相同代码的 .Net 实现不同(十六进制转换)?

excel - VBA - 如何从 Excel 2007 中的最近文档列表中删除文件?

vba - Excel删除公式,但保留有很多行的值

Excel VBA : Regular Expression - get file name

python - 如何使用pandas python根据给定的IP地址将大型excel文件拆分为多个工作表

excel - 接口(interface)和扩展ApplicationClass

windows - Excel VBA - 是否有 TextChanging/TextChanged 或类似事件?或者如何在不使用 Enter 的情况下移动选择?

excel - 计算范围内有多少不是空白或在列表中

Excel VBA - 将多个用户表单复选框值写入单个单元格