从工作簿复制范围到另一个没有打开

我想通过使用对话框来select我想要从中复制数据的文件从一个工作簿复制到另一个值的范围。

我也不想在这个过程中打开“copyFrom”工作簿。 问题在于将string“filename”中的文件path传递给工作簿variables“copyFrom”。

Option Explicit Private Sub butt_copy_Click() Call copy1 End Sub Private Sub copy1() Dim fileName As String, copyFrom As Workbook fileName = Application.GetOpenFilename() copyFrom = filename Sheet1.Range("A1:A20") = copyFrom.Sheets(Sheet1).Range("A1:A20") End Sub 

尝试下面。 但是我有一些澄清,比如你将从哪里运行代码

 Application.Visible=False Set copyFrom = Application.Workbooks.Open(fileName) 

然后在下面尝试。 为我工作完美

 Private Sub copy1() 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) 'Sheet1.Range("A1:A20") = copyFrom.Sheets(Sheet1).Range("A1:A20") End Sub 

只是添加到algorithm的评论; 它打开文件并从中读取,但不closures。 这使所有其他用户“READ_ONLY”!

我build议在代码的最后:添加这个保存原始文件不变。

 Application.DisplayAlerts = False app.Workbooks.Close savechanges:=False Application.DisplayAlerts = True