Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];

Вниз

Проблема с Вордом.   Найти похожие ветки 

 
Йцукен   (2003-03-27 09:23) [0]

Мастера подскажите как при отправке документа в Ворд получить доступ к полям Автор и название, самому их указать чтобы они уже в документе прописались?


 
calm   (2003-03-27 09:47) [1]

Сделай в ворде макрос. Посмотри код. Сделай также через интефейсы ворда


 
OlegM   (2003-03-27 09:55) [2]

Application.UserName = "Name"
Application.UserInitials = "Home"
Application.UserAddress = "e@mail.ru"


 
Йцукен   (2003-03-30 09:00) [3]


> OlegM © (27.03.03 09:55)
> Application.UserName = "Name"
> Application.UserInitials = "Home"
> Application.UserAddress = "e@mail.ru"

это же вроде инфа о пользователе, она же не соответствует автору и названинию текста в комментариях


 
Йцукен   (2003-03-30 21:18) [4]

Хелп!!!!!!


 
Calm   (2003-03-31 09:33) [5]


> Йцукен (30.03.03 21:18)
> Хелп!!!!!!

Не, ну ты пробовал?
> Сделай в ворде макрос. Посмотри код. Сделай также через
> интефейсы ворда

Или нужно выслать полностью код?


 
Севостьянов Игорь   (2003-03-31 12:05) [6]

Все немного не так как тебе говорили. Вот код для этого:

unit Unit1;

interface

uses
SysUtils, Classes, Controls, Forms, StdCtrls, ComObj, Word97;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure UpdateProperties(FileName: TFileName);
var
wdApp : Variant;
PropertyName : Variant;
PropertyValue : Variant;

begin
wdApp := CreateOLEObject("Word.Application");
try
wdApp.Visible := False;
wdApp.Documents.Add; //Новый документ
PropertyName := wdPropertyTitle;
PropertyValue := "Title";
wdApp.ActiveDocument.BuiltInDocumentProperties(PropertyName) := PropertyValue;
PropertyName := wdPropertyAuthor;
PropertyValue := "Author";
wdApp.ActiveDocument.BuiltInDocumentProperties(PropertyName) := PropertyValue;
finally
wdApp.ActiveDocument.SaveAs(FileName);
wdApp.Documents.Close;
wdApp.Quit;
wdApp := UnAssigned;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
UpdateProperties("C:\TEMP\Document1.doc");
end;

end.


На этом примере можешь изменить и другие свойства - список их находится в Word97.pas


 
DOOMin   (2003-03-31 12:11) [7]

Почитай про интерфейс IPropertyStorage в MSDN, как раз про это.


 
Йцукен   (2003-04-01 05:59) [8]


> Севостьянов Игорь

Спасибо сейчас попробую похоже что так и надо, я просто не мог все понять как и куда вставлять wdPropertyTitle и wdPropertyAuthor.


 
Йцукен   (2003-04-01 10:59) [9]


> Севостьянов Игорь

