Thread: [Solved] Selecting in Word from Excel
View Single Post
 
Old 10-17-2019, 08:36 PM
gmayor's Avatar
gmayor gmayor is offline Windows 10 Office 2016
Expert
 
Join Date: Aug 2014
Posts: 4,101
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 of
Default

Not tested, but the following should work. You don't 'select' the cells if you work with ranges, and you can't use Word specific commands when late binding to Word in Excel - you must use their numeric equivalents, thus

Code:
Sub modifyHeader()

Dim wdApp As Object
Dim wdDoc As Object
Dim oTable As Object
Dim oCell As Object
Dim oRng As Object

Dim strFolder As String

    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = -1 Then
            strFolder = .SelectedItems(1)
        End If
    End With
    If strFolder = "" Then
        Exit Sub
    End If

    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = False

    strFile = Dir(strFolder & "\*.doc", vbNormal)

    While strFile <> ""
        Set wdDoc = wdApp.Documents.Open(FileName:=strFolder & "\" & strFile, AddToRecentFiles:=False, Visible:=False)


        'delete existing header
        Set oRng = wdDoc.Sections(1).Headers(wdHeaderFooterPrimary).Range
        oRng.Text = ""

        'add a table to header
        Set oTable = wdDoc.Tables.Add _
                (Range:=oRng, _
                NumRows:=2, _
                NumColumns:=2)

        With oTable
        .Range.Font.Bold = True
        .Range.Font.Name = "Times New Roman"
        .Range.Font.Size = 10
        Set oCell = .Cell(1, 1).Range
        oCell.End = oCell.End - 1
        oCell.Text = "ABC-000"

        Set oCell = .Cell(2, 1).Range
        oCell.End = oCell.End - 1
        oCell.Text = "Manufacturer"

        Set oCell = .Cell(2, 2).Range
        oCell.ParagraphFormat.Alignment = 2
        oCell.End = oCell.End - 1
        oCell.Text = "Page "
        oCell.Collapse 0
        wdDoc.Fields.Add Range:=oCell, Type:=33, Text:=" \* Arabic ", PreserveFormatting:=False
        Set oCell = .Cell(2, 2).Range
        oCell.End = oCell.End - 1
        oCell.Collapse 0
        oCell.Text = " of "
        oCell.Collapse 0
        wdDoc.Fields.Add Range:=oCell, Type:=26, PreserveFormatting:=False
    End With



        'Needed? - NO!
        '    ActiveDocument.ActiveWindow.View.Type = wdPrintView
        '    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
        '    ActiveDocument.ActiveWindow.View.Type = wdPrintView


        Application.DisplayAlerts = False
        wdDoc.Close True
        Application.DisplayAlerts = True

        strFile = Dir()
    Wend

    Set wdDoc = Nothing
    wdApp.Quit
    Set wdApp = Nothing


    MsgBox "Finished!"

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