Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Можно ли из Delphi выполнить в Excel макрос, не записывая его в документ?

2.0K
29 марта 2006 года
Neko
25 / / 14.11.2002
Можно ли выполнить макрос, не внося изменений в открытый документ Excel?
929
30 марта 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by Neko
Можно ли выполнить макрос, не внося изменений в открытый документ Excel?


Ну если перевести его на язык Делфи, то почему бы и нет.

2.0K
30 марта 2006 года
Neko
25 / / 14.11.2002
Цитата:
Originally posted by sp999
Ну если перевести его на язык Делфи, то почему бы и нет.


Какой "дельный" совет!
Если бы можно было перевести на Delphi, я бы не спрашивал. Мне надо проверить тип данных. Макросом это делаю так IsDate() .. IsNumeric()...
Дату очень удобно проверять, он сразу на все возможные форматы даты смотрит: 01.02.02, 01/02/02 ...... и т.п.
А в Дельфе это как? Ручками проверять?

929
30 марта 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by Neko
Какой "дельный" совет!
Если бы можно было перевести на Delphi, я бы не спрашивал. Мне надо проверить тип данных. Макросом это делаю так IsDate() .. IsNumeric()...
Дату очень удобно проверять, он сразу на все возможные форматы даты смотрит: 01.02.02, 01/02/02 ...... и т.п.
А в Дельфе это как? Ручками проверять?


Каков вопрос - таков и ответ!
IsDate(), IsNumeric() - это функции VBA, а не Excel'а, поэтому стандартными подходами их не заюзаешь.
Взгляни лучше на функцию Excel'а ЯЧЕЙКА - мне кажется она тебе сможет их заменить.

2.0K
30 марта 2006 года
Neko
25 / / 14.11.2002
Цитата:
Originally posted by sp999
Каков вопрос - таков и ответ!
IsDate(), IsNumeric() - это функции VBA, а не Excel'а, поэтому стандартными подходами их не заюзаешь.
Взгляни лучше на функцию Excel'а ЯЧЕЙКА - мне кажется она тебе сможет их заменить.


Функция хорошая, спасибо.
Однако, мне надо анализировать не ячейку. Мне надо анализировать значение переменно типа Variant в Delphi. Записывать это значение в Excel, для анализа, не входит в мои планы.

929
30 марта 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by Neko
Функция хорошая, спасибо.
Однако, мне надо анализировать не ячейку. Мне надо анализировать значение переменно типа Variant в Delphi. Записывать это значение в Excel, для анализа, не входит в мои планы.


Если переменная типа Variant принадлежит Делфи, то где тут Excel?

2.0K
30 марта 2006 года
Neko
25 / / 14.11.2002
Цитата:
Originally posted by sp999
Если переменная типа Variant принадлежит Делфи, то где тут Excel?



:D Запутал я...
Дело в том, что эта переменная будет потом использоваться в Excel. Но перед этим надо узнать ее тип, что бы понять как ее использовать. Я хотел для этого задействовать VBA Ёкселя, поскольку он очень лихо определяет типы данных.

5
30 марта 2006 года
hardcase
4.5K / / 09.08.2005
Цитата:
Originally posted by Neko
Я хотел для этого задействовать VBA Ёкселя, поскольку он очень лихо определяет типы данных.

Ты герой. :D
Вопрос на $100: модуль Variants в делфи для чего служит?
Есть функция

 
Код:
function VarType(const V: Variant): TVarType;

она возвращает тип текущего значения в вариантной переменной.
а вот эты функция вернёт вообще значение переменной в строковом предствалении
 
Код:
function VarToStr(const V: Variant): string;
2.0K
31 марта 2006 года
Neko
25 / / 14.11.2002
Цитата:
Originally posted by hardcase
Ты герой. :D
Вопрос на $100: модуль Variants в делфи для чего служит?
Есть функция
 
Код:
function VarType(const V: Variant): TVarType;

она возвращает тип текущего значения в вариантной переменной.
а вот эты функция вернёт вообще значение переменной в строковом предствалении
 
Код:
function VarToStr(const V: Variant): string;



КЛАСС!
А ты пробовал считать строку из поля ввода (TEdit) в Variant и испольовать VarType ?
А я пробовал. Как ты не крути, а функция тебе выдаст 256 - что есть Pascal String.

5
31 марта 2006 года
hardcase
4.5K / / 09.08.2005
Цитата:
Originally posted by Neko
КЛАСС!
А ты пробовал считать строку из поля ввода (TEdit) в Variant и испольовать VarType ?
А я пробовал. Как ты не крути, а функция тебе выдаст 256 - что есть Pascal String.


