Программы для склада, для торговли, для производства

Программное обеспечение

для торговли, склада, производства

Программа для склада, для магазина, для производства
Программа для оптовой и розничной торговли
СКАЧАТЬ КУПИТЬ
Пробная
версия
от 2500 руб.
за лицензию

Vvs "Офис-Склад-Магазин"


Редактирование форм документов и отчетов

П.10. Примеры взаимодействия с MS Excel.

Для передачи данных в MS Excel можно использовать два способа: через текстовый файл и с помощью команд динамического обмена данными (DDE). Через текстовый файл можно также импортировать данные в программу из Excel.

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

Более удобным способом является использование механизма динамического обмена данными (DDE). В этом случае имеется возможность передавать данные в заранее подготовленный, отформатированный документ, содержащий, при необходимости, формулы, изображения, диаграммы, макросы.

Для установки связи с документом price.xls используйте следующую конструкцию:
@DDECONNECT EXCEL;price.XLS

Если документ не открыт, то программа попытается его открыть. Если документ открыт в одном из окон Excel, то он может быть закрыт другим документом. Для его активации можно использовать конструкцию:
@DDEEXECUTE [Activate("price.xls")]

Для передачи данных с помощью DDEPOOKE не в первый, а какой-либо другой лист, можно использовать следующую конструкцию (документ уже должен быть открыт):
@DDECONNECT EXCEL;price.XLS:Лист2

Пример для установки обмена с листом "Фактура" в файле PLAT.XLS:
@DDEEXECUTE [Activate("plat.xls")]
@DDECONNECT EXCEL;plat.XLS:Фактура
@DDEEXECUTE [WORKBOOK.ACTIVATE("Фактура")]
@DDEEXECUTE [APP.ACTIVATE()]

Для вызова собственных макросов также используйте DDEEXECUTE с командой Excel RUN. Вот текст простого макроса в Excel:
Sub SelectList2()
rem Активизация второго листа
Worksheets(2).Activate
rem Вывод окна MS Excel на передний план
Application.Visible = True
End Sub

Для вызова этого макроса можно использовать следующую строку:
@DDEEXECUTE [Run("SelectList2")]

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

Для передачи значений в ячейки таблицы используйте команду @DDEPOKE. Ячейки адресуйте в формате R1C1 (ряд 1 столбец 1). Например, чтобы передать текущую дату в первую ячейку:
@DDEPOKE R1C1;[&TODAY(0) ]

Для формирования документа, например, со списком товаров, необходимо использовать переменную как счетчик строк. Эта переменная будет задавать номер строки в таблице Excel, в которую происходит запись. Вот пример для вывода списка наименований товаров:
@XN=3 (начинаем с третьей строки)
{
@DDEPOKE R[~XN,-1]C1;[DTWR,-1]
@XN=XN+1
}

Перед формированием нового документа бывает необходимо очистить ячейки со старыми данными. Для этого можно использовать следующую конструкцию:
@DDEEXECUTE [Select("R1C1:R100C4")][CLEAR()]

В результате выделяются ячейки A1:D100 и их содержимое очищается.

Вывод на печать документа:
@DDEEXECUTE [PRINT()]

Закрытие документа:
@DDEEXECUTE [CLOSE()]

Авто подбор высоты строк:
@DDEEXECUTE [ROW.HEIGHT(0,"R17:R68",TRUE,3)]

Открываем скрытые строки:
@DDEEXECUTE [ROW.HEIGHT(0,"R1:R1000",TRUE,2)]

Скрываем строки, начиная со строки, номер которой в переменной XN:
@DDEEXECUTE [ROW.HEIGHT(0,"R\[~XN,-1\]:R1000",TRUE,1)]

Выделяем строку номер которой в переменной XN и вставляем разделитель страницы:
@DDEEXECUTE [Select("R\[~XN,-1\]:R\[~XN,-1\]")]
@DDEEXECUTE [SET.PAGE.BREAK()]

Выделяем ячейку и изменяем шрифт:
@DDEEXECUTE [Select("R1C1")][FONT.PROPERTIES("Arial","",24)]

или
@DDEEXECUTE [ [FONT.PROPERTIES("Arial","Полужирный")]

для английской версии Windows может потребоваться след строка:
@DDEEXECUTE [FONT.PROPERTIES("Arial","Bold")]

Выделяем ячейки и делаем их в рамке:
@DDEEXECUTE [Select("R1C1:R2C3")][BORDER(1)]

<< Назад   -   Содержание  -  Вперед >>