Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2013, 12:15   #1
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию Редактирование XML файла через vba

Искал по форуму, но не нашел конкретно редактирование через VBA.

Задача следущея, нужно найти поле в определенном xml файле и
1) отредактировать данные
2) принять данные в vba

Пример файла:

Код HTML:
- <car>
- <!-- марка автомобілю
  --> 
  <brand>GEELY</brand> 
- <!-- модель автомобілю
  --> 
  <model>MK</model> 
- <!-- рік випуску автомобіля
  --> 
  <year>2013</year> 
- <!-- модифікація автомобіля
  --> 
  <modification>не определен</modification> 
- <!-- колір автомобіля
  --> 
  <color>не определен</color> 
- <!-- вартість автомобіля
  --> 
  <price>79900.0000</price> 
- <!-- объем двигателя авто
  --> 
  <engine_size>1498</engine_size> 
- <!-- вартість додаткового обладнання (ГБО)
  --> 
  <priceGBO>0.0000</priceGBO> 
- <!-- страхування з урахуванням зносу
  --> 
  <deterioration>0</deterioration> 
- <!-- страхування таксі
  --> 
  <taxy>0</taxy> 
- <!-- автомобіль в аренді
  --> 
  <lease>0</lease> 
  </car>
На пример нужно заменить значение находящееся в поле
Код HTML:
<brand>GEELY</brand>
помогите плиз с кодом на замену и принятие данных с поля, также открыть и сохранить файл.

Заранее благодарен
sasha_prof вне форума Ответить с цитированием
Старый 10.06.2013, 12:22   #2
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

Сори что создал в Access.
как перенести в excel?
sasha_prof вне форума Ответить с цитированием
Старый 11.06.2013, 01:02   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от sasha_prof Посмотреть сообщение
Сори что создал в Access.
как перенести в excel?
А зачем?
XML он и в африке XML.
Не забудьте добавить ссылку на MSXML

Код:
Public Sub Zamena()
        Dim Arr
        Dim xmlDoc As MSXML2.DOMDocument30
        Set xmlDoc = New DOMDocument30
        xmlDoc.async = False
        xmlDoc.validateOnParse = False
        strFilePath = "Путь к вашему файлу XML"
        xmlDoc.Load (strFilePath)
        Dim objNode As IXMLDOMNode
        Dim objListOfNodes As IXMLDOMNodeList
        xmlDoc.setProperty "SelectionLanguage", "XPath"
      
        XPath = "//brand"

        Set objListOfNodes = xmlDoc.SelectNodes(XPath)


        For Each objNode In objListOfNodes
              If objNod.Text = "GEELY" Then
                objNode.Text = "ВАСЯ"

              End If
        Next
        xmlDoc.Save strFilePath
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 11.06.2013, 17:50   #4
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

1) при запуске макроса выдает ошибку на
Код HTML:
MSXML2.DOMDocument30
2) Также я вижу с макроса что он ищет запись "Geely" во всех полях "//brand".

Просто XML может иметь 2 машины. например такая структура XML

Код HTML:
- <car>
- <!-- марка автомобілю
  --> 
  <brand>GEELY</brand> 
- <!-- модель автомобілю
  --> 
  <model>ASTRA</model> 
- <!-- рік випуску автомобіля
  --> 
  <year>2013</year> 
- <!-- модифікація автомобіля
  --> 
  <modification /> 
- <!-- колір автомобіля
  --> 
  <color /> 
- <!-- вартість автомобіля
  --> 
  <price>195000.00</price> 
- <!-- объем двигателя авто
  --> 
  <engine_size>1362</engine_size> 
- <!-- вартість додаткового обладнання (ГБО)
  --> 
  <priceGBO>0.00</priceGBO> 
- <!-- страхування з урахуванням зносу
  --> 
  <deterioration>1</deterioration> 
- <!-- страхування таксі
  --> 
  <taxy>0</taxy> 
- <!-- автомобіль в аренді
  --> 
  <lease>0</lease> 


- <car1>
- <!-- марка автомобілю
  --> 
  <brand>GEELY</brand> 
- <!-- модель автомобілю
  --> 
  <model>ASTRA</model> 
- <!-- рік випуску автомобіля
  --> 
  <year>2013</year> 
- <!-- модифікація автомобіля
  --> 
  <modification /> 
- <!-- колір автомобіля
  --> 
  <color /> 
- <!-- вартість автомобіля
  --> 
  <price>195000.00</price> 
- <!-- объем двигателя авто
  --> 
  <engine_size>1362</engine_size> 
- <!-- вартість додаткового обладнання (ГБО)
  --> 
  <priceGBO>0.00</priceGBO> 
- <!-- страхування з урахуванням зносу
  --> 
  <deterioration>1</deterioration> 
- <!-- страхування таксі
  --> 
  <taxy>0</taxy> 
- <!-- автомобіль в аренді
  --> 
  <lease>0</lease> 
Как видно даный файл содержит 2-а блока <car> и <car1>. И в обеих GEELY.

Возможно ли как то ссылаться еще на подблоки <car> и <car1>?
sasha_prof вне форума Ответить с цитированием
Старый 11.06.2013, 21:42   #5
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

файл в котором ошибка
sasha_prof вне форума Ответить с цитированием
Старый 11.06.2013, 21:45   #6
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

файл с ошибкой
Вложения
Тип файла: rar 1111.rar (8.9 Кб, 26 просмотров)
sasha_prof вне форума Ответить с цитированием
Старый 11.06.2013, 22:33   #7
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

Разобрался. Включил в настройках
sasha_prof вне форума Ответить с цитированием
Старый 11.06.2013, 23:05   #8
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
XPath = "//car1/brand"
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 11.06.2013, 23:10   #9
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

как прочитать данные с поля?

Так не получается

znachenie=objNod.Text
sasha_prof вне форума Ответить с цитированием
Старый 12.06.2013, 01:22   #10
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
Public Sub Zamena()
svFile = Worksheets("Лист1").Cells(1, 1)
Set oXMLDoc = CreateObject("MSXML2.DOMDocument")
        Dim xmlDoc As MSXML2.DOMDocument30
        Set xmlDoc = New DOMDocument30
        xmlDoc.async = False
        xmlDoc.validateOnParse = False
        strFilePath = Worksheets("Лист1").Cells(1, 1)
        
        xmlDoc.Load (strFilePath)
        Dim objNode As IXMLDOMNode
        Dim objListOfNodes As IXMLDOMNodeList
        xmlDoc.setProperty "SelectionLanguage", "XPath"
        XPath = "//car/brand"
        Set objListOfNodes = xmlDoc.SelectNodes(XPath)
        For Each objNode In objListOfNodes
              If objNode.FirstChild.NodeValue = "GEELY" Then
                objNode.FirstChild.NodeValue = "ВАСЯ"
              End If
        Next
        xmlDoc.Save strFilePath
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование XML файла в HTML форме LENA_M JavaScript, Ajax 5 19.01.2013 01:23
Появляются лишние 000 при открытии .xls файла через vba?! budda999 Microsoft Office Excel 3 07.12.2011 22:00
Редактирование XML pa6kevi4 Общие вопросы .NET 1 04.06.2010 12:01
XML редактирование. BlincAttack Общие вопросы .NET 2 10.12.2009 10:23
Редактирование XML из PHP. mikhea PHP 7 04.11.2009 15:13