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 [только новые]


Haz
администратор




Пост N: 1036
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 07.08.16 11:35. Заголовок: Andrey пишет: Я у с..


Andrey пишет:

 цитата:
Я у себя делаю так:


Попробуй сначала задать формат а потом присвоить значение в ячейку

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




Пост N: 5947
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.08.16 13:53. Заголовок: Haz пишет: Попробуй..


Haz пишет:

 цитата:
Попробуй сначала задать формат а потом присвоить значение в ячейку


Работает однако.

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




Пост N: 6010
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.09.16 21:54. Заголовок: Может и была тема , ..


Может и была тема , не нашел.
Нужно через Ole , иметь возможность только смотреть и печатать документ Excel.

PS
Сам документ формируется с установкой пароля на изменение. С этим нет проблем.


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




Пост N: 3484
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.09.16 07:56. Заголовок: Можно вызвать метод:..


Можно вызвать метод:

Sheet:PrintPreview()


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




Пост N: 6011
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.09.16 08:05. Заголовок: Pasha пишет: Можно ..


Pasha пишет:

 цитата:
Можно вызвать метод:

Sheet:PrintPreview()


Да не плохой вариант , но если закрыть Preview то снова окажусь в Excel а там делай что хош.

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




Пост N: 3485
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.09.16 09:11. Заголовок: А если так: Excel:V..


А если так:

Excel:Visible := .t.
Sheet:PrintPreview()
Excel:Visible := .f.


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




Пост N: 6012
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.09.16 09:19. Заголовок: Pasha пишет: Excel:..


Pasha пишет:

 цитата:
Excel:Visible := .f.


Заработало
Спасибо

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




Пост N: 3494
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.10.16 08:46. Заголовок: В office 2013 и offi..


В office 2013 и office 2010 с последними обновлениями появилась новая неприятная хворь:
При открытии документа методом Excel:Workbooks:Open происходит или ошибка открытия, или зависание при выполнении метода.
Хворь проявляется у Excel, и иногда у Word.
У меня шаблоны документов хранятся на letodb сервере. Перед открытием я их копирую в папку temp из getenv('temp').
Причем одни шаблоны могут открываться нормально (это Word), а другие - нет.
С Excel ситуация такая: после открытия документа он заполняется, и остается на экране для дальнейших действий с ним пользователя.
Пользователь что-то с ним делает (печатает), и закрывает Excel. Оказывается, что процесс Excel остается висеть в памяти, а шаблон в папке Temp залочен им, и последующее открытие этого шаблона невозможно. Причем, такая ситуация проявляется нестабильно: два раза Excel может закрыться нормально, а на третий - затык.
Если не переписывать файлы в папку temp, а хранить их в другой папке, то хворь не проявляется совсем.

Иногда хворь проходит, если пошаманить с таким бубном:
"Откройте вкладку Файл, чтобы переключиться в представление Microsoft Office
Backstage. В меню Справка выберите пункт Параметры; отобразится диалоговое
окно Параметры. Щелкните элемент Центр управления безопасностью и нажмите
кнопку Параметры центра управления безопасностью. В центре управления
безопасностью щелкните пункт Параметры блокировки файлов. Установите флажок
Открывать выбранные типы файлов в режиме защищенного просмотра и разрешить
редактирование."
Но такие танцы с бубном помогают не во всех случаях.

Пока я выкручиваюсь заменой магической заколдованной папки temp на другую папку, а там кто знает, как эта хворь будет вести себя дальше.
Если занемог Office 2010 и обновлениями, то помогает его снос и установка версии с диска и отключением обновлений. У Office 2013 хворь врожденная.


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




Пост N: 6042
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.10.16 09:48. Заголовок: Pasha пишет: Перед ..


Pasha пишет:

 цитата:
Перед открытием я их копирую в папку temp из getenv('temp')


Тоже так делаю , но в папке Temp создаю свою папку и уже копирую в нее , проблем не было ни разу.

PS
Office 2003

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




Пост N: 3495
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.10.16 09:51. Заголовок: проблем не было ни р..



 цитата:
проблем не было ни разу.



Значит, жди сюрпризов с новыми офисами.

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




Пост N: 6043
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.10.16 13:26. Заголовок: Pasha Ключевая фраз..


Pasha
Ключевая фраза "в папке Temp создаю свою папку и уже копирую в нее" , может и у тебя сработает кто знает.

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



Пост N: 11
Зарегистрирован: 04.04.16
ссылка на сообщение  Отправлено: 23.12.16 02:48. Заголовок: для справки Задача ..


для справки

Задача - Переместить лист в первую позицию

Исходные данные
-----------------------------------
1. Макрос
Sheets("Лист3").Select
Sheets("Лист3").Move Before:=Sheets(1)

-----------------------------------
2.Функция VBA
Moves the sheet to another location in the workbook.

expression.Move(Before, After)
expression Required. An expression that returns an object in the Applies To list.

Before Optional Variant. The sheet before which the moved sheet will be placed. You cannot specify Before if you specify After.

After Optional Variant. The sheet after which the moved sheet will be placed. You cannot specify After if you specify Before.

Remarks
If you don't specify either Before or After, Microsoft Excel creates a new workbook that contains the moved sheet.

Example
This example moves Sheet1 after Sheet3 in the active workbook.

