Форум » [x]Harbour » Снова EXCEL (продолжение) » Ответить

Снова EXCEL (продолжение)

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

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

Andrey: Oskar_AAA пишет: Коллеги, есть ли пример кода запуска LibreOffice под xHarbour? Смотри пример в МиниГуи - :\MiniGUI\SAMPLES\Advanced\Tsb_Export Под хХарбор можно его переделать.

Oskar_AAA: Добрый день. Спасибо

Dima: Pasha пишет: Насчет админ прав - это мысль, проверю на проблемных компьютерах, где проказник-эксель отказывается работать Сегодня нарвался на ошибку да на ровном месте а ведь все работало :) Оказалось что отвалился принтер по умолчанию (или помог кто то , не было умалчиваемого принтера , хотя был) и штуки вида oSheet:PageSetup........... начали дружно бить ошибки


Andrey: Всем привет ! А как можно записывать свои формулы при создании листа экселя ? Допустим есть такая формула =RC[-13]-RC[-14], при создании листа записываю эту формулу как текст в ячейку. А как потом указать Экселю, что это формула и нужно пересчитать ? Ни разу таким не занимался. А заказчик хочет свои формулы править. Вот и сделал ТСБ с формулами по нужным колонкам, а в экселе идёт вставки ячейки как текст, а нужно как формула.

Pasha: А как можно Все что делает эксель, можно заставить его делать через ole. А как ? Включить запись макросов, и посмотреть, как он это делает, и сделать так же. На тот случай, когда запись опять сломалась, вместо oRange:Value надо присваивать строку в oRange:Formula

Pasha: Dima пишет: Сегодня нарвался на ошибку да на ровном месте а ведь все работало :) Да, эксель дуреет, если нет принтера, и все, что связано с форматирование страниц, отваливается. Тоже нарывался на такое

Andrey: А можно где то в Экселе записать 3-4 значения и чтобы юзер их не мог отредактировать ?

Dima: Andrey пишет: А можно где то в Экселе записать 3-4 значения и чтобы юзер их не мог отредактировать ? Попробуй руками в EXCEL , если получится то можно и в Harbour перенести

Andrey: Так я и спрашиваю, где это можно сделать. Есть ли места, где юзер не видит этих данных ? По простому можно наверное сделать на втором листе сразу в первой ячейки, допустим DATE(), вторая ячейка - фио юзера (кто делал отчёт), третья - период расчёта. Можно эти данные сделать белым цветом и юзер их не увидит, а мне в другой проге это нужно будет. Но юзер может тупо удалить второй лист и мои данные "накрылись". Вот и спрашиваю, где можно расположить такие данные, чтобы ОБЫЧНЫЙ юзер не смог исправить такие данные.

Dima: ну можно заблочить колонку(и) под пароль и скрыть её

ZAlex: информация к размышлению: если смотреть свойства файла (закладка Подробно), то можно узнать кто создал и сохранил файл. Но это возможно, если Office зарегистрирован. К тому же , эти данные как-то надо прочесть. (я не знаю как, пока)

nick_mi: Andrey пишет: А можно где то в Экселе записать 3-4 значения и чтобы юзер их не мог отредактировать В Excel есть защита и листа и защита ячеек на листе, можно воспользоваться

PSP: Andrey пишет: Можно эти данные сделать белым цветом и юзер их не увидит Ставишь курсор на ячейку и вверху видишь ее содержимое.

Haz: Andrey пишет: А можно где то в Экселе записать 3-4 значения и чтобы юзер их не мог отредактирова Можно, как уже написали , есть стандартные методы защиты ячеек. При записи макроса видно как их использовать , включая работу с паролем на изменение.

Andrey: Спасибо всем за отзывы. Нашёл вроде интересное решение проблемы. Писать данные во второй лист (как обычно он всегда присутствует), а потом его скрыть. Думаю обычный юзер не станет этот лист открывать и тем более удалять.

Dima: Andrey пишет: Думаю обычный юзер не станет этот лист открывать и тем более удалять. Можно еще проще , писать можно нужные тебе данные ну скажем в строке с номером 10 000 и сделать белым шрифтом на белом фоне. Ни кто и искать не станет

Andrey: Dima пишет: Можно еще проще , писать можно нужные тебе данные ну скажем в строке с номером 10 000 и сделать белым шрифтом на белом фоне. Это да, так можно. НО !!! попробуй отправить на печать такой лист. Удивишься сколько бумаги уйдёт... Юзер будет просто в ауте.

MIKHAIL: Andrey пишет: Нашёл вроде интересное решение проблемы. Писать данные во второй лист (как обычно он всегда присутствует), а потом его скрыть. Думаю обычный юзер не станет этот лист открывать и тем более удалять. можно сделать суперскрытый лист, он только через макрос VB может быть открыт

Andrey: Да думаю этого достаточно будет для обычного юзера. Для других целей нужны другие подходы. Сделал тест, кому будет интересно:[pre2] oExcel:WorkBooks:Add() oExcel:Visible := .T. oBook := oExcel:ActiveWorkBook oSheet := oExcel:ActiveSheet() oSheet := oBook:Sheets(2) oSheet:name := "МОЁ_НЕ_ТРОГАТЬ!" // имя листа изменить nCnt := oBook:Sheets:Count // количество листов в книге cMsg := "Количество листов в книге = " + HB_NtoS(nCnt) + ";" FOR EACH oSheet IN oBook:WorkSheets cMsg += oSheet:Name + ";" NEXT cMsg := StrTran(cMsg, ";", CRLF ) MsgInfo(cMsg) oSheet:Cells:Font:Name := "Arial" oSheet:Cells:Font:Size := 12 oSheet:Cells( 3, 1 ):Value := "City:" oSheet:Cells( 3, 2 ):Value := "Moskow" ....... // далее запись во 2 лист oSheet:Visible := .F. // скрыть лист 2 oBook:Sheets(3):Select() // перейдём на 3 лист oSheet := oExcel:ActiveSheet() oSheet:Visible := .F. // скрыть лист 3 oBook:Sheets(1):Select() // вернутся на 1 лист oSheet := oExcel:ActiveSheet() oSheet:name := "Мой_отчёт" // имя листа изменить ...........[/pre2] Исправления и правка приветствуются ! Как считать со скрытого листа, даже ещё и не знаю и не пробовал ....

Dima: Andrey пишет: Как считать со скрытого листа, даже ещё и не знаю и не пробовал .... Да точно так же



полная версия страницы