2012-03-14 74 views
0

我想弄清楚如何在OneNote 2010中添加笔记本。我找不到任何代码示例,显示如何使用UpdateHiearchy API添加新笔记本。我正在尝试从VB6应用程序执行此操作。我是从VB使用xml的新手。 代码如下:使用VB代码中的UpdateHiearchy在OneNote中创建笔记本

Private Function GetFirstOneNoteNotebookNodes(oneNote As OneNote14.Application) As MSXML2.IXMLDOMNodeList 
    ' Get the XML that represents the OneNote notebooks available. 
    Dim notebookXml As String 
    ' OneNote fills notebookXml with an XML document providing information 
    ' about what OneNote notebooks are available. 
    ' You want all the data and thus are providing an empty string 
    ' for the bstrStartNodeID parameter. 
    oneNote.GetHierarchy "", hsNotebooks, notebookXml, xs2010 

    ' Use the MSXML Library to parse the XML. 
    Dim doc As MSXML2.DOMDocument 
    Set doc = New MSXML2.DOMDocument 

    Dim elem As MSXML2.IXMLDOMElement 

    If doc.loadXML(notebookXml) Then 
     ' Here is search for a notebook that i know is not there.  mvarpAssignment.pClient.Name is a program variable that contains a text name. 
     Set GetFirstOneNoteNotebookNodes = doc.documentElement.selectNodes("//one:Notebook[@name='" & mvarpAssignment.pClient.Name & "']") 
' I test the length for zero to see if anything was returned:   
If GetFirstOneNoteNotebookNodes.Length = 0 Then 
' I want to create a notebook, so i beleive i need to add an element to the xml returned from the GetHiearchy API:   
Set elem = doc.createElement("ROC") 
      doc.documentElement.appendChild elem 
'I print out the xml and i can see the element added at the end of the xml document.    
      Debug.Print doc.XML 

“的下一步将是调用UpdateHiearchy API但我茫然以界河目标i传递到API。我尝试的一切都失败了我显然不明白这一点,但我找不到任何代码示例或描述如何添加笔记本的任何文本。任何帮助或任何链接infomration将不胜感激!

回答

0

我终于得到了这个工作。我有两件事情是错误的,在更新层次结构之前需要定义路径。这需要使用GetSpecialLocation API。此外,属性名称是大小写敏感的,我有骆驼案件而不是小写。我从原始代码发布了其他更改的副本,但对于我的应用程序来说,它只是一个tismore。为有兴趣的人修改代码:

Private Function GetClientOneNoteNotebookNode(oneNote As OneNote14.Application,  ClientName As String) As MSXML2.IXMLDOMNodeList 
Dim notebookXml As String 
Dim doc As MSXML2.DOMDocument 
Dim elem As MSXML2.IXMLDOMElement 
Dim newNotebookPath As String 
Dim defaultNotebookFolder As String 
' OneNote fills notebookXml with an XML document providing information 
' about what OneNote notebooks are available. 
' You want all the data and thus are providing an empty string 
' for the bstrStartNodeID parameter. 
oneNote.GetHierarchy "", hsNotebooks, notebookXml, xs2010 
' Use the MSXML Library to parse the XML. 
Set doc = New MSXML2.DOMDocument 
If doc.loadXML(notebookXml) Then 
Set GetClientOneNoteNotebookNode = doc.documentElement.selectNodes("//one:Notebook[@name='" & ClientName & "']") 
If GetClientOneNoteNotebookNode.Length = 0 Then 
'Get the default location for the notebooks 
oneNote.GetSpecialLocation slDefaultNotebookFolder, defaultNotebookFolder 
newNotebookPath = defaultNotebookFolder + "\\" + ClientName 
'Create new notebook for cleint 
Set elem = doc.createElement("one:Notebook") 
elem.setAttribute "name", ClientName 
elem.setAttribute "path", newNotebookPath 
' add new elelement to the document tree 
doc.documentElement.appendChild elem 
oneNote.UpdateHierarchy doc.XML 
End If 
Else 
Set GetClientOneNoteNotebookNode = Nothing 
End If 
End Function 
相关问题