Форум » [x]Harbour » Снова EXCEL (продолжение) » Ответить
Снова EXCEL (продолжение)
Dima: Ранее с Excel из Harbour ни когда не работал. Поставили тут задачу. У некоторых поставщиков есть определенные формы заказов. Набраны они в Excel. Сейчас народ руками заполняет эти формы и шлет по электронке поставщикам. Задача сводится к тому что бы в этих формах находить нужные коды товара и в нужной ячейке проставлять заказ. Может ткнет кто носом с чего начать что бы не напороться на грабли. Спасибо Сами формы тут http://zalil.ru/33279066
MIKHAIL: Dima пишет: сразу в Harbour ну правильно, вопрос то был как вызвать какое то действие при открытии книги... Можно передать управление Excel, а можно управлять Харбуром
MIKHAIL: Dima пишет: Я было пытался подгрузить макрос такой из строки...но сколько не бился ни чего не получилось и бросил это дело как внедрить код VBA в книгу я не знаю, но ты можешь предварительно сохранить набор нужных функций в самой книге и навесить вызов на нужные кнопки
Dima: MIKHAIL пишет: но ты можешь предварительно сохранить набор нужных функций в самой книге как это сделать средствами Harbour ?
MIKHAIL: Dima пишет: как это сделать средствами Harbour ? я не знаю, копай в сторону как выполнить внешний макрос VBA Excel, я ручками готовил шаблон файла, который содержал нужные мне VBA функции, заполнял его данными и работал уже с ним интерактивно в самом Excel... Не вполне понимаю зачем тебе понадобилось из Харбура исполнять какие то интерфейсные функции. Для меня смысл Excel что ты можешь передать управление кодом другому пользователю не связанного с твоей программой и он может работать с твоими данными абстрактно в любом месте и взаимодействовать через интерфейс Excel. А у тебя потребность это делать через твою программу ??? Я думаю внедрение внешнего скрипта в книгу, связано с ограничениями безопасности, наверное это не так просто...
Dima: я тебя понял, спасибо. просто было время у меня на спортивный интерес к этой теме и всё MIKHAIL пишет: Не вполне понимаю зачем тебе понадобилось из Харбура исполнять какие то интерфейсные функции ну например...строим какой то отчет и нужно указать условия расчета и одно из условий списком и позиций может быть больше одной, в этом случае можно использовать (как вариант) oExcel:ActiveSheet:ListBoxes или oExcel:ActiveSheet:DropDowns и для их заполнения процедуры VB не нужны, всё заполняется через Harbour
MIKHAIL: Dima вот что ИИ пишет: Через COM‑автоматизацию (IDispatch) Позволяет программно добавлять модули и код VBA в книгу Excel из внешнего приложения (C#, VB.NET, Python и т. д.). Что нужно: запущенный процесс Excel (или его запуск через COM); доступ к коллекции VBProject книги; права на работу с VBA‑проектами (настройка «Доверять доступ к объектной модели проектов VBA»). Пример на C#: csharp using Excel = Microsoft.Office.Interop.Excel; var excelApp = new Excel.Application(); excelApp.Visible = true; var workbook = excelApp.Workbooks.Add(); // Получаем доступ к VBA‑проекту var vbProject = workbook.VBProject; var vbModule = vbProject.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule); // Добавляем код VBA vbModule.CodeModule.AddFromString( ( "Sub HelloFromAPI()" + " MsgBox \"Привет, я внедрён через API!\"" + "End Sub" ); // Выполняем макрос excelApp.Run("HelloFromAPI"); Dima пишет: всё заполняется через Harbour Все равно не понятно, если отчет строиться и заполняется в Харбур, зачем подключать интерфейс Excel? почему нельзя задавать все параметры в твоей проге ?
Dima: MIKHAIL пишет: почему нельзя задавать все параметры в твоей проге ? так они там и задаются )) щефы (начальство) они разные бывают и хотя видеть условия расчета в самом отчете....и что мне надо было шефу отказать ?
Dima: MIKHAIL пишет: AddFromString копал я этот AddFromString , не вышло, бросил ))
MIKHAIL: Dima пишет: хотя видеть условия расчета в самом отчете еще раз повторюсь, добавь в шаблон нужный VBA скрипт для интерфейсных операций, сохрани книгу как шаблон, создавай отчет на основе шаблона, вызывай сохраненные в VBA функции для получения нужных данных...
Dima: MIKHAIL
полная версия страницы