Office関連

EvernoteのノートをXML形式で保存するVBAマクロ

Evernote for WindowsのType Library(Evernote API (enapi) 1.0 Type Library(C:\Program Files\Evernote\Evernote\enapi.dll))を利用した、Evernoteのノートを列挙するスクリプトを何年か前に書いたのですが、今回はノートをXML形式で保存(エクスポート)するマクロを紹介します。

Option Explicit

Public Sub Sample()
  'Evernoteのノートを保存
  ExportEvernoteNote "(ユーザー名)", _
                     "(パスワード)", _
                     "(ノートブック名)", _
                     "(保存先フォルダのパス)"
  'Evernoteのノートブックを保存
  ExportEvernoteNoteBook "(ユーザー名)", _
                         "(パスワード)", _
                         "(ノートブック名)", _
                         "(保存先フォルダのパス)"
End Sub

Private Sub ExportEvernoteNote(ByVal Username As String, _
                               ByVal Password As String, _
                               ByVal NotebookName As String, _
                               ByVal FolderPath As String)
'指定したノートブック内のノートをXML形式で保存
' - Username:Evernoteのユーザー名
' - Password:Evernoteのパスワード
' - NotebookName:Evernoteのノートブック名
' - FolderPath:保存先フォルダのパス
  Dim en As Object 'enapiLib.Evernote
  Dim nb As Object 'enapiLib.Notebook
  Dim n As Object  'enapiLib.Note
  Dim ff As Integer
  
  If Right(FolderPath, 1) <> ChrW(&H5C) Then _
     FolderPath = FolderPath & ChrW(&H5C)
  If CreateObject("Scripting.FileSystemObject").FolderExists(FolderPath) = False Then
    MsgBox "保存先フォルダが見つかりませんでした。" & vbCrLf & _
           "処理を中止します。", vbCritical + vbSystemModal
    Exit Sub
  End If
  
  On Error Resume Next
  Set en = CreateObject("enapi.Evernote")
  en.Login Username, Password, vbNullString
  If Err.Number <> 0 Then
    MsgBox "Evernote for Windowsがインストールされているか、" & vbCrLf & _
           "またはユーザー名とパスワードが合っているか確認してください。", vbCritical + vbSystemModal
    Exit Sub
  End If
  On Error GoTo 0
  
  Set nb = GetNotebook(en, NotebookName)
  If nb Is Nothing Then
    MsgBox "指定したノートブックが見つかりませんでした。" & vbCrLf & _
           "処理を中止します。", vbCritical + vbSystemModal
    Exit Sub
  End If
  
  'Noteごとに出力
  For Each n In nb.Notes
    ff = FreeFile
    Open FolderPath & n.Title & "(" & n.ID & ").xml" For Binary As #ff
    Put #ff, , n.Export
    Close #ff
  Next
  
  MsgBox "処理が終了しました。", vbInformation + vbSystemModal
End Sub

Private Sub ExportEvernoteNoteBook(ByVal Username As String, _
                                   ByVal Password As String, _
                                   ByVal NotebookName As String, _
                                   ByVal FolderPath As String)
'指定したノートブックをXML形式で保存
' - Username:Evernoteのユーザー名
' - Password:Evernoteのパスワード
' - NotebookName:Evernoteのノートブック名
' - FolderPath:保存先フォルダのパス
  Dim en As Object 'enapiLib.Evernote
  Dim nb As Object 'enapiLib.Notebook
  Dim ff As Integer
  
  If Right(FolderPath, 1) <> ChrW(&H5C) Then _
     FolderPath = FolderPath & ChrW(&H5C)
  If CreateObject("Scripting.FileSystemObject").FolderExists(FolderPath) = False Then
    MsgBox "保存先フォルダが見つかりませんでした。" & vbCrLf & _
           "処理を中止します。", vbCritical + vbSystemModal
    Exit Sub
  End If
  
  On Error Resume Next
  Set en = CreateObject("enapi.Evernote")
  en.Login Username, Password, vbNullString
  If Err.Number <> 0 Then
    MsgBox "Evernote for Windowsがインストールされているか、" & vbCrLf & _
           "またはユーザー名とパスワードが合っているか確認してください。", vbCritical + vbSystemModal
    Exit Sub
  End If
  On Error GoTo 0
  
  Set nb = GetNotebook(en, NotebookName)
  If nb Is Nothing Then
    MsgBox "指定したノートブックが見つかりませんでした。" & vbCrLf & _
           "処理を中止します。", vbCritical + vbSystemModal
    Exit Sub
  End If
  
  'Notebook単位で出力
  ff = FreeFile
  Open FolderPath & nb.Name & "(" & nb.ID & ").xml" For Binary As #ff
  Put #ff, , nb.Export
  Close #ff
  
  MsgBox "処理が終了しました。", vbInformation + vbSystemModal
End Sub

Private Function GetNotebook(ByRef EvernoteApp As Object, _
                             ByVal NotebookName As String) As Object
'名前を指定してNotebookオブジェクトを取得
  Dim nb As Object 'enapiLib.Notebook
  Dim ret As Object
  
  Set ret = Nothing '初期化
  For Each nb In EvernoteApp.Notebooks
    If nb.Name = NotebookName Then
      Set ret = nb
      Exit For
    End If
  Next
  Set GetNotebook = ret
End Function

ExportEvernoteNoteプロシージャはノート単位、ExportEvernoteNoteBookプロシージャはノートブック単位で保存します。

VBAやスクリプトでノートの保存ができるのはとても便利なのですが、あくまでもWindows版クライアントを利用しているので、Evernote for Windowsが必要である点と、PCに保存されたデータのみが対象となるので、同期されていないデータは保存できない点は要注意です。

組み込み定数を列挙するVBAマクロ前のページ

スライドショー(ウィンドウ表示)実行中にペン機能を使うためのPowerPointマクロ次のページ

関連記事

  1. Office関連

    各スライドに配置されたオートシェイプからテキストを取得するPowerPointマクロ

    各スライドに配置されたオートシェイプからテキストを抜き出す処理を考えて…

  2. Office関連

    類似した書式の文字列を選択するWordマクロ三種

    Wordには、選択中の文字列と似た書式の文字列を一括選択する「類似した…

  3. Office関連

    インストールされたフォントの一覧を取得するVBAマクロ

    最近自分の周りでPowerPoint VBAが流行っているようだったの…

  4. Office関連

    Office 2013の開発者用リファレンス

    「Word2013 VBA の日本語ヘルプ」でも回答していますが、Of…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP