On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
Dima
администратор




Пост N: 2372
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.05.12 16:52. Заголовок: Снова EXCEL (продолжение)


Ранее с Excel из Harbour ни когда не работал.
Поставили тут задачу.
У некоторых поставщиков есть определенные формы заказов.
Набраны они в Excel. Сейчас народ руками заполняет эти формы
и шлет по электронке поставщикам.
Задача сводится к тому что бы в этих формах находить
нужные коды товара и в нужной ячейке проставлять заказ.
Может ткнет кто носом с чего начать что бы не напороться на грабли.
Спасибо
Сами формы тут http://zalil.ru/33279066

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


fil



Пост N: 513
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 02.06.17 11:25. Заголовок: Из своей проги откры..


Из своей проги открываю файл Excel. В этом файле есть кнопка которая активирует макрос.
Макрос должен посылать сообщение - PostMessage(чего нибудь) моей проге и закрывть Excel. Не писал ли кто похожее ?

Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1498
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 02.06.17 14:57. Заголовок: fil пишет: Не писал..


fil пишет:

 цитата:
Не писал ли кто похожее ?



Не писал, но не вижу на каком этапе могут возникнуть трудности: нажать кнопку (выполнить макрос), послать сообщение, закрыть Excel?

Добавляйте описание WinAPI функций, что-то типа

 цитата:

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long



и вперед.

UPD: наверное вам пригодится RegisterWindowMessage.

Спасибо: 0 
Профиль
fil



Пост N: 514
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 02.06.17 15:13. Заголовок: Не писал, но не вижу..



 цитата:
Не писал, но не вижу на каком этапе могут возникнуть трудности



Да ни на каком, написал уже. Думал, вдруг кто халяву подкинет

Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1499
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 02.06.17 15:17. Заголовок: fil пишет: Думал, ..


fil пишет:

 цитата:
Думал, вдруг кто халяву подкинет




Спасибо: 0 
Профиль
fil



Пост N: 516
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 05.06.17 18:58. Заголовок: Динамическая погрузка макросов


Можно ли программно подгрузить в книгу макрос из внешнего*.bas файла ?

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6453
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.06.17 09:16. Заголовок: Заполняю ячейку след..


Заполняю ячейку следующим значением
hb_dtoc(Tmp123->data_z,"DD.MM.YYYY")
NumberFormat для нее поставил "@" , вместо даты получил цифры.
Глянул как в макросе делает Excel для даты , NumberFormat там "m/d/yyyy" , тоже вставил
в проге но после этого оля упала.
Какой вид NumberFormat нужно поставить что бы и оля не упала и дата корректно отобразилась ?

Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1523
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.06.17 10:13. Заголовок: Dima пишет: Заполня..


Dima пишет:

 цитата:
Заполняю ячейку следующим значением
hb_dtoc(Tmp123->data_z,"DD.MM.YYYY")


Попробуйте заполнять так
:Value := Date()
:Value := hb_DateTime()
:Value := Tmp123->data_z

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6454
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.06.17 12:14. Заголовок: Петр Дело в том что..


Петр
Дело в том что есть универсальная функция (моя) , обрабатывает DBF таблицу и кидает ее в EXCEL.
Данные таблицы заполняю не по ячейкам а по строкам.
То есть Value я присваиваю массив (в данном случае) вида {"17.06.2017","ИВАНОВ",45123.10}
Если после присвоения (или до) не делать NumberFormat , то все ровно.
Но понадобилось в 3 -й колонке число бить по разрядам что бы получить 45 123.10 , если этого
не сделать получаю 45123.1
Поэтому решил диапазону (RANGE) передать массив вида {"@","@","# ##0"+GET_SDECIMAL()+"00"} через
NumberFormat , все сработало за исключением вывода строки в которой дата.
Подмена "@" на "m/d/yyyy" приводит к падению оли.
Сделал пока временное решение но пришлось отказаться от заполнения диапазона в NumberFormat
и сделал по ячейкам в цикле , скорость немного конечно упадет. Массив теперь выглядит так
{NIL,"@","# ##0"+GET_SDECIMAL()+"00"} а в цикле проверка стоит , если не NIL то работаем с NumberFormat


Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1524
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.06.17 13:30. Заголовок: Фрагмент кода oAS:..


Фрагмент кода

