OneNoteをVBAでいじる - ページの添付ファイル情報を取得する
まずは、標準モジュールの先頭に下記のコードを貼り付けてください。
Public Type AttachedFileInfoType pathCache As String preferredName As String End Type
ユーザ定義型で、添付ファイル情報を取得します。
pathCacheは、実ファイルが保存されている場所、preferredNameは、実ファイル名となります。
次に、標準モジュールに下記のコードを貼り付けてください。
Public Function GetAttachedFileInfo(ByVal pageID As String) As AttachedFileInfoType() Dim result() As AttachedFileInfoType Dim oneNote As oneNote.Application2 Dim doc As Object Dim nodes As MSXML2.IXMLDOMNodeList Dim node As MSXML2.IXMLDOMNode Dim outXML As String Dim count As Integer If pageID = "" Then Exit Function End If Set oneNote = New oneNote.Application2 oneNote.GetPageContent pageID, outXML, piAll, xsCurrent Set doc = CreateObject("Msxml2.DOMDocument") Call doc.loadXML(outXML) Set nodes = doc.DocumentElement.SelectNodes("//one:InsertedFile") count = -1 For Each node In nodes count = count + 1 ReDim Preserve result(count) As AttachedFileInfoType result(count).pathCache = node.Attributes.getNamedItem("pathCache").nodeValue result(count).preferredName = node.Attributes.getNamedItem("preferredName").nodeValue Next GetAttachedFileInfo = result End Function
このファンクションをテストするコードを貼り付けてください
Public Sub gafiTest() Dim result() As AttachedFileInfoType Dim i As Integer result = GetAttachedFileInfo(GetID("ページ名")) For i = 0 To UBound(result) Debug.Print i & ":実ファイル名[" & result(i).preferredName & "]は" & result(i).pathCache & "に保存されています" Next End Sub
このルーチンを実行すると
0:実ファイル名[エクセル1.xlsx]はC:\Users\user\AppData\Local\Microsoft\OneNote\16.0\cache\0000153G.binに保存されています
1:実ファイル名[エクセル2.xlsm]はC:\Users\user\AppData\Local\Microsoft\OneNote\16.0\cache\00001540.binに保存されています
のように添付ファイル情報が出力されます。