无需打开即可将工作簿中的范围复制到另一个

时间:2016-02-01 12:03:28

标签: excel vba excel-vba copy

我尝试通过使用对话框选择要复制数据的文件,将一系列值从工作簿复制到另一个工作簿。

我也不想打开" 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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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