【WordVBA】Word 매크로로 문장에, 일자와 페이지의 헤더를 붙인다

3731 단어 VBAWord
이런 식으로 헤더의 왼쪽에 저장한 날짜, 오른쪽에 페이지(0/0)를 붙이고 싶습니다.


Excel 매크로라면 헤더를 세세하게 지정할 수 있습니다만, Word 매크로라면 잘 지정할 수 없습니다・・・

그래, 테이블을 만들자.



헤더에 테이블을 만들고 그 안에 쓰면 잘 가자.
'ヘッダーを編集します
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader

Set mytable = ActiveDocument.Tables.Add(Range:=Selection.Range, _
        NumColumns:=3, NumRows:=1)
    With Selection.Tables(1)
        If .Style <> "表 (格子)" Then
            .Style = "表 (格子)"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = False
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = False
        .ApplyStyleRowBands = True
        .ApplyStyleColumnBands = False
    End With
    Selection.WholeStory

    Selection.Tables(1).Rows.Alignment = wdAlignRowLeft

    'セルの幅を%に変える
    Selection.Tables(1).AllowAutoFit = True 
    Selection.Tables(1).Columns.PreferredWidthType = wdPreferredWidthPercent


    'テーブルのスタイル 印刷するときに枠が出ないようにNoneにしておきます。
    Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone

    'テーブルの左端に日付を挿入する 日付の記述が怪しいかもです
    Selection.Font.Size = 6
    Selection.Tables(1).Cell(1, 1).PreferredWidth = 33
    Selection.Font.ColorIndex = wdBlack
    Selection.Font.Name = "MS Pゴシック"
    Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
    Selection.TypeText text:=Year(Date) +"年"+ Month(Date) +"月"+ Day(Date) +"日"+ " 保存"

    'テーブルの真ん中
    Selection.Tables(1).Cell(1, 2).Select    
    Selection.Tables(1).Cell(1, 2).PreferredWidth = 33
    Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft

    'テーブルの右
    Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
    Selection.MoveRight Unit:=wdCell
    Selection.Tables(1).Cell(1, 3).PreferredWidth = 33

    Selection.Font.ColorIndex = wdBlack
    Selection.Font.Size = 6
    Selection.Font.Name = "MS Pゴシック"
    Selection.ParagraphFormat.Alignment = wdAlignParagraphRight

    'ページ番号を挿入(0/0)
        With Selection
            .ParagraphFormat.Alignment = wdAlignParagraphRight
            .TypeText text:="("
            .Fields.Add Range:=Selection.Range, Type:=wdFieldPage
            .TypeText text:="/"
            .Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, text:="NUMPAGES", PreserveFormatting:=True
            .TypeText text:=")"
        End With

이 작업을 수행하면 이러한 테이블을 헤더에 만들 수 있습니다.


좋은 느낌의 녀석이 생겼습니다.

한 번 더 저장하면 테이블이 두 줄이지만 ...



테이블을 만들기 전에 지금 헤더를 삭제하는 프로세스를 추가합니다.

테이블이 있으면 삭제
  Cnt = ActiveDocument.Tables.Count

  If Cnt > 0 Then
    WordBasic.RemoveHeader
  End If

저장 이벤트에 추가



이상의 처리를 저장 이벤트에 추가하면 저장할 때마다 날짜가 업데이트되어 페이지가 붙습니다.

이 밖에도, 마지막으로 갱신한 사람의 이름이나 이 문장을 열람할 수 있는 직책, 파일명을 넣는 등, 여러가지 응용이 효과가 있다고 생각합니다.

사내의 서식을 개선해 가고 싶은 사람은, 한 번 시험해 보는 것은 어떻습니까.

좋은 웹페이지 즐겨찾기