А ты что хотел?
Чтоб она ещё и распознавала за тебя, что введено? Могу дать модуль для разбора строки, с помощью него, ты сможешь разобрать строку и определить, что введено - это если нужно проверить какой-нить хитрый формат. Есть ещё TryStrToInt, TryStrToFloat, TryStrToDate, TryStrToDateTime, TryStrToBool и еще несколько - они пытаются строку преобразовать в обычные типы. Что мешает их использовать?

2.0K
31 марта 2006 года
Neko
25 / / 14.11.2002
Цитата:
Originally posted by hardcase
А ты что хотел?
Чтоб она ещё и распознавала за тебя, что введено?


Функции IsDate(), IsNumeric() ... именно это и делают.

Цитата:
Могу дать модуль для разбора строки, с помощью него, ты сможешь разобрать строку и определить, что введено - это если нужно проверить какой-нить хитрый формат.


А твой модуль все возможные форматы даты определяет? Например такой формат "12 мая 2003". А представь, что такой формат может быть задан на разных языках народов мира?

Цитата:
Есть ещё TryStrToInt, TryStrToFloat, TryStrToDate, TryStrToDateTime, TryStrToBool и еще несколько - они пытаются строку преобразовать в обычные типы. Что мешает их использовать?


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

Я вообще-то не люблю Basic и не уважаю его. Но в данном случае это простейший, а главное быстрейший вариант.

5
31 марта 2006 года
hardcase
4.5K / / 09.08.2005
Цитата:
Originally posted by Neko
Очень просто. Использовать их нельзя, так как, к примеру, TryStrToDate определяет только один формат даты (заданный в системе). А мне надо определять все возможные форматы даты, как это делает Excel (почему к его помощи я и прибег).


Так, ты хочешь сказать, что я ничего в делфи не смыслю и полный чайник?
А ты сперва читал документацию?

 
Код:
function TryStrToDate(const S: string; out Value: TDateTime; const FormatSettings: TFormatSettings): Boolean; overload;

где TFormatSettings - это структура с форматом даты.
2.0K
31 марта 2006 года
Neko
25 / / 14.11.2002
Цитата:
Originally posted by hardcase
Так, ты хочешь сказать, что я ничего в делфи не смыслю и полный чайник?
А ты сперва читал документацию?
 
Код:
function TryStrToDate(const S: string; out Value: TDateTime; const FormatSettings: TFormatSettings): Boolean; overload;

где TFormatSettings - это структура с форматом даты.


Почитал и даже попробовал. Получал я TFormatSettings для LOCALE_SYSTEM_DEFAULT. Применял TryStrToDate. Длинный формат даты она у меня так и не распознала. А потом как ты предлагаешь проверять форматы с разными разделителями даты к примеру? В TFormatSettings указывается один разделитель (у меня точка). Ты предлагаешь в цикле разные варианты подставлять. А если у меня винда русская, то я месяцы по английски не смогу записывать, или предлагаешь перебирать все форматы функцией GetLocaleFormatSettings() ?
Я ни в коем случае не говорю, что ты "чайник"! Просто ты на мою проблему смотришь слишком поверхтностно, как мне кажется.

5
31 марта 2006 года
hardcase
4.5K / / 09.08.2005
Цитата:
Originally posted by Neko
Ты предлагаешь в цикле разные варианты подставлять.


Я такого не предлагаю.
В любой программе есть такая вещь как "Настройка" - предоставь пользователю возможность самому поставить какой нибудь один вариант записи даты и не мучайся. Зачем нужна такая гибкость, когда программа сама рвёт попу, чтоб понять, что же такое пользователь ввёл?

2.0K
01 апреля 2006 года
Neko
25 / / 14.11.2002
Цитата:
Originally posted by hardcase
Я такого не предлагаю.
В любой программе есть такая вещь как "Настройка" - предоставь пользователю возможность самому поставить какой нибудь один вариант записи даты и не мучайся. Зачем нужна такая гибкость, когда программа сама рвёт попу, чтоб понять, что же такое пользователь ввёл?


Ну как,... Все для человека!!! ;) Для чайников, так сказать! :)

2.0K
01 апреля 2006 года
Neko
25 / / 14.11.2002
Я НАШЕЛ!!!
Нашел классную библиотеку от Microsoft. Я о ней раньше не слышал. Она решает мою проблему! Она позволяет исполнять VB script без обращения к Excel! Подробности тут:
http://www.nkfi.ru/doc/prog/delphi076.html#04
http://72.14.203.104/search?q=cache:tUKXCC_dM2QJ:www.linuxeden.com/forum/blog/resserver.php%3FblogId%3D110848%26resource%3DScripting%2520Your%2520Delphi%2520Applications.pdf+TScriptControl+Run&hl=ru&gl=ru&ct=clnk&cd=16
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог