Я был в похожей ситуации, и в моем случае было проще начать с нуля, то есть добавить каждое поле вручную.Прежде чем я это сделал, я посмотрел, как Excel управляет этими соединениями, и поместил соответствующие (и я нахожу selfexplanitory) методы в следующем примере (в коде предполагается, что есть рабочий лист Tabelle1 со списком excel и двумя связанными с XML связями).хранится в ячейках A1 и B1 и далее в схеме действителен XPath для / dataroot / Projekte / ID - при этом, соответственно, измените его, чтобы опробовать).
Итак, я предположим с помощью этих методов / функций вы сможете
- добавить свою вторую (новую) схему, а затем
- прочитать всю соответствующую информацию, как показано ниже, т.е. прочитать XPathв поле старой схемы,
- удалите старую ссылку на XPath и
- добавьте ее снова для этой ячейки, используя новую схему.
НО я не пробовалэто сам (потому что, как я уже говорил в моем примере, это было всего 9 полей / ячеек и 2 таблицы)
Sub mainExcelSchemaExamples()
' View Inferred (or explicitly inserted) Schema
Dim myxmlmap As XmlMap
Dim myXMLSchemaString As String
Set myxmlmap = ActiveWorkbook.XmlMaps(1)
myXMLSchemaString = ActiveWorkbook.XmlMaps(1).Schemas(1).XML
Debug.Print myXMLSchemaString
' Show XPath
Dim mySheet As Worksheet
Set mySheet = ActiveWorkbook.Sheets("Tabelle1")
' From a List
Debug.Print mySheet.ListObjects(1).ListColumns(2).XPath.Map, _
mySheet.ListObjects(1).ListColumns(2).XPath
' Single field
Debug.Print mySheet.Range("A1").XPath.Map, mySheet.Range("A1").XPath
Debug.Print mySheet.Range("B1").XPath.Map, mySheet.Range("B1").XPath
' Add XPath (and XML-Map)
mySheet.Range("A2").XPath.SetValue Map:=myxmlmap, XPath:="/dataroot/Projekte/ID"
End Sub
Надеюсь, это поможет в качестве отправной точки.
С уважением, Андреас