-
Home -
BrowserAutomationStudio -
Делитесь модулями -
Excel
This topic has been deleted. Only users with topic management privileges can see it.
-
Название: Excel
Версия: 1.1
Данные: Excel.zip
Исходник: -.
Согласие на добавление модуля в BAS: Модуль будет добавлен в следующую версию BAS.
Описание: Модуль позволяет работать с excel файлами: читать/изменять как отдельные ячейки, так и столбики, листы, работать с разными типами данных, импорт/экспорт в ресурсы или json, работать со списком листов, формулами, стилями, поддерживает многопоточность, асинхронный и синхронный тип сохранения файлов.
Автор: @GhostZ
История версий:Скриншоты:
Модуль хорошо оттестирован, но если вы будете испытывать проблемы при работе, то можно их описать в этой теме.
-
На всякий случай сообщу, что в следующей версии кроме всего прочего также планируется более качественная поддержка мобильных платформ.
-
@support Очень хорошо, модуль для работы с Excel просили очень давно. Модуль использует node js или создан на основе модуля? (нужно ли включать node в настройках проекта?)
На всякий случай сообщу, что в следующей версии кроме всего прочего также планируется более качественная поддержка мобильных платформ.
Это отлично, но сообщили вы зря
:D
Сейчас эту тему заспамят вопросами по этой темеudp: Нашёл ответ:
_embedded("Excel_ReadSheet", "Node", "12.18.3", "XLSX_NODE_PARAMETERS", timeout)!
-
@Fox Модуль использует node.js. Достаточно его установить, BAS сам запустит ноду, если модуль используется. Сейчас во время первого запуска будут установлены дополнительные npm пакеты, в сл версии BAS этого не потребуется.
-
Все новые модули, которые пили @GhostZ будут на ноде.
-
Отлично! Теперь с таблицами будет намного удобнее работать.
-
если б сделали также такое с google sheets через API, то думаю те кто роботал с екселем перешли би сюда. Ето можно сравнить — робота с удальонной БД или c текстовиками через ресурсы
-
@selector said in Excel:
если б сделали также такое с google sheets через API, то думаю те кто роботал с екселем перешли би сюда. Ето можно сравнить — робота с удальонной БД или c текстовиками через ресурсы
Для полноценной работы с google sheets нужно настраивать скрипт в самой таблице
-
Отлично. Спасибо за модуль.
Хотя для своих целей и сам через ноду уже сделал.
А модуль напрашивался уже давно. Записывать табличные данные в csv, который криво открывается через обычное «Открыть файл» не самый удобный вариант, а делать запись в xls через ноду занимает много времени. Модуль же должен решить данную проблему.
-
@selector
те кто роботал с екселем перешли би сюда
В чем проблема скачивать и обновлять таблицы? Почему все должны мечтать о API с гугл докс — непонятно. Что в нем такого кроме лишнего гимора при соединении с БАС и времени на разработку?
-
@IvanM Да по любому ето плюс к возможностям. Чем больше таких модулей тем более влюбляешся в бас. Прямо как в фильме.
-
Супер, огромное спасибо!
-
Спасибо за модуль! Это то, чего мне как новичку очень не хватало.
Есть один вопрос. При открытии отредактированного БАСом файла, Эксель выдает: «Ошибка в части содержимого в книге имяфайла.xlsx. Выполнить попытку восстановления? Если вы доверяете источнику, из которого получена книга, нажмите кнопку «Да».При нажатии кнопки «Да» все исправляется и открывается нормально. Хотелось бы понять — это баг или фича. И если баг, то как от этого избавиться?
-
@Bvfromru, приложите скрипт вызывающий такую ошибку
-
@support Большие файлы обрабатывает очень медленно.
-
@support формат xlsb не поддерживается?
-
@smeckoi77 said in Excel:
@support формат xlsb не поддерживается?
Не поддерживается
@smeckoi77 said in Excel:
@support Большие файлы обрабатывает очень медленно.
Чтобы сохранение файлов происходило быстрее нужно использовать асинхронный режим, но при асинхронном режиме лучше в конце работы с файлом поставить действие «Закрыть файл» чтобы точно быть уверенным что файл сохранен.
-
@GhostZ сохранение не пробовал, а чтение определенной ячейки, если файл большой, выполняется очень долго
-
@smeckoi77, файл не открывается каждый раз при использовании, а открывается один раз и не закрывается пока не пройдет 5 секунд с последнего использования. Поэтому первое использование может быть долгим, а последующие быстрыми.
-
-
7
17
Votes7
Posts1025
Views -
209
18
Votes209
Posts15078
Views -
63
11
Votes63
Posts2522
Views -
64
13
Votes64
Posts4037
Views -
316
18
Votes316
Posts8137
Views -
471
32
Votes471
Posts14477
Views -
50
17
Votes50
Posts1642
Views -
172
32
Votes172
Posts8305
Views
Приветствуем читателей нашего сайта. Сегодня мы поговорим о полезной функции BAS — Загрузке данных из Excel и обратной выгрузке.
Достаточно часто программистам BAS нужно выполнять загрузку из Excel файла, например, прайс-листа. Давайте научимся делать эту распространённую задачу.
Создадим внешнюю обработку, для удобства отладки.
Добавим новый реквизит «ИмяФайла» с типом Строка и неограниченной длиной.
Также добавим Табличную часть, для удобства визуализации данных и последующей работы с ними. Добавляем Табличную часть «ТабличнаяЧастьДанные» с реквизитами:
- «Отметка» с типом Булево.
- «Артикул» с типом строка и длиной 10
- «Номенклатура» с типом строка и длиной 100
- «Единица измерения» с типом строка и длиной 10
- «Вид номенклатуры» с типом строка и длиной 50
У нас получилось шесть колонок, «Отметка» поможет пользователю осуществлять контроль загружаемых элементов. Колонка «Артикул» будет связующим звеном, по ней будет происходить поиск номенклатуры в базе. Остальные три колонки со строковыми типами будут содержать данные непосредственно из файла. Эти три колонки-реквизита обязательные реквизиты при создании номенклатуры.
На командную панель табличной части добавим две кнопки «Загрузить из Excel» и «загрузить в базу». В определенных случаях пользователю нужен контроль того что загружать и что нет в базу непосредственно. Для этого мы разделим загрузку на два этапа. Первая будет заполнять таблицу, вторая создавать элементы в базе. Отобразим все наши новые элементы на форме обработки. Должно получиться вот так:
Теперь немного изменим форму, снимем галочку АвтоКонтекстноеМеню из палитры свойств табличной части, для того, чтобы пользователь не смог добавлять новые элементы сам. Так же установим для всех колонок, кроме «Отметка», галочку «только просмотр» в свойствах.
Так же для удобства отладки сделаем авто сохранение реквизита Имя файла, чтобы нам не приходилось заполнять его после каждого открытия обработки. Для этого установим в свойствах формы флажок «Сохранять значения», «Восстанавливать значения» и укажем наш реквизит.
Перед тем как мы начнем программировать, давайте создадим файл, из которого мы будем загружать данные. Создаем Excel файл со следующим содержимым:
Отлично, перейдем к программированию.
Добавим кнопку выбора полю «Имя файла». Это можно сделать в палитре свойств этого поля.
Добавим обработчик «Начало выбора» для поля «Имя файла»
Мы перехватим это событие и перед началом выбора добавим свой код, чтобы мы могли открывать файлы только с расширениями *.xls, *.xlsx, а так же обработаем результат выбора, записав в наш реквизит «Имя файла» полный путь к файлу и его название. Смысл этой процедуры в том, чтобы получить диалоговое окно выбора файла windows.
Рассмотрим этот код:
- СтандартнаяОбработка = Ложь; Отказываемся от действий обработчика BAS и устанавливаем наши.
- ДиалогВыбораФайла(); Нужен для работы с диалогом специального вида для открытия файла или нескольких файлов, сохранения файла или выбора каталога. Мы также можем задать различные свойства открытия и фильтры. Что мы и сделали, установили заголовок окна и установили фильтр на файлы с расширением Excel.
- Диалог.Выбрать() – срабатывает после нажатия кнопки «Открыть» открывшегося диалога. Если вам нужно организовать множественный выбор файлов, то нужно всего лишь запустить цикл, вместо условия «Если» и Реквизит ИмяФайла в таком случае примет тип ТаблицаЗначений.
Итак, сохраним обработку и попробуем открыть Excel файлик нашей обработкой. Запускаем BAS в режиме предприятия. Если ошибок не было, вы должны увидеть:
Перейдем к обработке данных в файле. Запишем следующий код в процедуру «Загрузить из Excel»:
Открыв приложение Excel, открыв книгу и узнав количество листов, мы можем запустить цикл по всем листам и обработать. Далее мы определили количество колонок и строк в листе. И можем начать цикл по строкам листа для их обработки. Обработку строк можно начать с проверок ключевых значений. Т.е. если не заполнено наименование или единица измерения, или вид товара- пропустим эту строчку и сообщим пользователю об этом.
Для получения значения ячейки при переборе строк листа, нам необходимо указать ее точные координаты. Например «Артикул» был в первой колонке. Начинаем перебор со второй строки, тогда координаты артикула для первой строки с данными будут (2,1), далее (3, 1) и т.д.
После обработки строк и завершения обоих циклов, как по строчного, так и по листам, обязательно закрываем Excel
В итоге наша табличная часть должна заполниться данными из Excel. На этом обработка файла завершена. Теперь перейдем к обработке полученных данных. Начнем цикл по табличной части, если строка с галочкой, тогда продолжим.
Теперь предварительно запишем нашу новую номенклатуру, чтобы она создала ссылку на себя в базе. Ссылка нам нужна для дополнительных реквизитов «ЕдиницаХраненияОстатков» и «ЕдиницаДляОтчетов» т.к. их владелец справочник номенклатура.
Вот и все. Обработка завершена.
Так же, наша компания проводит обучение по курсам:
- Авторские курсы BAS
- Онлайн курсы BAS
Обучение проводится в вечернее время, что позволит вам не отрываться от работы или обучения, практикующим программистом нашей компании.
Если у вас остались вопросы, Вы всегда можете обратиться к нашим аналитикам по телефонам:
(093) 090-70-20
(095) 090-70-20
(068) 090-70-20
608 / 406 / 8 Регистрация: 26.04.2012 Сообщений: 2,065 |
|
1 |
|
29.10.2012, 19:51. Показов 11489. Ответов 6
я создал макросы на одном компе, сохранил как *.bas, как теперь мне вставить эти макросы в ворд 2010 на другом компе? спасибо
0 |
5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
|
29.10.2012, 20:20 |
2 |
Макросы будут доступны на компьютере.
1 |
608 / 406 / 8 Регистрация: 26.04.2012 Сообщений: 2,065 |
|
29.10.2012, 20:30 [ТС] |
3 |
спасибо за ответ, но там проблема в том, что комп за 3000 км, за компом девушка-ламер и ей надо объяснить где найти вкладку разработчик, сам не знал где она, ибо у меня 2007 офис, но сейчас разобрались, пол часа искали галочку «показывать вкладку «Разработчик»…»)) спасибо за ответ
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
29.10.2012, 20:33 |
4 |
Открыли Ворд, Alt+F11,
1 |
608 / 406 / 8 Регистрация: 26.04.2012 Сообщений: 2,065 |
|
29.10.2012, 20:41 [ТС] |
5 |
Открыли Ворд, Alt+F11, говорю же норм уже все, все сделали
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
29.10.2012, 21:02 |
6 |
Это для следующей девушки
0 |
Troll_Face |
29.10.2012, 21:37 [ТС] |
Не по теме:
Это для следующей девушки не дай Бог мне больше таких:D
0 |
Импорт, экспорт и удаление модуля в редакторе VBA. Программный экспорт-импорт модуля из одной рабочей книги Excel в другую с помощью кода VBA Excel.
1. Откройте рабочую книгу Excel, в которую планируете импортировать модуль. Для импорта модуля в Личную книгу макросов, откройте любую книгу.
2. Откройте редактор VBA сочетанием клавиш Alt+F11 (в этом сочетании используется левая клавиша Alt). Обратите внимание на наличие в окне редактора VBA окна проводника «Project-VBAProject», обычно, расположенного слева. При отсутствии, отобразите его через главное меню, выбрав «View» — «Project Explorer».
3. В окне проводника «Project-VBAProject» найдите строку «VBAProject (ИмяКниги)», где «ИмяКниги» — это имя книги, в которую вы собираетесь импортировать модуль. Если вы желаете импортировать модуль в Личную книгу макросов, строка называется «VBAProject (PERSONAL.XLSB)». Если у вас нет Личной книги макросов — создайте ее.
4. У выбранной строки раскройте все крестики слева.
5. Откройте контекстное меню, кликнув правой кнопкой мыши на строке «ЭтаКнига», и выберите в нем пункт «Import File…».
6. В открывшемся окне выбора файла найдите импортируемый модуль с расширением .bas и дважды кликните по нему, или кликните один раз и нажмите кнопку «Открыть». Модуль импортирован и отобразился в проводнике под именем «Module» с очередным номером, независимо от имени импортируемого файла.
7. Если вы импортировали модуль в Книгу Excel 2007-2016 с расширением .xlsx, ее необходимо будет пересохранить как «Книга Excel с поддержкой макросов (.xlsm)», иначе импортированный модуль не сохранится.
Инструкцию с картинками вы можете посмотреть здесь в параграфе «Пользовательская функция «СуммаПрописью».
Экспорт модуля в редакторе VBA
1. Откройте рабочую книгу Excel, из которой вы планируете экспортировать модуль. Для экспорта модуля из Личной книги макросов, откройте любую книгу.
2. Откройте редактор VBA сочетанием клавиш Alt+F11 и в окне проводника «Project-VBAProject» найдите экспортируемый модуль.
3. Откройте контекстное меню, кликнув правой кнопкой мыши на экспортируемом модуле, и выберите в нем пункт «Export File…».
4. В открывшемся окне выберите папку, куда следует сохранить экспортируемый модуль, если необходимо, измените название сохраняемого файла, и нажмите кнопку «Сохранить». Модуль экспортирован и отобразился в выбранном каталоге с указанным именем и расширением .bas.
Удаление модуля в редакторе VBA
1. В окне проводника «Project-VBAProject» найдите удаляемый модуль.
2. Откройте контекстное меню, кликнув правой кнопкой мыши на удаляемом модуле, и выберите в нем пункт «Remove Module…» с номером удаляемого модуля.
3. VBA Excel предложит экспортировать модуль перед удалением, нажмите «Да», если хотите сохранить модуль, или «Нет», чтобы удалить без сохранения.
Как удалить стандартный модуль с помощью кода VBA Excel, смотрите в последнем параграфе статьи Программное создание модуля.
Программный экспорт-импорт модуля
Пример программного экспорта стандартного модуля "Module1"
из книги "Книга2.xlsm"
и импорта его в книгу "Книга3.xlsm"
с помощью кода VBA Excel:
Sub ExportImportModule() Workbooks(«Книга2.xlsm»).VBProject.VBComponents(«Module1»).Export «C:ТестоваяModule1.bas» Workbooks(«Книга3.xlsm»).VBProject.VBComponents.Import «C:ТестоваяModule1.bas» End Sub |
Если в книге "Книга3.xlsm"
уже присутствует модуль с именем "Module1"
, то импортированному модулю будет присвоен другой номер.
Программное удаление модуля
Код VBA Excel для программного удаления стандартного модуля с именем "Module24"
:
Sub RemoveModule() With ThisWorkbook.VBProject .VBComponents.Remove .VBComponents(«Module24») End With End Sub |
Замените имя "Module24"
на имя своего модуля, который вы хотите безвозвратно удалить.
This guides describes how to import and run Excel Macros in .bas format. Macros importing will work with open Workbook.
1. Please press «ALT+F11» key combination. Microsoft Visual Basic for Applications window will appear.
2. Select from «File» menu — «Import File… (CTRL+M)».
3. Select TestModule.bas from your hard drive and press «Open» button. New «Module1» will be shown in VBAProject window
4. To View Macros code right click and select «View Code». «TestModule» VBA macros code will be shown
5. Please return to Sheet1 window, press «ALT+F8», select «TestModule» in «Macro» window and press «Run» button.
Your VBA macros in .bas format will be executed. These are results of TestModule.bas macros running. You can download Book1 XLS file with TestModule.
Video guide: