Excel

OneNoteの指定したセクションをページごとに指定した形式で出力するマクロ

今回はOneNoteの指定したセクションをページごとに指定した形式で出力するマクロを紹介します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Option Explicit
 
Public Sub Sample()
  PublishOneNoteSection "Web", "C:\Test", "docx"
  MsgBox "処理が終了しました。", vbInformation + vbSystemModal
End Sub
 
Public Sub PublishOneNoteSection(ByVal SectionName As String, ByVal FolderPath As String, Optional ByVal PublishFormat As String = "pdf")
'指定したセクションをページごとに指定した形式で出力する。
'SectionName : セクション名
'FolderPath : 出力先
'PublishFormat : 出力形式
 
  Dim AppON As Object
  Dim Exec As Object
  Dim PublishFormatNo As Long
  Dim n As Object
  Dim x As String
  Dim i As Long
   
  PublishFormat = LCase$(PublishFormat)
  Select Case PublishFormat
    Case "mht"
      PublishFormatNo = 2
    Case "pdf"
      PublishFormatNo = 3
    Case "xps"
      PublishFormatNo = 4
    Case "one"
      PublishFormatNo = 0
    Case "onepkg"
      PublishFormatNo = 1
    Case "doc", "docx"
      PublishFormatNo = 5
    Case "emf"
      PublishFormatNo = 6
    Case "htm", "html"
      PublishFormat = "htm"
      PublishFormatNo = 7
    Case Else
      PublishFormat = "pdf"
      PublishFormatNo = 3
  End Select
  If Right$(FolderPath, 1) <> Application.PathSeparator Then FolderPath = FolderPath & Application.PathSeparator
   
  On Error Resume Next
  Set Exec = CreateObject("WScript.Shell").Exec("ONENOTE.EXE")
  Set AppON = CreateObject("OneNote.Application")
  AppON.GetHierarchy vbNullString, 4, x
  With CreateObject("Msxml2.DOMDocument")
    .async = False
    If .LoadXML(x) Then
      Set n = Nothing '初期化
      Set n = .SelectSingleNode("/one:Notebooks/one:Notebook/one:Section[@name='" & SectionName & "']")
      If Not n Is Nothing Then
        For i = 0 To n.SelectNodes("one:Page").Length - 1
          AppON.Publish n.SelectNodes("one:Page")(i).getAttribute("ID"), FolderPath & SectionName & "_page" & i + 1 & "." & PublishFormat, PublishFormatNo
        Next
        Set n = Nothing
      End If
    End If
  End With
  Set AppON = Nothing
  Exec.Terminate
  Set Exec = Nothing
  If Err.Number <> 0 Then
    MsgBox "エラーが発生しました。" & vbCrLf & vbCrLf & "エラー内容:" & Err.Description, vbCritical + vbSystemModal
  End If
  On Error GoTo 0
End Sub

上記コードではPublishメソッドでページごとに出力していますが、ノートやセクションごとに出力することも可能です(第1引数bstrHierarchyIDで指定)。
また、ファイルを出力する際、出力先に同名のファイルが存在する場合はオートメーションエラーが発生しますので、その点はご注意ください。

PublishメソッドはOneNoteを起動していないとエラーになる、これに気づくまで結構ハマってしまいました・・・。

OneNoteのノート名を列挙するマクロ前のページ

漢字かな交じり文をひらがなにするマクロ次のページ

関連記事

  1. Office関連

    [Mayhem]PowerPointマクロにショートカットキーを割り当てる。

    2012/4/20 追記:クイックアクセスツールバーのメニューを利用す…

  2. Office関連

    埋め込んだブックへのユーザー入力を活用する

    「Excel Web Appのブック埋め込みを試してみました。」でEx…

  3. Office関連

    [Win32 API]PowerPointマクロにショートカットキーを割り当てる。

    数日前、“PowerPointだとマクロにショートカットキーを割り当て…

  4. Office関連

    PowerPoint 2013でYouTubeの動画を挿入する。

    2014/5/23 追記:いつの間にか「ビデオの挿入ダイアログ」が…

  5. Office関連

    “元に戻す”履歴に文字列をセットするPowerPointマクロ

    PowerPointマクロでは、Presentationオブジェクトの…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

zh-CNzh-TWenfrdejakorues

最近の記事

アーカイブ

PAGE TOP