Code:
Option Explicit' Verweis auf "Microsoft XML, v6.0" setzen
' add reference to "Microsoft XML, v6.0"
Private Sub SetFontSizeTag()
Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.ActiveDocument
Dim oSheet As Sheet
Set oSheet = oDrawDoc.ActiveSheet
Dim oLeaderNote As LeaderNote
For Each oLeaderNote In oSheet.DrawingNotes.LeaderNotes
Dim objXML As MSXML2.DOMDocument60
Set objXML = New MSXML2.DOMDocument60
' FormattedText um root-Node erweitern
' stellt sicher, das in oberster Ebene nur ein Element existiert (XML-Standard)
Dim sXML As String
sXML = "<root>" & oLeaderNote.FormattedText & "</root>"
Dim oAttr As IXMLDOMAttribute
Dim oStyleOverrideNode As IXMLDOMNode
Dim oTextNode As IXMLDOMNode
Dim oRootNode As IXMLDOMNode
Dim oNode As IXMLDOMNode
Dim oChildNode As IXMLDOMNode
' create StyleOverride node
Set oStyleOverrideNode = objXML.createNode(MSXML2.NODE_ELEMENT, "StyleOverride", "")
'create font size attribute
Set oAttr = objXML.createAttribute("FontSize")
oAttr.Value = "0,3"
'Add the attribute to the node.
Call oStyleOverrideNode.Attributes.setNamedItem(oAttr)
' create XML document or die
If Not objXML.loadXML(sXML) Then 'sXML is the string with XML'
Call MsgBox("Error reading formatted text.", vbCritical, "Add StyleOverride")
Exit Sub
End If
Set oRootNode = objXML.FirstChild
For Each oNode In oRootNode.ChildNodes
Select Case oNode.baseName
Case "Parameter", "Property", "":
Set oTextNode = oNode
Dim oSONode As IXMLDOMNode
Set oSONode = objXML.createNode(MSXML2.NODE_ELEMENT, "StyleOverride", "")
Set oAttr = objXML.createAttribute("FontSize")
oAttr.Value = "0,3"
' add the attribute to the node.
Call oSONode.Attributes.setNamedItem(oAttr)
' replace original node with StyleOverride Node
Call oNode.ParentNode.replaceChild(oSONode, oNode)
' append original node to StyleOverride node
Call oSONode.appendChild(oTextNode)
Case "StyleOverride":
' set FontSize attribute
Dim oNodeAttr As IXMLDOMAttribute
Set oNodeAttr = oNode.Attributes.getNamedItem("FontSize")
If oNodeAttr Is Nothing Then
Set oAttr = objXML.createAttribute("FontSize")
oAttr.Value = "0,3"
Call oNode.Attributes.setNamedItem(oAttr)
Else
oNodeAttr.Value = "0,3"
End If
End Select
Next
'write back XML string to LeaderNote
'remove added root note tag and CRLF at line end
sXML = Replace(objXML.XML, "<root>", "")
sXML = Replace(sXML, "</root>", "")
sXML = Replace(sXML, Chr(13) & Chr(10), "")
oLeaderNote.FormattedText = sXML
Next
End Sub