Модуль excel для bas


  1. Home


  2. BrowserAutomationStudio


  3. Делитесь модулями


  4. 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
    История версий:

    Скриншоты:


    Модуль хорошо оттестирован, но если вы будете испытывать проблемы при работе, то можно их описать в этой теме.


  • На всякий случай сообщу, что в следующей версии кроме всего прочего также планируется более качественная поддержка мобильных платформ.

    View post on imgur.com


  • @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 нужно настраивать скрипт в самой таблице

    9611639a-9257-48d3-b3b6-e9102274cb76-изображение.png


  • Отлично. Спасибо за модуль.
    Хотя для своих целей и сам через ноду уже сделал.
    А модуль напрашивался уже давно. Записывать табличные данные в csv, который криво открывается через обычное «Открыть файл» не самый удобный вариант, а делать запись в xls через ноду занимает много времени. Модуль же должен решить данную проблему.


  • @selector

    те кто роботал с екселем перешли би сюда

    В чем проблема скачивать и обновлять таблицы? Почему все должны мечтать о API с гугл докс — непонятно. Что в нем такого кроме лишнего гимора при соединении с БАС и времени на разработку?


  • @IvanM Да по любому ето плюс к возможностям. Чем больше таких модулей тем более влюбляешся в бас. Прямо как в фильме.


  • Супер, огромное спасибо!


  • Спасибо за модуль! Это то, чего мне как новичку очень не хватало.
    Есть один вопрос. При открытии отредактированного БАСом файла, Эксель выдает: «Ошибка в части содержимого в книге имяфайла.xlsx. Выполнить попытку восстановления? Если вы доверяете источнику, из которого получена книга, нажмите кнопку «Да».

    При нажатии кнопки «Да» все исправляется и открывается нормально. Хотелось бы понять — это баг или фича. И если баг, то как от этого избавиться?


  • @Bvfromru, приложите скрипт вызывающий такую ошибку


  • @support Большие файлы обрабатывает очень медленно.


  • @support формат xlsb не поддерживается?


  • @smeckoi77 said in Excel:

    @support формат xlsb не поддерживается?

    Не поддерживается

    @smeckoi77 said in Excel:

    @support Большие файлы обрабатывает очень медленно.

    Чтобы сохранение файлов происходило быстрее нужно использовать асинхронный режим, но при асинхронном режиме лучше в конце работы с файлом поставить действие «Закрыть файл» чтобы точно быть уверенным что файл сохранен.

    Без имени-1.png


  • @GhostZ сохранение не пробовал, а чтение определенной ячейки, если файл большой, выполняется очень долго


  • @smeckoi77, файл не открывается каждый раз при использовании, а открывается один раз и не закрывается пока не пройдет 5 секунд с последнего использования. Поэтому первое использование может быть долгим, а последующие быстрыми.



  • 7

    17
    Votes

    7
    Posts

    1025
    Views

  • 209

    18
    Votes

    209
    Posts

    15078
    Views

  • 63

    11
    Votes

    63
    Posts

    2522
    Views

  • 64

    13
    Votes

    64
    Posts

    4037
    Views

  • 316

    18
    Votes

    316
    Posts

    8137
    Views

  • 471

    32
    Votes

    471
    Posts

    14477
    Views

  • 50

    17
    Votes

    50
    Posts

    1642
    Views

  • 172

    32
    Votes

    172
    Posts

    8305
    Views

Приветствуем читателей нашего сайта. Сегодня мы поговорим о полезной функции BAS — Загрузке данных из Excel и обратной выгрузке.

Достаточно часто программистам BAS нужно выполнять загрузку из Excel файла, например, прайс-листа. Давайте научимся делать эту распространённую задачу.

Создадим внешнюю обработку, для удобства отладки.

Добавим новый реквизит «ИмяФайла» с типом Строка и неограниченной длиной.

Также добавим Табличную часть, для удобства визуализации данных и последующей работы с ними. Добавляем Табличную часть «ТабличнаяЧастьДанные» с реквизитами:

  • «Отметка» с типом Булево. 
  • «Артикул» с типом строка и длиной 10
  • «Номенклатура» с типом строка и длиной 100
  • «Единица измерения» с типом строка и длиной 10
  • «Вид номенклатуры» с типом строка и длиной 50

У нас получилось шесть колонок, «Отметка» поможет пользователю осуществлять контроль загружаемых элементов. Колонка «Артикул» будет связующим звеном, по ней будет происходить поиск номенклатуры в базе. Остальные три колонки со строковыми типами будут содержать данные непосредственно из файла. Эти три колонки-реквизита обязательные реквизиты при создании номенклатуры.

На командную панель табличной части добавим две кнопки «Загрузить из Excel» и «загрузить в базу». В определенных случаях пользователю нужен контроль того что загружать и что нет в базу непосредственно. Для этого мы разделим загрузку на два этапа. Первая будет заполнять таблицу, вторая создавать элементы в базе. Отобразим все наши новые элементы на форме обработки. Должно получиться вот так:

Урок 31. Загрузка из Excel

Теперь немного изменим форму, снимем галочку АвтоКонтекстноеМеню из палитры свойств табличной части, для того, чтобы пользователь не смог добавлять новые элементы сам. Так же установим для всех колонок, кроме «Отметка», галочку «только просмотр» в свойствах.

Так же для удобства отладки сделаем авто сохранение реквизита Имя файла, чтобы нам не приходилось заполнять его после каждого открытия обработки. Для этого установим в свойствах формы флажок «Сохранять значения»«Восстанавливать значения» и укажем наш реквизит.

Урок 31. Загрузка из Excel

