Переменная рабочего листа будет проходить здесь ... после объявления поменяйте местами каждый экземпляр Sheets("Monthly Status")
с именем переменной (ws
)
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Monthly Status")
If Not RefDate1 Then
ws.Range("K24:K34").ClearContents
Else
ws.Range("K24:K25") = RefDate1 - (7 * 26)
ws.Range("K26") = RefDate1 - (7 * 23)
'and so on......
End If
Я попробовал немного сам:
var MyDoc = XDocument.Load("File1.xml");
MyDoc.Root.Add(XDocument.Load("File2.xml").Root.Elements());
Я не знаю, хорошо ли это или плохо, но это хорошо работает мне :-)
Быть прагматичным, XDocument
по сравнению с XmLDocument
не является бескомпромиссным (если Вы не находитесь на Silverlight) - итак, если XmlDoucument
делает что-то, в чем Вы нуждаетесь, и XDocument
не делает, затем возможно, используют XmlDocument
(с ImportNode
и т.д.).
Тем не менее даже с XDocument
, Вы могли, по-видимому, использовать XNode.ReadFrom
импортировать каждого, затем просто .Add
это к основному набору.
Конечно, если файлы являются большими, XmlReader/XmlWriter
могло бы быть более эффективным..., но более сложным. К счастью, XmlWriter
имеет a WriteNode
метод, который принимает XmlReader
, таким образом, можно перейти первому ребенку в XmlReader
и затем просто разбомбите его к выходному файлу. Что-то как:
static void AppendChildren(this XmlWriter writer, string path)
{
using (XmlReader reader = XmlReader.Create(path))
{
reader.MoveToContent();
int targetDepth = reader.Depth + 1;
if(reader.Read()) {
while (reader.Depth == targetDepth)
{
writer.WriteNode(reader, true);
}
}
}
}
Как обходное решение, Вы могли использовать файл XSL, чтобы объединить XML-файлы и затем преобразовать его к объекту XDocument.