这是一种选择,你只需通过你的范围到DuplicateToNewWB过程:
Public Function WorksheetExists(wbSource As Workbook, strWorksheet As String) As Boolean
Dim intIndex As Integer
On Error GoTo eHandle
intIndex = Worksheets(strWorksheet).Index
WorksheetExists = True
Exit Function
eHandle:
WorksheetExists = False
End Function
Public Sub DuplicateToNewWB(rngSource As Range)
Dim wbTarget As Workbook 'The new workbook
Dim rngItem As Range 'Used to loop the passed source range
Dim wsSource As Worksheet 'The source worksheet in existing workbook to read
Dim wsTarget As Worksheet 'The worksheet in the new workbook to write
Set wbTarget = Workbooks.Add
For Each rngItem In rngSource
'Assign the source worksheet to that of the current range being copied
Set wsSource = rngItem.Parent
'Assign the target worksheet
If WorksheetExists(wbSource:=wbTarget, strWorksheet:=wsSource.Name) Then
Set wsTarget = wbTarget.Worksheets(wsSource.Name)
Else
Set wsTarget = wbTarget.Worksheets.Add
wsTarget.Name = wsSource.Name
End If
'Copy the value
wsTarget.Range(rngItem.Address) = rngItem
Next
'Cleanup
Set rngItem = Nothing
Set wsSource = Nothing
Set wsTarget = Nothing
Set wbTarget = Nothing
End Sub
来源
2016-11-03 18:03:44
Joe
你尝试过什么?请搜索一下,特别是在SO上,因为这个问题已经有很多不同的形式。请告诉我们你找到了什么,有什么/没有工作,或者你有一些代码的任何具体问题。 – BruceWayne
我目前正在使用: 工作表( “SHEETNAME”)范围。( “A7:S1000”)复制 设置newWB = Workbooks.Add 随着newWB 设置新闻= newWB.Sheets( “工作表Sheet1”) 消息。范围(“A3”)。PasteSpecial Paste:= xlPasteValues,Operation:= xlNone newS.Range(“A3”)。PasteSpecial Paste:= xlPasteFormats,Operation:= xlNone,_ SkipBlanks:= False,Transpose:= False 结束与 我试图做复制一个数组,但不能得到一个向多个范围工作。我也没有发现任何没有引用新的被保存的wb或事先引用的wb的东西。 – JonnySweatpants
(你能代替恳请您的OP编辑代码,并使用代码标签('{}')格式化吗?谢谢!) – BruceWayne