oAS:Range( "A1:C1" ):Value := {"17.06.2017","ИВАНОВ",45123.10}
oAS:Range( "A1:C1" ):NumberFormat := {"mm/dd/yyyy","@","# ##0,00"}
oAS:Range( "A1:C1" ):Select()

в Excell 2016 не приводит к падению

Можно попробовать использовать (до или после)
oAS:Columns( 3 ):NumberFormat.. или oAS:Range( "С3:C100" ):NumberFormat..

UPD.
oAS:Range( "A1:C1" ):Value := {Date(),"ИВАНОВ",45123.10} - тоже работает как просили..

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6455
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.06.17 13:45. Заголовок: Петр пишет: в Excel..


Петр пишет:

 цитата:
в Excell 2016 не приводит к падению


Возможно , у меня Excel 2000
У юзверей стоит , поэтому и у себя держу такую версию.

Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 118
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 18.06.17 10:13. Заголовок: Добрый день, формиру..


Добрый день, формирую DBF файл и выводе в Excel использую NaumberFormat только где надо разделить разряды, убрать 0, перенос текста - пока все ОК (Excel 2010 - 2016)


Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3566
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.06.17 16:13. Заголовок: Как вариант: перед з..


Как вариант: перед заполнением таблицы по строкам можно установить NumberFormat для тех столбцов, для которых это надо, т.е:

oSheet:Columns( nCol1 ):NumberFormat := cFormat1
..
oSheet:Columns( nColN ):NumberFormat := cFormatN

а затем сделать цикл по строкам с их заполнением

Если есть шапка таблицы, то после форматирования всего столбца NumberFormat для шапки можно очистить, или установить другой:

oSheet:Rows('1'+':'+AllTrim(Str(nRow))):NumberFormat := ...

С точки зрения оптимизации так будет лучше всего, т.к. число вызовов NumberFormat будет минимально.


Спасибо: 1 
Профиль
Dima
администратор




Пост N: 6461
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.06.17 16:32. Заголовок: Pasha пишет: Как ва..


Pasha пишет:

 цитата:
Как вариант: перед заполнением таблицы по строкам можно установить NumberFormat для тех столбцов, для которых это надо, т.е:




Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3568
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.06.17 14:54. Заголовок: Как уже отмечалось, ..


Как уже отмечалось, харбор не поддерживает создание двумерных массивов Variant, и из-за этого
в Excel не получается присвоить значение диапазону ячеек, состоящему из нескольких строк.
Приходится присваивать значение построчно, что намного медленнее. Или копировать диапазон через
буфер обмена. Это быстро, но сносит форматирование, что тоже не всегда приемлемо.

Написал функцию, которая позволяет это делать.

Ссылка на функцию с примером:

http://my-files.ru/n4n4id


Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6464
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.06.17 15:04. Заголовок: Pasha пишет: Написа..


Pasha пишет:

 цитата:
Написал функцию, которая позволяет это делать.


Гениально , работает однако
Спасибо !

Спасибо: 0 
Профиль
Alex_Cher





Пост N: 44
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 22.06.17 08:55. Заголовок: Dima пишет: Гениаль..


Dima пишет:

 цитата:
Гениально , работает однако



у меня нет ...
http://shot.qip.ru/00U6oZ-3JqTa71XL/

чего не хватает ?

Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1532
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 22.06.17 09:05. Заголовок: Alex_Cher пишет: че..


Alex_Cher пишет:

 цитата:
чего не хватает ?



hbwin включена в проект?

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6466
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.06.17 09:05. Заголовок: Alex_Cher пишет: че..


Alex_Cher пишет:

 цитата:
чего не хватает ?


HBWIN

Спасибо: 0 
Профиль
Alex_Cher





Пост N: 45
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 22.06.17 09:49. Заголовок: ... дальше больше ..


... дальше больше

http://shot.qip.ru/00U6oZ-6JqTa71XM/

надо было с С ++ начинать ...

Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1533
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 22.06.17 10:01. Заголовок: Alex_Cher пишет: ...


Alex_Cher пишет:

 цитата:

... дальше больше



Больше чего?

В MiniGUI (последней версии) правите файл сборки
call ..\..\..\batch\compile.bat _set2a /L hbwin %1 %2 %3 %4 %5 %6 %7 %8 %9
и спокойно компилируете.


Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 647
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет