将工作表从一个工作簿(未打开)复制到已打开的工作簿
问题描述:
是否可以在不打开工作表的情况下复制工作表并将其粘贴到已打开的工作簿而没有默认文件位置?我试图复制的工作表总共包含30个工作表。我曾尝试使用文件对话框打开,但有时它会挂起excel。有什么办法可以避免出类拔萃,做我想做的事吗?先谢谢你。将工作表从一个工作簿(未打开)复制到已打开的工作簿
Dim FileToOpen As String
Application.ScreenUpdating = False
FileToOpen = Application.GetOpenFilename _
(Title:="Please choose a Excel File to Open", _
FileFilter:="Excel Files *.(*.xlsx),xlsx")
If VarType(FileToOpen) = vbBoolean Then
MsgBox "No file selected", vbExclamation, "Sorry!"
Exit Sub
End If
Debug.Assert VarType(FileToOpen) = vbString
With Application.Workbooks.Open(FileToOpen)
.Worksheets(22).UsedRange.Copy ThisWorkbook.Worksheets(2).range("A1")
.Close
End With
答
Private Sub test()
Dim app As New Excel.Application
Dim fileName As String, copyFrom As Workbook
app.Visible = False
fileName = app.GetOpenFilename()
Set copyFrom = app.Workbooks.Open(fileName)
MsgBox copyFrom.Sheets(1).Cells(1, 1)
End Sub
这应该适合你想要达到
+0
我在我的代码 –
+0
中编辑了相应的代码以符合您的需求。这只是一个骨架 – Hank
原则是什么,它是不可能的,而无需打开它从一个数字文件访问任何东西。但是,可以打开它,以便用户永远不会意识到打开,复制和关闭了某些内容。如果您知道您希望访问的文件的确切位置,您可以在不受用户干扰的情况下打开代码。否则,如果您不知道位置或名称,则FileOpen对话框即将推出。你为什么不发布你的代码,并让我们看看为什么你的Excel的crsashes? – Variatus
嗨我编辑和添加代码如上 –
所以,你说Excel只是挂起。没有错误信息?没有调试亮点?也许这只是Windows对于Excel来说太快了,在复制完成之前关闭文件。在这种情况下,在关闭源文件之前尝试做一些事情,可能是'ThisWorkbook.Activate'。尝试命名源工作簿和目标工作簿。同时命名源和目标工作表 - 所有这些都不是绝对必要的,但适合让VBA知道谁是老板。 – Variatus