0

Microsoft リファレンスを使用して OneNote のページを更新しようとしました: http://msdn.microsoft.com/en-us/library/office/jj680118.aspx

これが私の問題です。ページを正しい ID で更新しようとすると、「HRESULT からの例外: 0x80042000」というエラーがスローされました。

これが私のコードです:

  static void UpdatePageContent()
  {
        ApplicationClass onApplication = new ApplicationClass();
        String strImportXML;

        strImportXML = @"<?xml version="+"1.0"+" encoding="+"utf-16"+"?>" +
           "   <one:Page xmlns:one="+"http://schemas.microsoft.com/office/onenote/12/2004/onenote\""+"" +
           "ID=\"{5BE09697-903A-45DD-88D4-8AD301A3D91F}{1}{B0}\">" +
           "      <one:PageSettings RTL=\"false\" color=\"automatic\">" +
           "         <one:PageSize>" +
           "            <one:Automatic/>" +
           "         </one:PageSize>" +
           "         <one:RuleLines visible=\"false\"/>" +
           "      </one:PageSettings>" +
           "      <one:Title style=\"font-family:Calibri;" +
           "           font-size:17.0pt\" lang=\"en-US\">" +
           "         <one:OE alignment=\"left\">" +
           "            <one:T>" +
           "               <![CDATA[My Sample Page]]>" +
           "            </one:T>" +
           "         </one:OE>" +
           "      </one:Title>" +
           "      <one:Outline >" +
           "         <one:Position x=\"120\" y=\"160\"/>" +
           "         <one:Size width=\"120\" height=\"15\"/>" +
           "         <one:OEChildren>" +
           "            <one:OE alignment=\"left\">" +
           "               <one:T>" +
           "                  <![CDATA[Sample Text]]>" +
           "               </one:T>" +
           "            </one:OE>" +
           "         </one:OEChildren>" +
           "      </one:Outline>" +
           "   </one:Page>";

        // Update page content
        try
        {
            onApplication.UpdatePageContent(strImportXML, System.DateTime.MinValue);
        }
        catch (COMException e)
        {
            Console.WriteLine("Error Message : " + e.Message);
        }
    }

これを解決する方法が本当にわかりません。

4

2 に答える 2

1

XML は OneNote 対応ではありません。

エラー コードの一覧は次のとおりです: http://msdn.microsoft.com/en-us/library/office/jj680117.aspx

@Sebastian がとにかく形式が正しくないと述べているので、最初の行を取り除くことができます。私の経験では、OneNote はそれを必要としません。

また、ページ全体を送信する必要はありません。ページの objId と更新されたオブジェクトを送信するだけです。したがって、1 つのアウトラインを追加する必要があり、これも機能するはずです。

"<one:Page xmlns:one=\"http://schemas.microsoft.com/office/onenote/12/2004/onenote\" +
       "ID=\"{5BE09697-903A-45DD-88D4-8AD301A3D91F}{1}{B0}\">" +
       "      <one:Outline >" +
       "         <one:Position x=\"120\" y=\"160\"/>" +
       "         <one:Size width=\"120\" height=\"15\"/>" +
       "         <one:OEChildren>" +
       "            <one:OE alignment=\"left\">" +
       "               <one:T>" +
       "                  <![CDATA[New Text]]>" +
       "               </one:T>" +
       "            </one:OE>" +
       "         </one:OEChildren>" +
       "      </one:Outline>";

この新しいアウトラインだけが追加されます。

それでも問題が発生する場合 (問題はありませんが、コンテンツが更新されません)、UpdatePageContent の追加パラメーターを確認してください。確かに 2013 API では、最終更新日を送信して確認することができます。また、ローカルを強制するパラメーターもあります。上書きします。

于 2013-11-03T22:35:31.723 に答える
0

strImportXML文字列にいくつかの問題があり、更新が失敗します。

  • に調整 @"<?xml version="+"1.0"+" encoding="+"utf-16"+"?>"する"<?xml version=\"" + "1.0" + "\" encoding=\"" + "utf-16" + "\"?>"
  • ページID属性の前に空のスペースを追加します( の代わりに+ " " + "ID... )
    + "" + "ID
  • onApplication ページIDが階層内にある/存在することを確認してください
  • 要素で定義された一致する
    名前空間を使用してCOMライブラリを参照していることを確認してくださいone:Page(たとえば、Office 2013 / 15.0
    オブジェクトライブラリには別の名前空間があります)
于 2013-03-08T09:40:30.513 に答える