使用VB.NET检索Excel Addin中的CustomXMLParts

我需要一点帮助检索存储在一个使用VB.NET的Excel插件CustomXMLPart中的值。 我已经search,并没有find很多的细节。 从我发现的,我有的代码应该工作。 起初,我认为我的xml部分没有被添加,所以在会话中保持不变,但是在(3)之前和之后(4)添加我的自定义xml部分,并显示了CustomXMLParts集合的数量,count增加了一个。 我也在打开保存的Excel工作簿时显示了计数,并且在将我的CustomXMLPart添加到集合后,数字(4)也是相同的。 以下是相关的代码。 任何帮助将不胜感激。 需要更多的信息只是让我知道。

在Excel插件中,我有一个popup窗口,我要求用户input,这是我需要坚持的信息。 在后面的代码中,这是我创buildxml并添加到集合中的地方。

码:

Dim workbook As Excel.Workbook = Globals.ThisAddIn.Application.ActiveWorkbook Dim xml As String xml = "<?xml version=""1.0"" encoding=""utf-8"" ?>" _ & "<refreshViewPointData xmlns=""http://refreshviewpointdata.com"">" _ & "<dataReference>" _ & "<system>" & cboSystem.Text & "</system>" _ & "<library>" & cboLibraries.Text & "</library>" _ & "<view>" & txtObject.Text & "</view>" _ & "<headers>" & chkInclColumnHdrs.Checked.ToString() & "</headers>" _ & "<numOfRecords>" & txtRowCount.Text & "</numOfRecords>" _ & "<reference>" & txtReference.Text & "</reference>" _ & "</dataReference>" _ & "</refreshViewPointData>" workbook.CustomXMLParts.Add(xml, System.Type.Missing) 

在ThisAddIn.vb文件的ThisAddIn_Startup()方法是我尝试检索CustomXMLPart的地方。 我从ThisAddIn_Startup()调用RetrieveCustomXMLPart()方法。

RetrieveCustomXMLParts()的代码:

  Dim parts As Microsoft.Office.Core.CustomXMLParts parts = Application.ActiveWorkbook.CustomXMLParts.SelectByNamespace("http://refreshviewpointdata.com") If parts.Count > 0 Then RefreshData(parts.ToString()) End If 

RefreshData()的代码:

  Dim r As New RibbonViewPoint Dim viewXMLPart As New XmlDocument Dim system, library, sObject, reference As String Dim headers As Boolean Dim numRecords As Integer 'Load the xml from the string. viewXMLPart.LoadXml(part) 'Retrieve the values from the xml document. system = viewXMLPart.SelectSingleNode("/dataReference/system").Value library = viewXMLPart.SelectSingleNode("/dataReference/library").Value sObject = viewXMLPart.SelectSingleNode("/dataReference/view").Value headers = CType(viewXMLPart.SelectSingleNode("/dataReference/headers").Value, Boolean) numRecords = CType(viewXMLPart.SelectSingleNode("/dataReference/numOfRecords").Value, Integer) reference = viewXMLPart.SelectSingleNode("/dataReference/reference").Value 'Call method to run the object to refresh the data. r.RunSelectedObject(system, library, sObject, headers, reference, numRecords) 

在RetrieveCustomXMLPart()方法中,SelectByNamespace()方法没有返回我的CustomXMLPart,它显然和我传入的命名空间具有相同的名称空间。任何人都知道什么是错的?

另外,如果有人对别的东西有什么看法,我也不明白那也会很棒。 在RefreshData()方法中,我将viewXMLPartvariables作为XMLDocument加载数据并从中获取数据。 之前我把它定义为“Dim viewXMLPart As New Microsoft.Office.Core.CustomXMLPart”,它不断给我一个语法错误,说''Microsoft.Office.Core.CustomXMLPartClass.Friend Sub New()'是不可访问的这个背景因为是朋友。“

谢谢!!!

find了解决办法。 下面是什么工作。

  Dim workbook = Application.ActiveWorkbook Dim customXMLParts = workbook.CustomXMLParts.SelectByNamespace("urn:viewpoint-refresh") Dim customXMLPart = customXMLParts.Cast(Of CustomXMLPart)().FirstOrDefault()