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 アドイン

    Visio JavaScript APIで遊んでみました。

    前回の記事でプレビュー版がリリースされた「Visio JavaScri…

  2. Office アドイン

    [Officeアドイン]図形挿入アドイン

    最近まほうのルミティアとかプリキュア、オトカドールの記事ばかり書くこと…

  3. Office アドイン

    Office用アプリではalertやconfirmが使えない?

    JavaScriptでメッセージや確認ダイアログを表示する際には「al…

  4. Office関連

    YouTube動画挿入アドイン for PowerPoint

    前回の記事でPowerPoint 2013でYouTubeの動画が挿入…

  5. Office関連

    Excel Web Appのブック埋め込みを試してみました。

    Microsoftが提供しているOffice Web Appsはいわば…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP