我有以下代码,应该将表单“ update”导入另一个工作簿。然后将此工作表复制到工作表“ sheet2”之后的工作簿(我想将东西导入到该工作簿中):
Option Explicit
Public Sub WOBImport()
Dim sFileName As String
Dim targetSht As Worksheet
Set targetSht = ActiveWorkbook.Worksheets("Sheet2")
sFileName = Application.GetOpenFilename("Excel Files (*.xlsm), *.xlsx")
Do While Len(sFileName) > 0
If sFileName <> targetSht.Parent.Name Then
On Error Resume Next
With Workbooks.Open(sFileName)
.Sheets("update").Copy After:=targetSht
.Close False
End With
On Error GoTo 0
End If
sFileName = ""
Loop
End Sub
到目前为止一切顺利。
而不是在“ Sheet2”之后粘贴工作表“ update”,如何用工作表“ update” 替换工作表“ Sheet2”。 ?
非常感谢您
Seb
我认为这段代码几乎可以完成您想要的事情。它会暂时以“更新”的名称重命名和现有工作表(而不是直接删除它,以防它是工作簿中的唯一工作表),在工作簿的末尾添加新的“更新”,然后删除以前的工作表,如果有以前的。请尝试。
Public Sub WOBImport()
Const TempTabName As String = "X-Update"
Dim Wb As Workbook ' activeworkbook
Dim sFileName As Variant
Dim TargetSht As Worksheet
sFileName = Application.GetOpenFilename("Excel Files (*.xlsm), *.xlsx")
If Len(sFileName) Then
Set Wb = ActiveWorkbook
If sFileName = Wb.Name Then Exit Sub
On Error Resume Next
Set TargetSht = Wb.Worksheets("Update")
If Err = 0 Then TargetSht.Name = TempTabName
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
On Error Resume Next
With Workbooks.Open(sFileName)
.Sheets("Update").Copy After:=Wb.Sheets(Wb.Sheets.Count)
.Close False
End With
Wb.Worksheets(TempTabName).Delete
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End If
Err.Clear
End Sub