XML – расширяемый вид языка разметки Markup Language. Внутри файла с таким расширением могут храниться базы данных, настройки приложений, данные программных комплектов и другая информация. Подобные документы имеют широкое распространение среди пользователей, поэтому вопрос, как открыть XML, возникает достаточно часто.
Внутри XML-документа находится текстовая информация, поэтому для его просмотра в читаемом виде не требуется платное программное обеспечение. Можно воспользоваться браузером, любым текстовым редактором, встроенным в Windows или от сторонних разработчиков, или специальными программами для работы с форматом XML.
В составе Windows изначально есть программа, которая умеет работать с любым текстом – Блокнот. Найти её можно в списке стандартных приложений в меню «Пуск». Вместе с ним предустанавливается еще один текстовый редактор – WordPad. Его также можно использовать для просмотра документов с расширением XML.
Если щелкнуть по XML-файлу правой кнопкой, то сразу под пунктом «Открыть» будет строка «Изменить». При нажатии на неё содержимое документа отобразится в Блокноте. Если так открыть файл не получается, или вы хотите использовать для просмотра WordPad, раскройте меню «Открыть с помощью».
Для чтения и редактирования XML-документов можно использовать и блокноты от сторонних разработчиков: например, NotePad++. В нем реализована подсветка синтаксиса, что может показаться удобным при редактировании файла.
Вместо Блокнота, WordPad и других подобных программ можно использовать приложения из пакета Microsoft Office – Word и Excel.
Минус Word в том, что в нем тяжело редактировать XML. Поэтому если вы хотите изменить какие-то данные, то лучше использовать Excel.
Если вместо пакета приложений Microsoft Office на компьютере установлена библиотека приложений OpenOffice, то ничего страшного: открыть XML можно через OpenOffice Calc, аналог Excel.
Если необходимо не просто увидеть содержимое таблиц, а еще и отредактировать их, то рекомендуется применять специальный софт, разработанный для работы с форматом XML. Можно использовать следующие редакторы:
Программы отличаются предоставляемыми возможностями: в одних есть функция XSLT трансформации для преобразования XML-документов, подсказки в виде выделенных участков кода; другие предлагают только просмотр и минимальное редактирование.
Выбор зависит от потребностей и навыков пользователя, так как софт является специализированным. Однако скачать перечисленные программы можно бесплатно.
Если на компьютере вдруг не оказалось ни одного текстового редактор, или XML не открывается в читаемом виде, можно воспользоваться браузером или посмотреть содержимое файла онлайн.
Все современные браузеры поддерживают чтение формата XML. Однако нужно понимать, что раз в документе нет сведений о том, как отображать данные, веб-обозреватели показывают их «как есть». Чтобы использовать для открытия браузер (на примере Chrome):
Аналогичным образом запуск выполняется через другие браузеры. В обозревателе откроется новая вкладка, внутри которой отобразится содержимое документа XML.
В Mozilla Forefox можно открыть файл другим способом:
Если файл поврежден, то браузер при попытке открыть документ может вывести сообщение об ошибке. В таком случае рекомендуется воспользоваться одним из редакторов XML, указанных выше.
XML является одним из самых распространенных форматов для хранения данных и обмена ими между различными приложениями. С данными работает и программа Microsoft Excel, поэтому очень актуальным является вопрос конвертации файлов из стандарта XML в форматы Excel. Выясним, как произвести эту процедуру различными способами.
XML-файлы написаны на специальном языке разметки чем-то похожим на HTML веб-страниц. Поэтому у этих форматов довольно сходная структура. В то же время, Эксель – это в первую очередь программа, имеющая несколько «родных» форматов. Самые известные из них: Книга Excel (XLSX) и Книга Excel 97 – 2003 (XLS). Выясним основные способы конвертации файлов XML в эти форматы.
Программа Excel отлично работает с файлами формата XML. Она может открывать их, изменять, создавать, сохранять. Поэтому самый простой вариант поставленной перед нами задачи — это открыть данный объект и сохранить его через интерфейс приложения в виде документов XLSX или XLS.
На этом процедура конвертации файла XML в формат Excel через интерфейс программы окончена.
Вышеописанный способ подходит только для файлов XML с самой простой структурой. Более сложные таблицы при конвертации таким способом могут быть переведены некорректно. Но, существует ещё один встроенный инструмент Excel, который поможет корректно произвести импорт данных. Он расположен в «Меню разработчика» , которое по умолчанию отключено. Поэтому, прежде всего, его нужно активировать.
Таким образом, конвертация в нужном для нас направлении будет совершена с максимально корректным преобразованием данных.
Тем пользователям, у которых по какой-то причине не установлена на компьютере программа Эксель, но нуждающимся в срочном преобразовании файла из формата XML в EXCEL, можно воспользоваться одним из множества специализированных онлайн-сервисов для конвертации. Одним из наиболее удобных сайтов подобного типа является Convertio.
Данный вариант может послужить хорошей подстраховкой на случай неимения доступа к стандартным инструментам для переформатирования по данному направлению.
Как видим, в самом Экселе есть встроенные инструменты, позволяющие преобразовать файл формата XML в один из «родных» форматов этой программы. Простейшие экземпляры можно легко конвертировать через обычную функцию «Сохранить как…». Для документов с более сложной структурой существует отдельная процедура преобразования через импорт. Те пользователи, которые по какой-либо причине не могут воспользоваться данными инструментами, имеют возможность выполнить задачу с помощью специализированных онлайн-сервисов для конвертации файлов.
Те, кто владеет замечательной программой TextKit, или по крайней мере слышали о ней, (кто не слышал, срочно ) должны были заметить в числе ее возможностей разбор XML-документов в любой шаблон. Т.е, если у нас есть XML документ, мы без проблем стряпаем сайт при помощи ТекстКита.
Остается одна маленькая проблема, как получить этот XML. В действительности, для целей создания сайта можно брать готовые документы различных партнерок, типа МиксМаркета или Озона . Но про них как-нибудь в другой раз. Я расскажу, как получить XML из обычной XLS-таблицы. Фактически, это формат MS Excel.
Владение этим знанием позволит нам делать сайты при помощи ТекстКита из любых баз в Экселе. Работать будем в 2007-м офисе.
1) Загружаем надстройку для работы с XML отсюда .
2) Заходим в главное меню экселя, параметры.
3) В открывшемся меню выбираем «Надстройка». Ищем пункт «Управление», выбираем «Надстройки Excel» и жмем «Перейти»:
4) В открывшемся окне через «Обзор» выбираем нужный нам файл XmlTools.xla , добавляем его в панель и активируем, поставив галочку напротив него.
По умолчанию этот файл хранится в следующей папке на жестком диске:
\Office Samples\OfficeExcel2003XMLToolsAddin.
5) Если вы все сделали правильно, то в «Параметрах» в разделе «Надостройки» вы увидите установленное расширение:
Теперь берем наши данные для создания XML документа и работаем с ними.
1) Жмем на кнопку на панели. Выбираем первый пункт:
2) В появившемся окне выбираем yes/no если наши данные содержат / не содержат заголовка, в моем случае содержат, потому переставляю галочку на yes. Здесь же зажимаем маленькую «пипку», чтобы выбрать ячейки с данными:
3) Протягиванием выбираем данные для создания XML — документа. Отжимаем «пипку» и жмем ОК.
Если все сделали верно, то табличка станет сине-белой, и менюшка здорово изменится:
Ну, уже почти все. Теперь идем в параметры сохранения документа и там выбираем XML — данные.
Собственно, вот и все! Мы получили на выходе готовый XML-документ, который теперь без проблем можем разобрать в парсере . Но про это как-нибудь в другой раз 🙂
Присвоение диапазона ячеек объектной переменной в VBA Excel. Адресация ячеек в переменной диапазона и работа с ними. Определение размера диапазона. Примеры.
Чтобы переменной присвоить диапазон ячеек, она должна быть объявлена как Variant , Object или Range :
Dim myRange1 As Variant Dim myRange2 As Object Dim myRange3 As Range
Чтобы было понятнее, для чего переменная создана, объявляйте ее как Range .
Присваивается переменной диапазон ячеек с помощью оператора Set :
Set myRange1 = Range("B5:E16") Set myRange2 = Range(Cells(3, 4), Cells(26, 18)) Set myRange3 = Selection
В выражении Range(Cells(3, 4), Cells(26, 18)) вместо чисел можно использовать переменные.
Для присвоения диапазона ячеек переменной можно использовать встроенное диалоговое окно , которое позволяет выбрать диапазон на рабочем листе для дальнейшей работы с ним.
К ячейкам присвоенного диапазона можно обращаться по их индексам, а также по индексам строк и столбцов, на пересечении которых они находятся.
Индексация ячеек в присвоенном диапазоне осуществляется слева направо и сверху вниз, например, для диапазона размерностью 5х5:
1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 |
Индексация строк и столбцов начинается с левой верхней ячейки. В диапазоне этого примера содержится 5 строк и 5 столбцов. На пересечении 2 строки и 4 столбца находится ячейка с индексом 9. Обратиться к ней можно так:
"обращение по индексам строки и столбца myRange.Cells(2, 4) "обращение по индексу ячейки myRange.Cells(9)
Обращаться в переменной диапазона можно не только к отдельным ячейкам, но и к части диапазона (поддиапазону), присвоенного переменной, например,
обращение к первой строке присвоенного диапазона размерностью 5х5:
MyRange.Range("A1:E1") "или myRange.Range(Cells(1, 1), Cells(1, 5))
и обращение к первому столбцу присвоенного диапазона размерностью 5х5:
MyRange.Range("A1:A5") "или myRange.Range(Cells(1, 1), Cells(5, 1))
Работать с диапазоном в переменной можно точно также, как и с диапазоном на рабочем листе. Все свойства и методы объекта Range действительны и для диапазона, присвоенного переменной. При обращении к ячейке без указания свойства по умолчанию возвращается ее значение. Строки
MsgBox myRange.Cells(6) MsgBox myRange.Cells(6).Value
равнозначны. В обоих случаях информационное сообщение MsgBox выведет значение ячейки с индексом 6.
Важно: если вы планируете работать только со значениями, используйте переменные , код в них работает значительно быстрее.
Преимущество работы с диапазоном ячеек в объектной переменной заключается в том, что все изменения, внесенные в переменной, применяются к диапазону (который присвоен переменной) на рабочем листе.
Скопируйте процедуру в программный модуль и запустите ее выполнение.
Sub Test1() "Объявляем переменную Dim myRange As Range "Присваиваем диапазон ячеек Set myRange = Range("C6:E8") "Заполняем первую строку "Присваиваем значение первой ячейке myRange.Cells(1, 1) = 5 "Присваиваем значение второй ячейке myRange.Cells(1, 2) = 10 "Присваиваем третьей ячейке "значение выражения myRange.Cells(1, 3) = myRange.Cells(1, 1) _ * myRange.Cells(1, 2) "Заполняем вторую строку myRange.Cells(2, 1) = 20 myRange.Cells(2, 2) = 25 myRange.Cells(2, 3) = myRange.Cells(2, 1) _ + myRange.Cells(2, 2) "Заполняем третью строку myRange.Cells(3, 1) = "VBA" myRange.Cells(3, 2) = "Excel" myRange.Cells(3, 3) = myRange.Cells(3, 1) _ & " " & myRange.Cells(3, 2) End Sub
Обратите внимание, что ячейки диапазона на рабочем листе заполнились так же, как и ячейки в переменной диапазона, что доказывает их непосредственную связь между собой.
Продолжаем работу с тем же диапазоном рабочего листа «C6:E8»:
Sub Test2() "Объявляем переменную Dim myRange As Range "Присваиваем диапазон ячеек Set myRange = Range("C6:E8") "Первую строку выделяем жирным шрифтом myRange.Range("A1:C1").Font.Bold = True "Вторую строку выделяем фоном myRange.Range("A2:C2").Interior.Color = vbGreen "Третьей строке добавляем границы myRange.Range("A3:C3").Borders.LineStyle = True End Sub
Опять же, обратите внимание, что все изменения форматов в присвоенном диапазоне отобразились на рабочем листе, несмотря на то, что мы непосредственно с ячейками рабочего листа не работали.
Значения ячеек диапазона, присвоенного переменной, передаются в другой диапазон рабочего листа с помощью оператора присваивания.
Скопировать и вставить диапазон полностью со значениями и форматами можно при помощи метода Copy , указав место вставки (ячейку) на рабочем листе.
В примере используется тот же диапазон, что и в первых двух, так как он уже заполнен значениями и форматами.
Sub Test3() "Объявляем переменную Dim myRange As Range "Присваиваем диапазон ячеек Set myRange = Range("C6:E8") "Присваиваем ячейкам рабочего листа "значения ячеек переменной диапазона Range("A1:C3") = myRange.Value MsgBox "Пауза" "Копирование диапазона переменной "и вставка его на рабочий лист "с указанием начальной ячейки myRange.Copy Range("E1") MsgBox "Пауза" "Копируем и вставляем часть "диапазона из переменной myRange.Range("A2:C2").Copy Range("E11") End Sub
Информационное окно MsgBox добавлено, чтобы вы могли увидеть работу процедуры поэтапно, если решите проверить ее в своей книге Excel.
При получении диапазона с помощью метода и присвоении его переменной диапазона, бывает полезно узнать его размерность. Это можно сделать следующим образом:
Sub Test4() "Объявляем переменную Dim myRange As Range "Присваиваем диапазон ячеек Set myRange = Application.InputBox("Выберите диапазон ячеек:", 8) "Узнаем количество строк и столбцов MsgBox "Количество строк = " & myRange.Rows.Count _ & vbNewLine & "Количество столбцов = " & myRange.Columns.Count End Sub
Запустите процедуру, выберите на рабочем листе Excel любой диапазон и нажмите кнопку «OK». Информационное сообщение выведет количество строк и столбцов в диапазоне, присвоенном переменной myRange .
В VBA, как и в любом другом языке программирования, переменные и константы используются для хранения каких-либо значений. Как и следует из названия, переменные могут изменяться, константы же хранят фиксированные значения.
Например, константа Pi хранит значение 3,14159265… Число “Пи” не будет изменяться в ходе выполнения программы, но все же хранить такое значение удобнее как константу.
В то же время мы можем использовать переменную sVAT_Rate для хранения ставки НДС на покупаемые товары. Величина переменной sVAT_Rate может изменяться в зависимости от того, что за товар приобретается.
Все переменные и константы относятся к определённому типу данных. В таблице ниже приведены типы данных, используемые в VBA, с описанием и диапазоном возможных значений:
Тип данных | Размер | Описание | Диапазон значений |
---|---|---|---|
Byte | 1 байт | Положительные целые числа; часто используется для двоичных данных | от 0 до 255 |
Boolean | 2 байта | Может принимать значения либо True, либо False | True или False |
Integer | 2 байта | Целые числа (нет дробной части) | от -32 768 до +32 767 |
Long | 4 байта | Большие целые числа (нет дробной части) | от -2 147 483 648 до +2 147 483 647 |
Single | 4 байта | Число с плавающей точкой одинарной точности | от -3.4e38 до +3.4e38 |
Double | 8 байт | Число с плавающей точкой двойной точности | от -1.8e308 до +1.8e308 |
Currency | 8 байт | Число с плавающей точкой, с фиксированным количеством десятичных разрядов | от -922 337 203 685 477.5808 до +922 337 203 685 477.5807 |
Date | 8 байт | Дата и время – данные типа Date представлены числом с плавающей точкой. Целая часть этого числа выражает дату, а дробная часть – время | от 1 Января 100 до 31 Декабря 9999 |
Object | 4 байта | Ссылка на объект | Любая ссылка на объект |
String | изменяется | Набор символов. Тип String может иметь фиксированную или изменяющуюся длину. Чаще используется с изменяющейся длиной | Фиксированной длины – приблизительно до 65 500 символов. Переменной длины – приблизительно до 2 миллиардов символов |
Variant | изменяется | Может содержать дату, число с плавающей точкой или строку символов. Этот тип используют в тех случаях, когда заранее не известно, какой именно тип данных будет введён | Число – Double, строка – String |
Очевидно, что пользуясь приведённой выше таблицей и правильно выбирая тип данных, можно использовать память более экономно (например, выбрать тип данных Integer вместо Long или Single вместо Double ). Однако, используя более компактные типы данных, нужно внимательно следить за тем, чтобы в коде не было попыток уместить в них не соразмерно большие значения.
Примечание переводчика:
Говоря о переменных в VBA, стоит упомянуть ещё один очень важный момент. Если мы объявляем переменную, но не присваиваем ей какое-либо значение, то она инициализируется значением по умолчанию:
текстовые строки – инициализируются пустыми строками;
числа – значением 0;
переменные типа Boolean
– False;
даты – 30 декабря 1899.
Прежде чем использовать переменную или константу, её нужно объявить. Для этого в макрос добавляют вот такую простую строку кода:
Dim Имя_Переменной As Тип_Данных
В показанной выше строке кода Имя_Переменной – это имя переменной, которая будет использована в коде, а Тип_Данных – это один из типов данных из таблицы, приведённой чуть ранее в этой статье. Например:
Dim sVAT_Rate As Single Dim i As Integer
Аналогично объявляются константы, но при объявлении констант обязательно сразу указывается их значение. Например, вот так:
Const iMaxCount = 5000 Const iMaxScore = 100
Объявлять переменные в Excel не обязательно. По умолчанию все введённые, но не объявленные переменные в Excel будут иметь тип Variant и смогут принять как числовое, так и текстовое значение.
Таким образом, программист в любой момент сможет использовать новую переменную (даже если она не была объявлена), и Excel будет рассматривать её как переменную типа Variant . Однако, есть несколько причин, почему так поступать не следует:
В связи с этим, неверный тип данных желательно обнаруживать и как можно раньше исправлять такие ошибки в коде. По этим причинам при написании макроса VBA рекомендуется объявлять все переменные.
Оператор Option Explicit заставляет объявлять все переменные, которые будут использованы в коде VBA, и при компиляции выделяет все не объявленные переменные как ошибки (прежде чем будет запущено выполнение кода). Применить этот оператор не сложно – просто запишите в самом верху файла VBA такую строку:
Option Explicit
Если хотите всегда вставлять Option Explicit в начало каждого нового созданного модуля VBA, то это можно делать автоматически. Для этого необходимо включить параметр Require Variable Declaration в настройках редактора VBA.
Это делается так:
При включенном параметре строка Option Explicit будет автоматически вставляться в начало каждого нового созданного модуля.
Каждая объявленная переменная или константа имеет свою ограниченную область действия, то есть ограниченную часть программы, в которой эта переменная существует. Область действия зависит от того, где было сделано объявление переменной или константы. Возьмём, к примеру, переменную sVAT_Rate , которая используется в функции Total_Cost . В следующей таблице рассмотрены два варианта области действия переменной sVAT_Rate , объявленной в двух различных позициях в модуле:
Option Explicit Dim sVAT_Rate As Single Function Total_Cost() As Double ... End Function |
Если переменная sVAT_Rate
объявлена в самом начале модуля, то областью действия этой переменной будет весь модуль (т.е. переменная sVAT_Rate
будет распознаваться всеми процедурами в этом модуле).
Следовательно, если в функции Total_Cost переменной sVAT_Rate будет присвоено некоторое значение, то следующая функция, выполняемая в пределах этого же модуля, будет использовать переменную sVAT_Rate с этим же значением. Однако, если будет вызвана какая-то функция, расположенная в другом модуле, то для неё переменная sVAT_Rate будет не известна. |
Option Explicit Function Total_Cost() As Double Dim sVAT_Rate As Single ... End Function |
Если переменная sVAT_Rate
объявлена в начале функции Total_Cost
, то её область действия будет ограничена только этой функцией (т.е. в пределах функции Total_Cost
, можно будет использовать переменную sVAT_Rate
, а за её пределами – нет).
При попытке использовать sVAT_Rate в другой процедуре, компилятор VBA сообщит об ошибке, так как эта переменная не была объявлена за пределами функции Total_Cost (при условии, что использован оператор Option Explicit ). |
В показанном выше примере переменная объявлена на уровне модуля при помощи ключевого слова Dim . Однако, бывает необходимо, чтобы объявленными переменными можно было пользоваться в других модулях. В таких случаях для объявления переменной вместо ключевого слова Dim нужно использовать ключевое слово Public .
Кстати, для того, чтобы объявить переменную на уровне модуля, вместо ключевого слова Dim можно использовать ключевое слово Private , которое укажет на то, что данная переменная предназначена для использования только в текущем модуле.
Для объявления констант также можно использовать ключевые слова Public и Private , но не вместо ключевого слова Const , а вместе с ним.
В следующих примерах показано использование ключевых слов Public и Private в применении к переменным и к константам.