注目の投稿

技術者として人として

 技術者として人として これまで、生きてきて、ひとりで解決していくものと考えていた。 知り合いなどの助言もあるが、それだけでも、やり切れない場合があった。 長い間、この性格を作り上げてきて正確などは、変わることがないだろうと決めつけていた。 思考は、そうそう簡単には変わらないもの。 ひとりでは、変わらないものであるということに気づくことができた。 日本では、カウンセリングという文化が浸透していないが、古くは仏教など、生活の為に、必要な事を、学ぶ機会が少ないと思う。 カウンセリングは、それを、実現できるものと思う。 ひとりでは解決できないこと、それは、正しい方法を見つけられないから。それを、学んでいないからで、専門的な第三者が心理学などを通して教えてくれることは救いとなる。 生きにくい世の中であることは間違いない。 生きやすくする方法もあると知ることができた。 技術者は孤独になるときがあり、ひとりでなんともならない時の対策方法を見失う時がある。日本ではカウンセリング文化が浸透していないような気がするが、ひとりでは解決出来ない時。救われる方法があると知る事になる。 https://t.co/LBKNwUyXg5 — chsugiyama (@chx_sugi_001) January 3, 2023

EXCELのマクロでWORDのユーザープロパティを設定する。 Create WORD "User Properties" from EXCEL VBA.

WORDのユーザープロパティを VBAで設定する

Create WORD "User Properties" from EXCEL VBA.


概要
WORDのユーザープロパティは、登録をするためには、操作がやりずらいが、フィールドコードで、DocProperty から選択するだけなので、プロパティが設定されていれば、WORDをテンプレートとして、Excelの表からユーザープロパティを設定して、リストを作成することが容易である。

WORD フィールド文 挿入の方法

フィールドの設定は、クイックパーツ → フィールド → フィールドの挿入


下記のフィールド画面が表示される。


フィールドの選択 Docproperty を選択し、フィールド プロパティの中から選択する。

この操作で、任意のユーザープロパティが、WORDの文書に埋め込まれる。

WORD VBA 参照設定の設定

参照設定 Microsoft Visual Basic for Applications のツール で下記のように設定する。



ツール 参照設定



参照設定の一覧が表示される。

Microsoft Excel 16.0 Object Library をチェック

使用している環境により異なる。




WORD VBA

'

'ユーザープロパティ設定用

'エクセルファイル(プロパティ一覧.xlsx)を開いておいてマクロを実行する。

'プロパティ名、内容を任意で設定可能 Max100件

'V2:エクセルファイル ワイルドカード対応 20170509

'

Sub Wdユーザープロパティ設定V2()

    Dim CDP(100, 2)

    Dim CDPN As Long

    Dim n As Long

    Dim i As Long

    ''call macro110507a  '○イミディエイトクリア

    ' ■ エクセルの処理 プロパティ一覧.xlsx エクセルファイルをアクティブ

    Dim Bk As String                    'V2

    Dim Ex As Object

    Set Ex = GetObject(, "Excel.application")

      AppActivate Ex.Caption

      

      ' ファイル名検索

      Dim WB As Workbook

      Bk = ""

      For Each WB In Ex.Workbooks

        Debug.Print WB.Name

        If WB.Name Like "*プロパティ一覧*" Then

          Bk = WB.Name

        End If

      Next

    

      Ex.Workbooks(Bk).Activate       'V2

      

      ' ■SHEET1のプロパティの情報

      With Ex.Workbooks(Bk).Worksheets("sheet1")

        CDPN = .Range("A1").End(xlDown).Row

        For n = 2 To CDPN

          CDP(n, 1) = .Cells(n, 1)

          CDP(n, 2) = .Cells(n, 2)

          'Debug.Print CDP(n, 2)

        Next n

      End With

    Set Ex = Nothing


      ' ■WORD処理 プロパティがある場合はプロパティを削除

      ' CountはFor文で減っていくので、Countのデータを削除する。

      Debug.Print "前Count= " & ActiveDocument.CustomDocumentProperties.Count

      With ActiveDocument

        For i = 1 To .CustomDocumentProperties.Count

          Debug.Print "i=" & .CustomDocumentProperties.Count & "  Data= " & .CustomDocumentProperties(.CustomDocumentProperties.Count)

          .CustomDocumentProperties(.CustomDocumentProperties.Count).Delete

        Next i

      End With

      Debug.Print "後Count= " & ActiveDocument.CustomDocumentProperties.Count


    ''MsgBox "ユーザープロパティを設定します。"

    '■WORD処理(プロパティがない場合ADD処理)

    For n = 2 To CDPN

      With ActiveDocument.CustomDocumentProperties

        .Add Name:=CDP(n, 1), _

        LinkToContent:=False, _

        Type:=msoPropertyTypeString, _

        Value:=CDP(n, 2)

      End With

    Next n

    

End Sub


エクセルシート の説明

ファイル名:プロパティ一覧を含む名前
シート名:sheet1
A列:プロパティ名
B列:プロパティ内容
A列が空白のセルの上までの範囲を処理します。




WORD マクロ実行

上記のエクセルを、開いておき、WORDのマクロを実行する。

WORDマクロ実行は、ALT+F8 キー


マクロ 画面で、Wdユーザープロパティ設定V2を実行する



マクロ実行結果

文書のプロパティを確認すると、Excelの表の内容のユーザープロパティが作成されている。



ユーザープロパティがすでにある場合にも、Excelの内容で、上書きをする。

活用の方法

エクセルの表の内容が、WORDに設定されるので、

WORDをテンプレートとして、任意のユーザープロパティを設定しておき。

数多くのユーザープロパティを、WORDに埋め込むことが可能になる。

手配リストなど、機種毎に、Excelで、プロパティ一覧を作成する場合

多くの条件から部品を拾い出すことになるため、各データファイルから、手配リスト用などの、プロパティ一覧ファイルに集約して、そのまとめられたプロパティをWORDから呼び出す。


参考リンク先

Word VBA Excelと連携

WORD VBA ユーザープロパティ エクセル登録


Excel VBA とAutocad 連携




Excel PowerPoint(PPT) 連携

エクセルからパワーポイントのノートを書き込むVBA


Excel VBA







コメント

このブログの人気の投稿

DesignSpark Mechanical オブジェクトの拡大、縮小 "Scale the body"

EXCEL VBA EXCELの表からAUTOCADの文字を書き換える. EXCEL VBA Rewrite the characters of AUTOCAD from the table of EXCEL.

エクセルからパワーポイントのノートを書き込むVBA