View Single Post
 
Old 03-04-2020, 03:15 AM
gmayor's Avatar
gmayor gmayor is offline Windows 10 Office 2016
Expert
 
Join Date: Aug 2014
Posts: 4,142
gmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud of
Default

It is basically a matter of defining the additional bookmark names in the main macro and repeating the marked section for each of them
Code:
Sub CopyWorksheet()
'Graham Mayor - https://www.gmayor.com - Last updated - 04 Mar 2020
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Dim bStarted As Boolean, bOpen As Boolean
Dim strWB As String
Dim strBM As String
Dim strSheet As String

    strWB = BrowseForFile("Select Workbook", True)

    If strWB = "" Then
        Beep
        GoTo lbl_Exit
    End If
    On Error Resume Next
    Set xlApp = GetObject(, "Excel.Application")
    If Err Then
        Set xlApp = CreateObject("Excel.Application")
        bStarted = True
    End If
    On Error GoTo lbl_Exit
    xlApp.Visible = True

    For Each xlBook In xlApp.Workbooks
        If xlBook.Name = strWB Then
            bOpen = True
            Exit For
        End If
    Next xlBook
    If Not bOpen Then Set xlBook = xlApp.Workbooks.Open(FileName:=strWB)

'Repeat this section to define each bookmark and the sheet/range you wish to copy to it
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    strBM = "BookmarkName1"    ' the name of the bookmark
    strSheet = "Sheet1"      'the name of the sheet to copy
    
    Set xlSheet = xlBook.Sheets(strSheet)
    xlSheet.UsedRange.Copy
    If ActiveDocument.Bookmarks.Exists(strBM) = False Then
        MsgBox "Bookmark " & strBM & " does not exist?"
    Else
        XLSheetToBM strBM
    End If
 '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    xlApp.DisplayAlerts = False
    xlApp.DisplayAlerts = True
    If bStarted = True Then
        xlBook.Close 0
        xlApp.Quit
    End If
lbl_Exit:
    Set xlApp = Nothing
    Set xlBook = Nothing
    Set xlSheet = Nothing
    Exit Sub
End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019)
Visit my web site for more programming tips and ready made processes www.gmayor.com
Reply With Quote