![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток, уважаемые форумчане. Понимаю, что тема избита, но нигде не могу найти ответа на мою проблему.
Встала необходимость экспортировать данные из базы в таблицу документа MS Word. После записи макроса перенёс код в Делфи. Код макроса следующий: Код:
Sub Макрос2()
'
' Макрос2 Макрос
' Макрос записан 29.04.2012 Admin
'
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:= _
5, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitContent
With Selection.Tables(1)
If .Style <> "Сетка таблицы" Then
.Style = "Сетка таблицы"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True
End With
End SubКод:
procedure TForm1.Button1Click(Sender: TObject);
var Range_: Range;
NumRows,NumColumns,DefaultTableBehavior,AutoFitBehavior: OleVariant;
begin
Range_:= WordApplication1.Selection.Range;
NumRows :=20;
NumColumns:= 5;
DefaultTableBehavior:= wdWord9TableBehavior;
AutoFitBehavior:= wdAutoFitContent;
WordApplication1.ConnectKind:=ckNewInstance;
WordApplication1.AutoConnect:= true;
WordApplication1.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordApplication1.ActiveDocument.Tables.Add(Range_,
NumRows,NumColumns,DefaultTableBehavior,AutoFitBehavior);
***
WordApplication1.Visible:= true;
WordApplication1.Disconnect;
end;При добавлеии таблицы выдаёт ошибку "Указанный диапазон взят не из правильного документа или цепочки надписей ". Помогите решить проблему. Заранее благодарен. |
|
#2
|
||||
|
||||
|
Пробегитесь по процедуре клавишей F8. На какой строке вылетает ошибка?
|
|
#3
|
|||
|
|||
|
Ошибка вылетает при создании таблицы
Код:
WordApplication1.ActiveDocument.Tables.Add(Range_,
NumRows,NumColumns,DefaultTableBehavior,AutoFitBehavior);
|
|
#4
|
||||
|
||||
|
Могу поспорить, что так добавится:
Код:
WordApplication1.ActiveDocument.Tables.Add(Range_,
NumRows,NumColumns,0,1);![]() |
|
#5
|
|||
|
|||
|
в данном случае компилятор выдаст сообщение, что тип передаваемых параметров должен быть индентичным
|
|
#6
|
||||
|
||||
|
Цитата:
|
|
#7
|
|||
|
|||
|
Мне кажется, тут непонятки именно с Range, но что именно ума не приложу
|
|
#8
|
|||
|
|||
|
уже выдал )
|
|
#9
|
||||
|
||||
|
Пропишите так:
Код:
WordApplication1.ActiveDocument.Tables.Add(WordApplication1.Selection.Range,
20,5,0,1); |
|
#10
|
|||
|
|||
|
Если же определить переменные нужного типа, присвоить им значения ноль и единицу, как вы предложили, при создании таблицы возникает ошибка "неверный параметр"
|
|
#11
|
|||
|
|||
|
возможно я вас не понимаю, простите могу глупость...
Но я работаю с Word не через создание Ole-объекта, а через объект WordApplication, в котором инкапсулированы определённые функции и процедуры, в описании которых используются определённые типы. В связи с этим невозможно передать процедуре параметр целочисленного типа, если он задан как OleVariant |
|
#12
|
|||
|
|||
|
я к тому, что указанный Вами код не будет компилироваться
|
|
#13
|
||||
|
||||
|
Цитата:
|