Сообщения

Сообщения за июнь, 2015

Построение сводной таблицы

В разработке.... Рассмотрим код построения сводной таблицы по файлу реестр документов ГМ - поле строк - дата, поле столбцов - тип операции, поле данных - операция суммирования. Sub CreatePivotTable() ActiveWorkbook.Worksheets.Add after:=Worksheets("Sheet1") Worksheets(2).Name = "Сводная" 'Объявляем переменные     Dim objTable As PivotTable, objField As PivotField     'Выбираем лист и первую ячейку в нем по которому будет строиться сводная     ActiveWorkbook.Sheets("Sheet1").Select     Range("A1").Select     'Создаем сводную     Set objTable = ActiveWorkbook.Sheets("Sheet1").PivotTableWizard     'Определяем Поле строк и Поле столбцов     'Поле строк (по заголовку нужного столбца)     Set objField = objTable.PivotFields("Дата операции")     objField.Orientation = xlRowField     'Поле столбца (по заголовку нужного столбца)     Set objField = objTable.PivotFields("Название типа опер

Простой фильтр

Задача одиночной фильтрации в VBA очень просто решается через автофильтр с копированием. Рассмотрим код: Sub Filt() With Worksheets("Sheet1")             'Определяем необходимый диапазон             .Range("A1:L65536").AutoFilter             'Устанавливаем фильтр по 9 столбцу равно Торговый зал             .Range("A1:L65536").AutoFilter Field:=9, Criteria1:="Торговый зал" End With 'Вставляем новый лист после листа Sheet1 ActiveWorkbook.Worksheets.Add after:=Worksheets("Sheet1") 'Даем ему имя Торговый зал Worksheets(2).Name = "Торговый зал" 'Копируем отфильтрованный диапазон в первую ячейку вставленного листа Worksheets("Sheet1").Range("A1:L65536").Copy Worksheets("Торговый зал").Range("A1") 'Чуть расширим макрос - теперь мы хотим удалить лист Sheet1 (или первый лист) 'Но так как он содержит данные. чтобы не получить лишних подтвержающих сооб

Проверка тот ли файл открыт

Подобная проверка в VBA очень похожа на проверку в StarBasic. Рассмотрим код: Sub Prov() 'Устанавливаем ячейку для проверки - лист 1 ячейка F1 oCelles = ActiveWorkbook.Worksheets(1).Range("F1") 'Устанавливаем поисковую фразу If oCelles <> "Название контрагента" Then 'Сообщение в случае ошибки MsgBox "Данный файл не является отчетом" & Chr$(13) & "Реестр документов по МХ, либо имеет поврежденную структуру" & Chr$(13) & "Экспортируйте необходимый отчет и откройте его", 16, "Предупреждение:" Exit Sub End If End Sub Важно! Обратите внимание - нумерация листов (как ячеек и столбцов) в VBA начинается с единицы, а не с нуля как в StarBasic

Введение

Этот блог будет аналогом блога Доступно о программировании в Open Office, но в нем речь пойдет о программировании тех же макросов в среде MS Office Excel - VBA. VBA немного проще StarBasic и обучающих материалов в сети по нему много, но все же продублируем, как создавать аналогичные готовые блоки кода для типовых операций обработки файлов. Программирование на VBA имеет гораздо больше возможностей и встроенный мощностей. По нему в интернете доступно очень много обучающей литературы. Для более глубокого ознакомления с языком рекомендую поискать книги по запросу "vba" на сайте  http://www.twirpx.com/ Поскольку готовых примеров кода из Учет Производства на VBA нет - будет созданы новые, по знакомым файлам типа реестра документов по МХ и пр. Для того чтобы создавать макросы в MS Excel 2007 сначала необходимо сделать видимой вкладку "Разработчик" на ленте. Делается это при нажатии на пиктограмму Excel - Параметры Excel - Основные - Показывать вкладку "Разработ