【问题标题】:How to copy an existing worksheet into my active workbook?如何将现有工作表复制到我的活动工作簿中?
【发布时间】:2012-10-10 21:17:01
【问题描述】:

我有 2 张纸,其中有 2 个按钮 BrowsefileOpenfile 和一个文本框 TextBox1。我使用Browsefile 按钮选择要打开的文件并使用Openfile 按钮打开工作簿。

问题是,它会在新工作簿中打开,而不是将其添加到我的活动工作簿中。我该如何解决这个问题?

Public fileStr As String
Sub GetOpenFile()

fileStr = Application.GetOpenFilename()
Worksheets("Sheet1").TextBox1.Value = fileStr

End Sub
Sub Paste_Click()
Dim wbk1 As Workbook, wbk2 As Workbook

Set wbk1 = ActiveWorkbook
Set wbk2 = Workbooks.Add(fileStr)

wbk2.Sheets(1).Cells.Copy wbk1.Worksheets("Sheet2").Cells(1, 1)

End Sub

【问题讨论】:

  • 所以您希望它在 Sheet2 中打开而不是在新工作簿中打开?
  • 是的,这就是我真正想要它做的事情
  • 您无法将XLS(X(M)) 格式的文件作为选项卡直接打开到另一个工作簿中,因此如果您的文件位于XLS(X(M)) 中,那么您对其进行编码的方式是唯一的方法。如果文件为CSVTXT格式,则可以使用DataConnections将数据“查询”到`wkb1'的工作表中。
  • 如果您的文件是XLS(X(M)) 格式,您还可以在 wbk2.Sheets(1).Cells.Copy ...` 行之后添加wkb2.Close False。然后第二个工作簿将关闭,您不必担心它会打开。

标签: vba excel


【解决方案1】:

试试这个 :) 它将允许您选择文件并在打开的工作簿末尾复制第一张工作表。

Sub Paste_Click()
Dim wbk1 As Workbook, wbk2 As Workbook

fileStr = Application.GetOpenFilename()

Set wbk1 = ActiveWorkbook
Set wbk2 = Workbooks.Add(fileStr)

wbk2.Sheets("Sheet1").Copy After:=Workbooks("WorkbookNameYouCopyCodeInto").Sheets(3)
wbk2.Close
End Sub

【讨论】:

  • 您也可以在fileStr = ...之后添加Worksheets("Sheet1").TextBox1.Value = fileStr,然后您就只有1个宏了。
  • 将此答案添加到我的代码将允许您从您选择的工作簿中复制所有工作表。 stackoverflow.com/questions/6863940/…
  • 它给了我这个错误“下标超出范围”用黄色突出显示这一行“wbk2.Sheets("Sheet1").Copy After:=Workbooks("Book1.xlsm").Sheets( 3)" 并且仍然将其粘贴到不同的工作簿中?
  • Book1.xlsm 是您的基本文件。因此,您将代码复制到的文件名。在我的答案中对其进行了编辑。
  • 虽然这会清理 OP 的代码,使其更高效且易于阅读,但这如何解决他提出的问题,因为它仍然会在复制之前打开工作簿
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
  • 2012-07-19
相关资源
最近更新 更多