OneNoteページ追加サンプルマクロ▽ソースコード

記事
IT・テクノロジー
HC241229A.png

Option Explicit
Option Base 0
'
'【メモ】ツール(T)>参照設定(R)に
'    Microsoft OneNote xx.x Object Labrary
' Microsoft XML vx.x
' のライブラリーにチェックを入れる。
'
'*スリープAPI
Private Declare PtrSafe Sub Sleep Lib "KERNEL32.dll" (ByVal dwMillisconds As Long)
'
'
Public Sub OneNoteページ追加サンプルマクロ()
    Dim objExec As Object, appOne As OneNote.Application
    Dim strSecI As String, strHie As String
    Dim domDocu As DOMDocument60, objElem As Object
    Dim intPgCn As Integer
    Dim strPgId As String, strPage As String
    'OneNoteプログラム起動
    Set objExec = CreateObject("WScript.Shell").Exec("ONENOTE.EXE")
    Sleep (1500)
    '
    'OneNoteオブジェクト設定
    Set appOne = VBA.CreateObject("OneNote.Application")
    If Trim(appOne.Windows.CurrentWindow.CurrentPageId) = "" Then
       'カレントページ取得できなければ、終了!
       objExec.Terminate: Set objExec = Nothing
       Exit Sub
    End If
    'セクションID取得
    strSecI = appOne.Windows.CurrentWindow.CurrentSectionId
    '
    'ノード階層構造を取得
    appOne.GetHierarchy strSecI, OneNote.HierarchyScope.hsPages, strHie
    '
    'DOMDocument設定
    Set domDocu = New MSXML2.DOMDocument60
    '
    'XMLデータ読込み
    If domDocu.LoadXML(strHie) Then
       '最終のページID取得
       intPgCn = domDocu.getElementsByTagName("one:Page").Length
       Set objElem = domDocu.getElementsByTagName("one:Page").Item(intPgCn - 1)
       strPgId = objElem.Attributes.getNamedItem("ID").NodeValue
       '新しいページを追加
       appOne.CreateNewPage strSecI, strPgId
       '
       'ノード階層構造を再取得
       appOne.GetHierarchy strSecI, OneNote.HierarchyScope.hsPages, strHie
       If domDocu.LoadXML(strHie) Then
         '最終のページID再取得 = 追加したページID
         intPgCn = domDocu.getElementsByTagName("one:Page").Length
         Set objElem = domDocu.getElementsByTagName("one:Page").Item(intPgCn - 1)
         strPgId = objElem.Attributes.getNamedItem("ID").NodeValue
         '追加したページに、タイトルと本文を書き加える
         appOne.UpdatePageContent OneNote追加ページタイトル部分(strPgId)
         Sleep (500)
         appOne.UpdatePageContent OneNote追加ページ本文部分(strPgId)
         Sleep (500)
       End If
    Else
        MsgBox ("OneNoteのXMLデータ読込みエラー")
    End If
    'OneNoteオブジェクト解放
    Set appOne = Nothing
    'OneNoteプログラム終了
    objExec.Terminate
    Set objExec = Nothing
End Sub
'********************************************************
' 関数:OneNote追加ページタイトル部分
'********************************************************
Private Function OneNote追加ページタイトル部分(pstrPgId As String) As String
    Dim strData As String
    '
    strData = "<?xml version=""1.0""?>" & vbCrLf
    strData = strData & "<one:Page xmlns:one=""?????"" " '←不正文字ゆえ省略
    strData = strData & "ID=""" & pstrPgId & """ "
    strData = strData & " dateTime=""2024-12-31T15:00:00.000Z"" "
    strData = strData & ">"
     '
    strData = strData & "<one:Title lang=""ja"">"
    strData = strData & "<one:OE style=""font-family:'Meiryo UI';font-size:16.0pt"">"
    strData = strData & "<one:T><![CDATA[追加したページ" & "]]></one:T> "
    strData = strData & "</one:OE>"
    strData = strData & "</one:Title>"
    strData = strData & "</one:Page>"
    '
    OneNote追加ページタイトル部分 = strData
End Function
'******************************************************
' 関数:OneNote追加ページ本文部分
'******************************************************
Private Function OneNote追加ページ本文部分(pstrPgId As String) As String
    Dim strData As String
    strData = "<?xml version=""1.0""?>" & vbCrLf
    strData = strData & "<one:Page xmlns:one=""?????"" " '←不正文字ゆえ省略
    strData = strData & "ID=""" & pstrPgId & """>"
    '
    strData = strData & "<one:Outline >"
    strData = strData & "<one:Position x=""30.0"" y=""80.0"" z=""0"" />"
    strData = strData & "<one:Size width=""200.0"" height=""50.0"" />"
    strData = strData & "<one:OEChildren>"
    strData = strData & "<one:OE style=""font-family:'Meiryo UI';font-size:14.0pt"">"
    strData = strData & "<one:T><![CDATA[追加したページの1行目]]></one:T>"
    strData = strData & "</one:OE>"
    strData = strData & "<one:OE style=""font-family:'Meiryo UI';font-size:14.0pt"">"
    strData = strData & "<one:T><![CDATA[<p><b>追加したページの2行目</b></p>]]></one:T>"
    strData = strData & "</one:OE>"
    strData = strData & "</one:OEChildren>"
    strData = strData & "</one:Outline>"
    strData = strData & "</one:Page>"
    '
    OneNote追加ページ本文部分 = strData
End Function

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら