![]() |
|
|
Регистрация | << Правила форума >> | 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. На какой строке вылетает ошибка?
Google в помощь |
#3
|
|||
|
|||
![]() Ошибка вылетает при создании таблицы
Код:
WordApplication1.ActiveDocument.Tables.Add(Range_, NumRows,NumColumns,DefaultTableBehavior,AutoFitBehavior); |
#4
|
||||
|
||||
![]() Могу поспорить, что так добавится:
Код:
WordApplication1.ActiveDocument.Tables.Add(Range_, NumRows,NumColumns,0,1); ![]() Google в помощь |
#5
|
|||
|
|||
![]() в данном случае компилятор выдаст сообщение, что тип передаваемых параметров должен быть индентичным
|
#6
|
||||
|
||||
![]() Цитата:
Google в помощь |
#7
|
|||
|
|||
![]() Мне кажется, тут непонятки именно с Range, но что именно ума не приложу
|
#8
|
|||
|
|||
![]() уже выдал )
|
#9
|
||||
|
||||
![]() Пропишите так:
Код:
WordApplication1.ActiveDocument.Tables.Add(WordApplication1.Selection.Range, 20,5,0,1); Google в помощь |
#10
|
|||
|
|||
![]() Если же определить переменные нужного типа, присвоить им значения ноль и единицу, как вы предложили, при создании таблицы возникает ошибка "неверный параметр"
|
#11
|
|||
|
|||
![]() возможно я вас не понимаю, простите могу глупость...
Но я работаю с Word не через создание Ole-объекта, а через объект WordApplication, в котором инкапсулированы определённые функции и процедуры, в описании которых используются определённые типы. В связи с этим невозможно передать процедуре параметр целочисленного типа, если он задан как OleVariant |
#12
|
|||
|
|||
![]() я к тому, что указанный Вами код не будет компилироваться
|
#13
|
||||
|
||||
![]() Цитата:
Google в помощь |