Я немного не понял :(((
что делает эта строка? она ещё и ощибку выдает

> wdApp := UnAssigned;

И твой код не заполняет сами поля Автора и названия.
И я не могу понять как мне это записать при работе с WordApplication, при попытке написать WordApplication.ActiveDocument.BuiltInDocumentProperties(PropertyName) := PropertyValue;
нехватает параметров :(( какие именоо нужны еще?


 
calm   (2003-04-01 11:31) [10]


> calm © (27.03.03 09:47)
> Сделай в ворде макрос. Посмотри код. Сделай также через
> интефейсы ворда

Каюсь, был не прав. Макрос содержит пустой код :(


 
Севостьянов Игорь   (2003-04-01 13:45) [11]


> Йцукен (01.04.03 10:59)
>
> > Севостьянов Игорь
>
> Я немного не понял :(((
> что делает эта строка? она ещё и ощибку выдает
>
> > wdApp := UnAssigned;
>
> И твой код не заполняет сами поля Автора и названия.
> И я не могу понять как мне это записать при работе с WordApplication,
> при попытке написать WordApplication.ActiveDocument.BuiltInDocumentProperties(PropertyName)
> := PropertyValue;
> нехватает параметров :(( какие именоо нужны еще?

Ты не прав все работает - я проверял...

Создай новый проект и ничего не добавляй из объектов кроме - кнопки. На кнопку повесь событие Button1Click, а далее все как у меня в примере без изменений - и увидишь результат - предполагаю что у тебя что-то неправильно прописано... Тестировал на Win2000/Office2000/Delphi5

Но думаю при параметрах Win9х/Office97/Delphi5 тоже заработает
Возможно появились изменения в Delphi6 по этому поводу.
Насчет wdApp := UnAssigned;

UnAssigned + <F1>

Unassigned constant
Used for a Variant variable not yet assigned a value.

const Unassigned: Variant;

Description

The Unassigned constant is used to indicate that a Variant variable has not yet been assigned a value. The initial value of any Variant variable is Unassigned. The Unassigned value disappears as soon as a Variant variable is assigned any other value, including the value 0, a zero-length string, and the Null value.

Using an Unassigned Variant in an expression causes an EVariantError exception to be raised. Likewise, if you attempt to convert an Unassigned Variant to another type (using VarAsType or VarCast), an EVariantError exception is raised.

You can make a Variant variable unassigned by assigning the Unassigned constant to it. This is particularly useful in situations where a Variant contains a reference to an OLE Automation Object, thus keeping the object "alive" until another value is assigned to the Variant.

Do not use Unassigned to test whether a Variant value is Unassigned. Instead, use the VarIsEmpty standard function. When used on an unassigned Variant, the VarType standard function returns varEmpty.


 
Севостьянов Игорь   (2003-04-01 13:49) [12]

Если не веришь в работоспособности - пиши на мыло - я тебе ехешник пришлю - сам убедишься в правильности моего ответа

А может ты используешь TWordApplication с закладки Servers - забудь о нем... Хотя можно и через него это сделать...


 
Aristokrat   (2003-04-01 14:13) [13]

тест


 
Aristokrat   (2003-04-01 14:18) [14]


> Севостьянов Игорь

это я был (Йцукен) :)) я просто пароль не мог вспомнить :))
пиши либо на тот который в анкете либо на aristokratt@yandex.ru


мне желательно как раз с использованием TWordApplication с закладки Servers желательно!
насчет wdApp := UnAssigned; в Хелпе нашел, но ошибка все равно :(((
В Delphi6 не могло ничего поменятся?



 
Aristokrat   (2003-04-02 12:06) [15]


> Севостьянов Игорь

Пришли плиз на адрес: aristokratt@yandex.ru
так как тот который в анкете пока мне не доступен :(((


 
Йцукен   (2003-04-03 09:11) [16]

АП


 
Севостьянов Игорь   (2003-04-03 10:15) [17]

Могло и поменятся... Ладно посмотрю, что там можно еще придумать... через TWordApplication


 
Aristokrat   (2003-04-03 10:53) [18]


> Севостьянов Игорь

ОК! я уже весь инет перерыл :))
пока не нашел :((


 
Севостьянов Игорь   (2003-04-03 11:25) [19]

Ну вот и решение - блин с TWordApplication целый изврат получается:

procedure wdUpdateProperties(wordApp: TWordApplication; FileName: TFileName);
var
vFileName : OleVariant;
vFileFormat : OleVariant;
vSaveChanges : OleVariant;

procedure UpdateProperty(vName, vValue: OleVariant);
var
vProperties : OleVariant;
begin
vProperties := wordApp.ActiveDocument.BuiltInDocumentProperties;
vProperties.Item(vName) := vValue;
end;

begin
Screen.Cursor := crHourGlass;
try
wordApp.WindowState := wdWindowStateMaximize;
wordApp.DisplayAlerts := wdAlertsNone;
wordApp.Visible := True;
wordApp.Connect;
vFileName := FileName;
vFileFormat := wdFormatDocument;
if FileExists(FileName) then
wordApp.Documents.Open(vFileName, emptyParam, emptyParam, emptyParam, emptyParam,
emptyParam, emptyParam, emptyParam, emptyParam, vFileFormat)
else
wordApp.Documents.Add(emptyParam, emptyParam);

UpdateProperty(wdPropertyTitle, "Title");
UpdateProperty(wdPropertyAuthor, "Author");

wordApp.ActiveDocument.SaveAs(vFileName, vFileFormat,
emptyParam, emptyParam, emptyParam, emptyParam,
emptyParam, emptyParam, emptyParam, emptyParam,
emptyParam);
vSaveChanges := wordApp.ActiveDocument.Saved; // узнаем сохранен ли файл
finally
wordApp.ActiveDocument.Close(vSaveChanges, emptyParam, emptyParam); // закрываем
wordApp.Disconnect;
Screen.Cursor := crDefault ;
end;
if vSaveChanges then MessageBox(0, "Операция прошла успешно", "Уведомление", MB_ICONINFORMATION);
end;

procedure TfrmMain.btnUpdatePropertiesClick(Sender: TObject);
begin
wdUpdateProperties(wordApp, "C:\TEMP\Doc0.doc");
end;


Проверено - работает... Надеюсь для Delphi 6 так же подойдет


 
Aristokrat   (2003-04-03 11:29) [20]

Спасибо ща проверю!!!


 
Aristokrat   (2003-04-03 12:03) [21]


> Севостьянов Игорь

СПАСИБО!!!! ВСЕ РАБОТАЕТ!!!!1
С МЕНЯ ПИВО! :))



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.009 c
3-44057
Huc
2003-03-24 16:12
2003.04.14
---|Ветка была без названия|---


14-44430
pkrd
2003-03-29 07:27
2003.04.14
Подскажите можно ли в InstallShield установить настройку ODBC


14-44401
soware
2003-03-28 13:24
2003.04.14
ZIP


1-44086
Tornado
2003-04-01 09:39
2003.04.14
как переименовать директорию?


14-44376
Supreme 2
2003-03-26 23:34
2003.04.14
Знакомства в Интернете





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский