Excel 将工作表从一个工作簿(未打开)复制到打开的工作簿

Excel 将工作表从一个工作簿(未打开)复制到打开的工作簿,excel,copy,vba,Excel,Copy,Vba,是否可以从工作簿复制工作表,而不打开工作表并将其粘贴到没有默认文件位置的已打开工作簿?我试图从中复制的工作表总共包含30个工作表。我曾尝试使用文件对话框打开,但有时它会挂起excel。有没有办法不挂excel,不做我想做的事?先谢谢你 Dim FileToOpen As String Application.ScreenUpdating = False FileToOpen = Application.GetOpenFilename _ (Title:="Please choose a Exce

是否可以从工作簿复制工作表,而不打开工作表并将其粘贴到没有默认文件位置的已打开工作簿?我试图从中复制的工作表总共包含30个工作表。我曾尝试使用文件对话框打开,但有时它会挂起excel。有没有办法不挂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

这应该符合您想要实现的目标

原则上,不打开数字文件就无法访问任何内容。但是,可以以这样的方式打开它,用户永远不会意识到某些东西被打开、复制和关闭。如果知道要访问的文件的确切位置,可以让代码在不受用户干扰的情况下打开它。否则,如果您不知道位置或名称,则可以使用“文件打开”对话框。你为什么不发布你的代码,让我们看看为什么你的Excel会死掉?嗨,我如上所述编辑并添加了代码,所以,你说Excel只是挂起了。没有错误消息吗?没有调试突出显示?也许这只是因为Windows对于Excel来说太快了,在复制完成之前关闭了文件。在这种情况下,请在关闭源文件之前尝试执行一些操作,可能是
此工作簿。激活
。尝试命名源工作簿和目标工作簿。列出源工作表和目标工作表的名称-这些都不是严格必需的,但适合让VBA知道谁是老板。我认为它挂起是因为该工作簿中有30个工作表。没有错误消息或调试突出显示。我可以试试,不知道。工作簿的大小可能会有所不同。我考虑的更多的是复制数据的大小。不管是哪一个,还是两者都不重要。请尝试我提出的建议。根据您的需要编辑相应的代码。这只是一副骨架
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