Страницы: 1
RSS
Задать тип XML документа макросом VBA Excel
 
Здравствуйте!

Подскажите пожалуйста, как можно задать тип xml документа: <!DOCTYPE yml_catalog SYSTEM "Yandex.xml">?

Я не могу найти инструкции по использовании данных методов. Может есть возможность подключить их в Excel?

Вот макрос (тоже с этого форума):
Скрытый текст
Изменено: Werty - 06.10.2013 18:23:43
Спокойствие - величайшее проявление силы.
 
Если кто знает, подскажите также пожалуйста как создать структуру xml читабельной - с отступами и переходом на новые строчки.
Спокойствие - величайшее проявление силы.
 
Цитата
Если кто знает, подскажите также пожалуйста как создать структуру xml читабельной - с отступами и переходом на новые строчки
зачем?
открываете созданных XML в браузере, - там видно будет всю структуру

PS: Узнаю свой макрос, но над ним кто-то основательно поработал, наляпав кучу лишних XML.Save xmlpath$ ...

По теме: вбил в яндекс запрос «XML как добавить doctype», и, о чудо,
через 5 секунд нашел готовый код:
Код
Dim doc As New XmlDocument()
        
        'Create a document type node and  
        'add it to the document.
        Dim doctype As XmlDocumentType
        doctype = doc.CreateDocumentType("book", Nothing, Nothing, "<!ELEMENT book ANY>")
        doc.AppendChild(doctype)

неужели так сложно поискать?

ещё вариант: (даже проще)
Код
Private Sub Command1_Click()
Dim dom As DOMDocument30, dctype As IXMLDOMDocumentType
Set dom = New DOMDocument30
dom.loadXML "<?xml version=""1.0"" encoding=""UTF-8""?>" _
& "<?xml-stylesheet type=""text/xsl"" href=""show_book.xsl""?>" _
& "<!DOCTYPE Capability SYSTEM ""c:\obex-capability.dtd"">" _
& "<!--catalog last updated 2000-11-01-->" _
& "<Capability version=""1.0"" />"

End Sub
 
Добрый вечер!

У меня вот тут ошибка вылетала. Вот и не получилось.
Код
Dim doctype As XmlDocumentType
Спокойствие - величайшее проявление силы.
 
И сейчас тоже вылетает ошибка:  
Object doesn't support this property or method (Error 438)
Спокойствие - величайшее проявление силы.
 
Так надо библиотеку подключить для работы с её объектами. Кажись, это Microsoft.xmldom
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Второй метод тоже не работает. Можно показать на примере что я выложил куда нужно воткнуть один из Ваших примеров?
Спокойствие - величайшее проявление силы.
 
Здравствуйте, The_Prist!

Я не нашёл указанной Вами библиотеки. У меня уже подключена была на момент выполнения кода библиотека Microsoft.xml.
Спокойствие - величайшее проявление силы.
 
И всё же - как делать формат записываемых данных при записи в файл?
Спокойствие - величайшее проявление силы.
 
Всё как-то долго стало на форуме с ответами ...  :(
Спокойствие - величайшее проявление силы.
 
Спокойствие - величайшее проявление силы. :)
 
Да похоже, что Doctype вы не создадите в VBA.
Первый пример, предложенный EducatedFool, для .NET
Второй приводит к тому, что DOMDocument30 содержит пустое дерево.
Попытка создать что-либо Set pNode = pDoc.createNode(10, "yml_catalog", ""), (10 - код doctype) приводит к ошибке.
Остаётся только костыль. После записи созданного xml принудительно вставить требуемую строку
Код
Public Sub InsertDocType(ByVal FileName As String)
    Dim fso As Object, pStream As Object, s As String
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set pStream = fso.OpenTextFile(FileName)
    s = pStream.ReadAll: pStream.Close
    Set pStream = fso.CreateTextFile(FileName)
    pStream.Write Replace(s, "<?xml version=""1.0"" encoding=""UTF-8""?>", _
    "<?xml version=""1.0"" encoding=""UTF-8""?><!DOCTYPE yml_catalog SYSTEM ""Yandex.xml"">", Compare:=vbTextCompare)
    pStream.Close
End Sub

Или зацепиться за что-то другое. Успехов.
 
Цитата
Werty: Всё как-то долго стало на форуме с ответами ...
Вот Вы и покажите пример быстродействия.
 
anvg - Спасибо. Попробую. Хотя странно что делать узлы - можно, а тип документа прописать - нет. Про отступы я забуду.

Юрий М! Рад Вас читать! Показать пример быстродействия не смогу - мне помощь нужна, а не я её оказываю.

vikttur! Рад Вас тоже видеть и спасибо что напоминаете о таких мыслях! Я спокойно пост писал, правда правда :)
Спокойствие - величайшее проявление силы.
 
Цитата
Про отступы я забуду.
Если поискать то можно найти. ;)
Страницы: 1
Наверх