OneNoteをVBAでいじる - 本文を書き換える - サブルーチン
まず、共通のサブルーチンを標準モジュールに貼り付けてください。
OneNoteには、「書き換え用ページ」を作成し、何かの本文を入力してください。
何かを入れないと、書き換える場所が判断できず、エラーとなります。
下図のようなページにしてください。
Public Sub UpdatePage2(ByVal id As String, ByVal Body As String) Dim oneNote As oneNote.Application2 Dim outXML As String Dim lBuf As Long Dim cdataStartPos As Long Dim cdataEndPos As Long Dim headder As String Dim footer As String If id = "" Then Exit Sub End If Set oneNote = New oneNote.Application2 oneNote.GetPageContent id, outXML, piAll, xsCurrent '本文の開始位置を取得 cdataStartPos = InStr(outXML, "<one:Outline") '本文内のCDATAセクション位置を取得 cdataStartPos = InStr(cdataStartPos + 1, outXML, "<![CDATA[") cdataEndPos = cdataStartPos + 1 Do '本文内のCDATAセクションの終わりの位置を取得 lBuf = InStr(cdataEndPos + 1, outXML, "]]>") If lBuf > 0 Then cdataEndPos = lBuf Else Exit Do End If Loop '本文以前のxmlをheadderとして取得 headder = Left(outXML, cdataStartPos + 8) '本文以後のxmlをfooterとして取得 footer = Right(outXML, Len(outXML) - cdataEndPos + 1) 'headderと書き換える本文とfooterで、今のページを更新 oneNote.UpdatePageContent headder & Body & footer End Sub