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. Excel

    ビジネスITアカデミーの無料VBAセミナーに行ってきました。

    Excel MVPの伊藤さんやWord MVPの新田さんのブログ記事で…

  2. アイコン一覧

    Office 2013 アイコン一覧(M)

    ・Office 2013 アイコン一覧 NUM…

  3. Office アドイン

    [Office用アプリ]選択範囲変更時のイベントを利用する。

    ※ この情報はOffice 2013 カスタマー プレビュー版を元にし…

  4. Office関連

    リボンのタブを選択するVBAマクロ

    マクロでリボンのタブを選択する方法として、ActivateTabやAc…

  5. Office関連

    [Excel Services ECMAScript]アクティブなシート名を取得する。

    埋め込んだExcelワークブックのアクティブなシート名を取得するコード…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP