Форум: "Основная";
Текущий архив: 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.008 c