Перед тем как мы начнем программировать, давайте создадим файл, из которого мы будем загружать данные. Создаем Excel файл со следующим содержимым:

Урок 31. Загрузка из Excel

Отлично, перейдем к программированию.

Добавим кнопку выбора полю «Имя файла». Это можно сделать в палитре свойств этого поля.

Урок 31. Загрузка из Excel

Добавим обработчик «Начало выбора» для поля «Имя файла»

Урок 31. Загрузка из Excel

Мы перехватим это событие и перед началом выбора добавим свой код, чтобы мы могли открывать файлы только с расширениями *.xls, *.xlsx, а так же обработаем результат выбора, записав в наш реквизит «Имя файла» полный путь к файлу и его название. Смысл этой процедуры в том, чтобы получить диалоговое окно выбора файла windows.

Урок 31. Загрузка из Excel

Рассмотрим этот код:

  • СтандартнаяОбработка = Ложь; Отказываемся от действий обработчика BAS и устанавливаем наши.
  • ДиалогВыбораФайла(); Нужен для работы с диалогом специального вида для открытия файла или нескольких файлов, сохранения файла или выбора каталога. Мы также можем задать различные свойства открытия и фильтры. Что мы и сделали, установили заголовок окна и установили фильтр на файлы с расширением Excel.
  • Диалог.Выбрать() – срабатывает после нажатия кнопки «Открыть» открывшегося диалога. Если вам нужно организовать множественный выбор файлов, то нужно всего лишь запустить цикл, вместо условия «Если» и Реквизит ИмяФайла в таком случае примет тип ТаблицаЗначений.

Итак, сохраним обработку и попробуем открыть Excel файлик нашей обработкой. Запускаем BAS в режиме предприятия. Если ошибок не было, вы должны увидеть:

Урок 31. Загрузка из Excel

Перейдем к обработке данных в файле. Запишем следующий код в процедуру «Загрузить из Excel»:

Урок 31. Загрузка из Excel

Урок 31. Загрузка из Excel

Урок 31. Загрузка из Excel

Открыв приложение Excel, открыв книгу и узнав количество листов, мы можем запустить цикл по всем листам и обработать. Далее мы определили количество колонок и строк в листе. И можем начать цикл по строкам листа для их обработки. Обработку строк можно начать с проверок ключевых значений. Т.е. если не заполнено наименование или единица измерения, или вид товара- пропустим эту строчку и сообщим пользователю об этом.

Урок 31. Загрузка из Excel

Для получения значения ячейки при переборе строк листа, нам необходимо указать ее точные координаты. Например «Артикул» был в первой колонке. Начинаем перебор со второй строки, тогда координаты артикула для первой строки с данными будут (2,1), далее (3, 1) и т.д.

После обработки строк и завершения обоих циклов, как по строчного, так и по листам, обязательно закрываем Excel

Урок 31. Загрузка из Excel

В итоге наша табличная часть должна заполниться данными из Excel. На этом обработка файла завершена. Теперь перейдем к обработке полученных данных. Начнем цикл по табличной части, если строка с галочкой, тогда продолжим.

Урок 31. Загрузка из Excel

Урок 31. Загрузка из Excel

Урок 31. Загрузка из Excel

Урок 31. Загрузка из Excel

Урок 31. Загрузка из Excel

Урок 31. Загрузка из Excel

Теперь предварительно запишем нашу новую номенклатуру, чтобы она создала ссылку на себя в базе. Ссылка нам нужна для дополнительных реквизитов «ЕдиницаХраненияОстатков» и «ЕдиницаДляОтчетов» т.к. их владелец справочник номенклатура.

Урок 31. Загрузка из Excel

Урок 31. Загрузка из 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. Запустите программу Word;
  2. перейдите в VBA;
  3. FileImport File… — выберите свой файл;
  4. нажмите «Сохранить».

Макросы будут доступны на компьютере.



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,
«File — Import File… — выберите свой файл»



1



608 / 406 / 8

Регистрация: 26.04.2012

Сообщений: 2,065

29.10.2012, 20:41

 [ТС]

5

Цитата
Сообщение от Hugo121
Посмотреть сообщение

Открыли Ворд, Alt+F11,
«File — Import File… — выберите свой файл»

говорю же норм уже все, все сделали



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

29.10.2012, 21:02

6

Это для следующей девушки



0



Troll_Face

29.10.2012, 21:37

 [ТС]


    Импорт файла *.bas с макросами для использования на другом ПК

Не по теме:

Цитата
Сообщение от Hugo121
Посмотреть сообщение

Это для следующей девушки

не дай Бог мне больше таких: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)».

Import_Module_01_Free-Excel-VBA.Blogspot.com

3. Select TestModule.bas from your hard drive and press «Open» button. New «Module1» will be shown in VBAProject window

Import_Module_02_View_Code_F7_Key_Free-Excel-VBA.Blogspot.com

4. To View Macros code right click and select «View Code». «TestModule» VBA macros code will be shown

Import_Module_03_View_Code_Window_Free-Excel-VBA.Blogspot.com

5. Please return to Sheet1 window, press «ALT+F8», select «TestModule» in «Macro» window and press «Run» button.

ALT_F8_Eng_Free-Excel-VBA.Blogspot.com

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.

Import_Module_04_Macros_Result_Free-Excel-VBA.Blogspot.com

Video guide:

Понравилась статья? Поделить с друзьями:
  • Может ли word открыть файл pdf
  • Может ли pages заменить word
  • Может ли excel пользоваться
  • Может ли excel быть базой данных
  • Может foxit reader перевести в word