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関連

    [Office]シンプルリボンのアンケートへの回答でAmazonギフト券が当たるチャンス

    「Office の新しい外観」にある通り、一部のOffice環境では、…

  2. Office関連

    オデッセイ コミュニケーションズ主催のExcel VBA入門セミナーに参加しました。

    今月19日に開催されたオデッセイ コミュニケーションズさん主催の「Ex…

  3. Office アドイン

    [Office用アプリ]サポートページにある資料へのリンクをまとめてみました。

    MicrosoftのサポートページにあるOffice 用アプリや関連技…

  4. Office関連

    Web上でVBAのコードを解析するツール「Microsoft Sharepoint and VBA …

    Web上でVBAやSharePointアプリケーションのコードを解析し…

  5. Office関連

    PDFファイルのフィールドを読み取り専用にするVBAマクロ

    「PDFのフィールドに値を入力した後、読み取り専用にするにはどうしたら…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP