如何在不更改引用的情况下将Excel工作表复制并粘贴到新书中?
我正在尝试将工作表从一个Excel工作簿复制并粘贴到另一个工作簿。工作表集成到该工作表的本地模型中。因此,我需要复制的工作表中的单元格引用在绝对意义上保持不变 例如,带有如何在不更改引用的情况下将Excel工作表复制并粘贴到新书中?,excel,vba,Excel,Vba,我正在尝试将工作表从一个Excel工作簿复制并粘贴到另一个工作簿。工作表集成到该工作表的本地模型中。因此,我需要复制的工作表中的单元格引用在绝对意义上保持不变 例如,带有“='Sheet1'C1”的单元格必须保留为“='Sheet1'C1”,而不是“='[原始工作簿]Sheet1'C1” 现在我在使用时得到了意想不到的结果 Sub TransferSheet(wka As Workbook, wkb As Workbook, WorksheetName As String) Dim ws
“='Sheet1'C1”
的单元格必须保留为“='Sheet1'C1”
,而不是“='[原始工作簿]Sheet1'C1”
现在我在使用时得到了意想不到的结果
Sub TransferSheet(wka As Workbook, wkb As Workbook, WorksheetName As String)
Dim ws1 As Worksheet
wka.Activate
Set ws1 = wka.Worksheets(WorksheetName)
wkb.Activate
ws1.Copy after:=wkb.Worksheets(Worksheets.Count)
End Sub
我认为这应该奏效:
Sub TransferSheet(wka As Workbook, wkb As Workbook, WorksheetName As String)
Dim ws1 As Worksheet
wka.Activate
Set ws1 = wka.Worksheets(WorksheetName)
wkb.Activate
ws1.Copy after:=wkb.Worksheets(Worksheets.Count)
wkb.ChangeLink "wka.xls", "wkb.xls", xlExcelLinks
End Sub
编辑:此解决方案用于更改宏按钮上的链接。我认为这应该可以:
Sub TransferSheet(wka As Workbook, wkb As Workbook, WorksheetName As String)
Dim ws1 As Worksheet
wka.Activate
Set ws1 = wka.Worksheets(WorksheetName)
wkb.Activate
ws1.Copy after:=wkb.Worksheets(Worksheets.Count)
wkb.ChangeLink "wka.xls", "wkb.xls", xlExcelLinks
End Sub
编辑:此解决方案用于更改宏按钮上的链接。我找到了一个超级用户,该用户让我了解了如何在VBA中解决此问题。由于这是一个常见问题,人们使用了许多解决方案,例如将内容复制并粘贴到文本编辑器,然后返回到新工作表。另一种解决方案是使用查找和替换函数
将其与VBA相适应,可以通过在复制图纸后对其执行查找和替换来解决问题
Sub TransferSheet(wka As Workbook, wkb As Workbook, WorksheetName As String)
Dim ws1 As Worksheet
wka.Activate
Set ws1 = wka.Worksheets(WorksheetName)
wkb.Activate
ws1.Copy after:=wkb.Worksheets(Worksheets.Count)
wkb.ChangeLink "wka.xls", "wkb.xls", xlExcelLinks
Dim sht As Worksheet
Dim fnd As Variant
Dim rplc As Variant
fnd = "'[" & wka.Name & "]Summary'!"
rplc = ""
For Each sht In ActiveWorkbook.Worksheets
sht.Cells.Replace what:=fnd, Replacement:=rplc, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
Next sht
End Sub
我能够找到一个超级用户,它让我知道如何在VBA中解决这个问题。由于这是一个常见问题,人们使用了许多解决方案,例如将内容复制并粘贴到文本编辑器,然后返回到新工作表。另一种解决方案是使用查找和替换函数
将其与VBA相适应,可以通过在复制图纸后对其执行查找和替换来解决问题
Sub TransferSheet(wka As Workbook, wkb As Workbook, WorksheetName As String)
Dim ws1 As Worksheet
wka.Activate
Set ws1 = wka.Worksheets(WorksheetName)
wkb.Activate
ws1.Copy after:=wkb.Worksheets(Worksheets.Count)
wkb.ChangeLink "wka.xls", "wkb.xls", xlExcelLinks
Dim sht As Worksheet
Dim fnd As Variant
Dim rplc As Variant
fnd = "'[" & wka.Name & "]Summary'!"
rplc = ""
For Each sht In ActiveWorkbook.Worksheets
sht.Cells.Replace what:=fnd, Replacement:=rplc, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
Next sht
End Sub
您可以轻松地将新文件中的数据源更改回自身。以下是代码wkb.ChangeLink“c:\excel\wka.xls”、“c:\excel\wkb.xls”、xlExcelLinks您可以轻松地将新文件中的数据源更改回自身。以下是代码wkb.ChangeLink“c:\excel\wka.xls”、“c:\excel\wkb.xls”、xlExcelLinks