Форум: "Основная";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
ВнизOffice & Delphi Найти похожие ветки
← →
Ruslan. (2003-04-02 19:18) [0]Всем привет! Уважаемые мастера чего в этой процедуре не хватает для работы с Office XP или Office2000? С Office 97 прекрасно работает.
uses ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
MSWord: Variant;
begin
try
MsWord := GetActiveOleObject("Word.Application");
except
try
MsWord := CreateOleObject("Word.Application");
MsWord.Visible := True;
except
Exception.Create("Error");
end;
end;
MSWord.Documents.Add;
MSWord.Selection.Font.Size := 12;
MSWord.Selection.TypeText("Текст");
MSWord.Selection.Font.Bold := true;
MSWord.Selection.TypeText(#13#10"new"); MSWord.ActiveDocument.SaveAs("C:\ex.doc");
end;
← →
Иван Шихалев (2003-04-02 21:42) [1]Я бы попробовал добавить после MSWord.Documents.Add
MSWord.ActiveWindow.Visible := true;
Хотя утверждать не берусь. А что происходит в 2K/XP?
← →
Ruslan. (2003-04-03 19:40) [2]Что происходит? Да просто выходит сообщение "Variant does not reference an automation object" и все. Помогите пожалуйста очень нужно. И еще один вопрос, можно ли увеличить каким то образом скорость передачи данных в Word.
← →
Smashich (2003-04-03 20:10) [3]1. почему не юзать закладку servers? удобнее мне кажется...и еще толи у тя офис не установлен, толи в D5 проблема...в D6 все работает..
2 а где у тя собственно тормоза? код?
← →
Smashich (2003-04-03 20:16) [4]в D именно под XP и с OfficeXP
← →
Clickmaker (2003-04-03 20:28) [5]update pack 1 для дельфи стоит?
← →
Ozone (2003-04-04 05:22) [6]Может так попробуешь:
var
Wa, Wd: Variant;
begin
Wa:=CreateOleObject("Word.Application");
Wd:=Wa.Documents.Add;
Wa.Visible:=true;
{а помот уже работаешь только с Wd как документом}
{
По окончанию работы Wd.Close; Wa.Quit;
}
end;
И никаких ошибок.
← →
Rol (2003-04-04 06:59) [7]Обратите внимание на try/except. Ситуация: нет активного окна и по каким-либо причинам не создаётся ОЛЕ-объект, что делаем дальше согласно коду? Правильно, в ЛЮБОМ случае пытаемся получить доступ к его св-вам/методам.
← →
Bel (2003-04-04 09:54) [8]Советую воспользоваться советом Smashich © (03.04.03 20:10) насчёт вкладки Servers. Можешь почитать эту статью: http://www.proglib.ru/articles/art0000039.asp . Там насчёт того, что компоненты из вкладки Servers работают быстрее, чем позднее связывание.
И ещё. Насчёт твоего кода. По-моему, надо использовать не Variant, а OleVariant.
← →
Ruslan. (2003-04-05 18:26) [9]Спасибо!
← →
DrPass (2003-04-05 20:10) [10]Честно говоря, я грешил на несколько некорректную реализацию объекта, связанного с интерфейсом Word.Application в Office 2000.
Была аналогичная проблема - в совершенно невинном куске кода
> var
> Wa, Wd: Variant;
> begin
> Wa:=CreateOleObject("Word.Application");
> Wd:=Wa.Documents.Add;
> Wa.Visible:=true;
> {а помот уже работаешь только с Wd как документом}
> {
> По окончанию работы Wd.Close; Wa.Quit;
> }
> end;
Вот таком точно. Прога просто заполняла таблицу (документ создавался на основе темплейта), и сохраняла в файл. Единственное, я не закрывал сам документ перед вызовом Quit - по логике, разве не пофиг ему?
После вызова WaQuit Word все равно оставался в памяти, и перед завершением работы программа на пустом месте выдавала Access Violation. А вот в Office 97 все работало, как как и должно было. Я поленился разбираться, т.к. на всех машинах в конторе тогда стоял 97, и проблем не возникало.
← →
Ruslan. (2003-04-06 09:54) [11]C Word2000 прокатывает а вот с EXCEL2000 не работает.
var
EA: Variant;
begin
EA:=CreateOleObject("Excel.Application");
EA.Visible:=true;
..................
..................
EA.Close; Wa.Quit;
end;
← →
Ruslan. (2003-04-06 10:00) [12]Ошибачка в предпоследней строчке "EA.Close; Wa.Quit" замена->"EA.Quit"
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c