将范围从工作簿复制到另一个而不打开

Copy range from workbook to another without open

我正在尝试通过使用对话框将一系列值从一个工作簿复制到另一个工作簿,方法是 select 我要从中复制数据的文件。

我也不想在此过程中打开 "copyFrom" 工作簿。问题在于将字符串 "filename" 中的文件路径传递给工作簿变量 "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

只是要添加到算法中的评论; 它打开文件并从中读取,但不关闭。这使得所有其他用户 "READ_ONLY"!

我建议在代码末尾添加:保存原始文件不变。

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