Worksheets("Sheet1").Move after:=Worksheets("Sheet3")

-----------------------------------
3.Работающий вариант

oBook:Sheets("Итого"):Move( oBook:Sheets(1) ) //поставить перед листом N1



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



Пост N: 97
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 05.01.17 08:05. Заголовок: Добрый день, как вер..


Добрый день,
как вернуть активным окно программы, после запуска Excel (формирование сводного отчета. 60 и более листов) из отдельных Excel файлов...?


начало формирования сводного отчета
oExcel_S:=ToleAuto():New("Excel.Application")
oExcel_S:Workbooks:Open(Day_Excel)
oExcel_S:Set("DisplayAlerts",.F.)
oExcel_S:Visible :=.T.
oBook_S :=oExcel_S:ActiveWorkBook
oAs_S :=oExcel_S:ActiveSheet()
oSheet_S:=oBook_S :Sheets(1):Select()
oSheet_S:=oBook_S :Sheets(1)
oAs_S :Cells(1,15):Select()

.... формирование листов из отдельных Excel файлов

// переход к сводному отчету
Hb_GtInfo(HB_GTI_CLIPBOARDDATA, "")
oSheet_S:=oBook_S :Sheets(1):Select()
oBook_S :=oExcel_S :ActiveWorkBook
oAs_S :=oExcel_S :ActiveSheet()
oSheet_S:=oBook_S :Sheets(1)
oAs_S :Cells(1,5):Select()
oSheet_S:Cells(1,5):Value=Dtoc(Date())+', '+Substr(Time(),1,5)
oAs_S :Cells(1,7):Select()
oSheet_S:Cells(1,7):Value=SecToTim(Seconds()-Start_Beg)
oAs_S :Cells(1,1):Select()
oBook_S :SaveAs(Upper(Day_Excel))
oExcel_S:Quit()
oAs_S :=Nil
oRange_S:=Nil
oBook_S :=Nil
oExcel_S:=Nil


использовать oExcel_S:Visible :=.F. не вариант, надо что бы процесс формирования сводного Excel отчета был виден в фоновом окне, а окно программы стало активным...

PS:xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6476)


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




Пост N: 5282
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.01.17 11:21. Заголовок: Oskar_AAA пишет: ка..


Oskar_AAA пишет:

 цитата:
как вернуть активным окно программы, после запуска Excel



Надо получить хендл своей программы и переключиться на неё.
Используй несколько функций из МиниГуи:
GETWINDOW() потом BRINGWINDOWTOTOP()
Скрытый текст

Только вот как получить хендл своей программы в хХарборе пока не знаю...


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



Пост N: 98
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 05.01.17 11:32. Заголовок: Тоже попробовал испо..


Тоже попробовал использовать
HB_FUNC( MINIMIZE )
{
ShowWindow( (HWND) hb_parnl(1), SW_MINIMIZE );
}

HB_FUNC( MAXIMIZE )
{
ShowWindow( (HWND) hb_parnl(1), SW_RESTORE );
ShowWindow( (HWND) hb_parnl(1), SW_MAXIMIZE );
}

HB_FUNC( MAXIRESTORE )
{
ShowWindow( (HWND) hb_parnl(1), SW_RESTORE );
}

тестирую...

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




Пост N: 5283
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.01.17 11:34. Заголовок: Вот ещё посмотри, дл..


Вот ещё посмотри, для хХарбора раньше делал:
Скрытый текст



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




Пост N: 6236
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.01.17 13:42. Заголовок: Oskar_AAA Попробуй ..


Oskar_AAA
Попробуй где то в самом начале своей программы после любого вывода
на экран получить хендл своего окна с помощью GETFOREGROUNDWINDOW (взять можно в Минигуи)
А после запуска Excel используй ShowWindow + BringWindowToTop (взять можно в Минигуи)

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



Пост N: 100
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 05.01.17 14:01. Заголовок: Dima можно выслать и..


Dima
можно выслать из Минигуи GETFOREGROUNDWINDOW и ShowWindow + BringWindowToTop
я не работал в Минигуи...
Спасибо...

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




Пост N: 6237
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.01.17 14:04. Заголовок: Oskar_AAA #pragma ..


Oskar_AAA
 
#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>
HB_FUNC (GETFOREGROUNDWINDOW)
{
HWND hWnd = GetForegroundWindow();
hb_retnl ((LONG) hWnd);
}

#pragma ENDDUMP



 
#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>
#include "hbapiitm.h"

HB_FUNC( BRINGWINDOWTOTOP )
{
BringWindowToTop( ( HWND ) hb_parnl( 1 ) );
}


HB_FUNC( SHOWWINDOW )
{
ShowWindow( ( HWND ) hb_parnl( 1 ), HB_ISNUM( 2 ) ? hb_parni( 2 ) : SW_SHOW );
}

HB_FUNC( SETFOCUS )
{
hb_retnl( ( LONG_PTR ) SetFocus( ( HWND ) hb_parnl( 1 ) ) );
}
HB_FUNC( SETFOREGROUNDWINDOW )
{
SetForegroundWindow( ( HWND ) hb_parnl( 1 ) );
}

#pragma ENDDUMP



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



Пост N: 101
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 05.01.17 14:15. Заголовок: Спасибо, начну тести..


Спасибо, начну тестировать...

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