On-line: Pasha, PSP, гостей 1. Всего: 3 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 97
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.11.06 17:15. Заголовок: 1.doc + 2.doc + 3.doc + 4.doc = all.doc


Кто может подсказать как объединить несколько WORD'овских файлов в один файл.
И желательно чтоб в нем сделать "нумерацию страниц".
Заранее спасибо за решение.

Спасибо: 0 
Профиль
Ответов - 32 , стр: 1 2 All [только новые]


Администратор




Пост N: 404
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.11.06 09:53. Заголовок: Re:


oWord := TOleAuto():new('Word.Application')

коллекция документов:

oDocs := oWord:Documents

открытие нового:

oDocs:Open( cFile )

Переключение между документами

oDoc := oDocs:Invoke('Item', nDoc)

Выбор документа:

oDoc:Select()

Рабочая область:

oSelect :- oWord:Selection

Копировать все

oSelect:WholeStory()
oSelect:Copy()

Вставить

oSelect:Paste()


Спасибо: 0 
Профиль
постоянный участник




Пост N: 99
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.11.06 19:34. Заголовок: Re:


Паша, пожалуйста сделай тестовый пример полностью. Ну не все-же разбираются в этом.
Взываю к твоему профессионализму, поделись чуток знаниями.


Спасибо: 0 
Профиль
Администратор




Пост N: 405
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 22.11.06 10:04. Заголовок: Re:


дык я вовсе не спец в этих визуальных васиках
Сделал следующее
Запустил ворд, включил запись макросов и вперед
Открыл 3 файла, переключился на 2-й, ctrl-a, ctrl-c, на 1-й, ctrl-end, ctrl-v,
на 3-й, ctrl-a, ctrl-c, на 1-й, ctrl-v

Получилось:

'
' Макрос1 Макрос
' Макрос записан 22.11.2006 Паша
'
Application.Move Left:=0, Top:=0
Documents.Open FileName:="avans.doc", ConfirmConversions:=False, ReadOnly _
:=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _
:="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _
, Format:=wdOpenFormatAuto, XMLTransform:=""
Documents.Open FileName:="Avans2.doc", ConfirmConversions:=False, ReadOnly _
:=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _
:="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _
, Format:=wdOpenFormatAuto, XMLTransform:=""
Application.Move Left:=0, Top:=0
Documents.Open FileName:="Kord.doc", ConfirmConversions:=False, ReadOnly:= _
False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _
"", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
Format:=wdOpenFormatAuto, XMLTransform:=""
Windows(2).Activate
Selection.WholeStory
Selection.Copy
Windows(1).Activate
Selection.EndKey Unit:=wdStory
Windows(3).Activate
Selection.WholeStory
Selection.PasteAndFormat (wdPasteDefault)
Selection.Copy
Windows(1).Activate
Selection.PasteAndFormat (wdPasteDefault)

остается перевести эту фигню на харбор
упростить открытие - достаточно просто open, и не в отдельном окне а в Documents
переключаться не между окнами а между документами
wdStory - это константа 6
вместо PasteAndFormat поставить просто Paste


Спасибо: 0 
Профиль
постоянный участник




Пост N: 102
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.11.06 23:58. Заголовок: Re:


Понятно. Пойдем по нарастающей ....
А как на чистом xHarbour'e можно открыть Word'довский документ ?
и далее записать под другим именем ?
---------------------------------------------------------------
oWord := TOleAuto():new('Word.Application')
коллекция документов:
oDocs := oWord:Documents
открытие нового:
oDocs:Open( cFile )
---------------------------------------------------------------
Какую библиотеку используют вышеперечисленные операторы, и где примеры взять об них ?


Спасибо: 0 
Профиль
Администратор




Пост N: 406
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.11.06 12:01. Заголовок: Re:



 цитата:
А как на чистом xHarbour'e можно открыть Word'довский документ ?
и далее записать под другим именем ?



дык метод SaveAs


 цитата:
Какую библиотеку используют вышеперечисленные операторы, и где примеры взять об них ?



дык эти вопросы перетираются здесь уже много лет
кратко повторяю
надо взять хэлп от MS по васику: vbawd10.chm или vbxld10.chm

там описаны все обьекты ворд-эксель, свойства и методы
Например

expression.SaveAs(FileName, FileFormat, LockComments, Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended, EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter, Encoding, InsertLineBreaks, AllowSubstitutions, LineEnding, AddBiDiMarks)

и далее описываются все параметры
Как видно параметры ключевые, но для харбора надо их указывать как позиционные

Далее. Как узнать что надо вызывать
Сделать тоже самое в ворде, предварительно включив запись макросов. Затем остановить запись, посмотреть получившийся макрос. В хелпе уточнить что это
за методы. Перевести с васика на харбор



Спасибо: 0 
Профиль
постоянный участник




Пост N: 109
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.11.06 18:12. Заголовок: Re:


Паша, ты меня не понял.
Я спрашиваю кусок программы по открытию любого DOC файла на чистом xHarbour'e.

FUNCTION MAIN()

// Что здесь писать надо ?

RETURN NIL

И как ты переводишь "с васика на харбор" ? Поделись опытом.

Спасибо: 0 
Профиль
Администратор




Пост N: 408
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 28.11.06 10:02. Заголовок: Re:


открытие документа

oWord := TOleAuto():New( "Word.Application" )
oDocs := oWord:Documents
oDocs:Open( cFile )


перевод с бэйсика заключается в замене точки на двоеточие, передаче параметров
в скобках, замене ключевых параметров на позиционные, выбор элемента коллекции
чарез [], пример: oRow := oRows[1] и учет других различий в синтаксисе языков


Спасибо: 0 
Профиль
Администратор




Пост N: 409
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 28.11.06 10:04. Заголовок: Re:


еще желательно указать

oWord:Visible := .t.

иначе окно ворд будет невидимо


Спасибо: 0 
Профиль
постоянный участник




Пост N: 117
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.11.06 01:49. Заголовок: Re:


/*
Сделал пример, как и думал что чего-то не хватает.
*/
#include "common.ch"

FUNCTION MAIN(cFile)
LOCAL oWord, oDocs
DEFAULT cFile TO "test.doc"

oWord := TOleAuto():New( "Word.Application" )
oDocs := oWord:Documents
oDocs:Open( cFile )
oWord:Visible := .t.

RETURN NIL

/*
Получаю:

++++++++++++++++++++ Internal Error Handling Information +++++++++++++++++++++

Subsystem Call ..: Word.Application:DOCUMENTS
System Code .....: 16389
Default Status ..: False
Description .....: E_FAIL
Operation .......: OPEN
Arguments .......: [ 1] = Type: C Val: test.doc
Involved File ...:
Dos Error Code ..: 0

Trace Through:
----------------
TOLEAUTO:OPEN : 0 in Module: win32ole.prg
MAIN : 9 in Module: doc_word.prg
**********************************************************************

9 строка - oDocs:Open( cFile )

Как исправить ?


Спасибо: 0 
Профиль
Администратор




Пост N: 410
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.11.06 09:27. Заголовок: Re:


Дать имя файла с полным путем к нему

Спасибо: 0 
Профиль
постоянный участник




Пост N: 119
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.11.06 17:28. Заголовок: Re:


Да он лежит в текущем каталоге вместе с EXE-ником !


Спасибо: 0 
Профиль
Администратор




Пост N: 411
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.11.06 19:28. Заголовок: Re:


Твоя программа и ворд это две большие разницы
Для ворда текущий каталог мои документы, про твой он ничего не знает
А открывает файл имемнно ворд

Спасибо: 0 
Профиль
постоянный участник




Пост N: 120
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.12.06 04:20. Заголовок: Re:


Опять облом ..... Подскажите как делать дальше.

#define CRLF CHR(13)+CHR(10)

FUNCTION MAIN()
LOCAL oWord, oDocs, nI, oText, oDoc, nDoc
LOCAL aFileDoc := {"test1.doc","test2.doc","test3.doc","test4.doc"}
LOCAL cFileDocAll := "All_test.doc"
LOCAL cFile, cPathDoc := SUBSTR(EXENAME(), 1, RAT("\",EXENAME() ) )

FOR nI := 1 TO LEN(aFileDoc)
cFile := cPathDoc + aFileDoc[nI]
IF !FILE(cFile)
ALERT("; Нет файла "+cFile+"; ",{"Пропускаю"} )
ELSE
oWord := TOleAuto():New( "Word.Application" )
oDocs := oWord:Documents
oDocs:Open( cFile )
// Сделать окно WinWord видимым
oWord:Visible := .t.
ENDIF
NEXT

// Создать НОВЫЙ результирующий файл
oWord := TOleAuto():New( "Word.Application" )
oDocs := oWord:Documents:Add()
oText := oWord:Selection()
oText:Text := HB_OEMTOANSI("OLE на xHarbour") + CRLF
oText:Font:Name := "Arial"
oText:Font:Size := 48
oText:Font:Bold := .T.
// не получается записать несколько строчек, остается только последняя
oText:Text := HB_OEMTOANSI("проверка записи") + CRLF
oText:Font:Name := "Arial"
oText:Font:Size := 12
oText:Font:Bold := .F.
// и потом выделение убрать нужно, а как ?


cFile := cPathDoc + cFileDocAll
oDocs:SaveAs( cFile )
// Сделать окно WinWord видимым
oWord:Visible := .T.
oWord:WindowState := 1 // Maximize


// Далее нужно переключиться на 1 файл, скопировать в результирующий
// нифига не получается .............




// ЗАКРЫТЬ ВСЕ ОКНА WORD'a
FOR nI := 1 TO LEN(aFileDoc)

NEXT

RETURN NIL

Паша еще пишет:
упростить открытие - достаточно просто open, и не в отдельном окне а в Documents
переключаться не между окнами а между документами
wdStory - это константа 6
вместо PasteAndFormat поставить просто Paste

Это для экономии памяти или для чего ?

Спасибо: 0 
Профиль
Администратор




Пост N: 412
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.12.06 10:35. Заголовок: Re:


Чтобы переключаться между документами, не надо 2-й раз запускать word,
1 раз oWord := TOleAuto():New( "Word.Application" )

я сделал этот пример через ворд:

Selection.TypeText Text:="Пример оле"
Selection.TypeParagraph
Selection.Font.Bold = wdToggle
Selection.TypeText Text:="Жирный"
Selection.TypeParagraph
Selection.Font.Bold = wdToggle
Selection.TypeText Text:="обычный"

т.е для новой строки можно вызвать метод TypeParagraph

а wdToggle это #define wdToggle 9999998

закрыть все документы:

for each oDoc in oDocs
oDoc:Close()
next

Спасибо: 0 
Профиль
постоянный участник




Пост N: 124
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.12.06 00:31. Заголовок: Re:


Pasha пишет:

 цитата:
т.е для новой строки можно вызвать метод TypeParagraph

закрыть все документы:

for each oDoc in oDocs
oDoc:Close()
next



НИФИГА не могу перевести с васика на харбор !!!
Помогите исправить в исходнике:

#define CRLF CHR(13)+CHR(10)

FUNCTION MAIN()
LOCAL oWord, oDocs, nI, oText, oDoc, nDoc
LOCAL aFileDoc := {"test1.doc","test2.doc","test3.doc","test4.doc"}
LOCAL cFileDocAll := "All_test.doc"
LOCAL cFile, cPathDoc := SUBSTR(EXENAME(), 1, RAT("\",EXENAME() ) )

oWord := TOleAuto():New( "Word.Application" )
FOR nI := 1 TO LEN(aFileDoc)
cFile := cPathDoc + aFileDoc[nI]
IF !FILE(cFile)
ALERT("; Нет файла "+cFile+"; ",{"Пропускаю"} )
ELSE
oDocs := oWord:Documents
oDocs:Open( cFile )
ENDIF
NEXT

// Создать НОВЫЙ результирующий файл
oDocs := oWord:Documents:Add()
oText := oWord:Selection()
oText:Text := HB_OEMTOANSI("OLE на xHarbour") + CRLF
oText:Font:Name := "Arial"
oText:Font:Size := 48
oText:Font:Bold := .T.
******* т.е для новой строки можно вызвать метод TypeParagraph
************************* НЕРАБОТАЕТ !!!!
********************* oText:Text:Paragraph
********************* oText:TypeParagraph
********************* oText:Type:Paragraph

// не получается записать несколько строчек, остается только последняя
oText:Text := HB_OEMTOANSI("проверка записи") + CRLF
oText:Font:Name := "Arial"
oText:Font:Size := 12
oText:Font:Bold := .F.
// и потом выделение убрать нужно, а как ?


cFile := cPathDoc + cFileDocAll
oDocs:SaveAs( cFile ) // Сохранить файл как .....
oWord:Visible := .T. // Сделать окно WinWord видимым
oWord:WindowState := 1 // Maximize


// Далее нужно переключиться на 1 файл, скопировать в результирующий
// нифига не получается .............

wait


// ЗАКРЫТЬ ВСЕ ОКНА WORD'a
****************************** НЕРАБОТАЕТ !!!!!
FOR each oDoc in oDocs
oDoc:Close()
NEXT
/*
Error Word.Application:DOCUMENTS:ADD/3 DISP_E_MEMBERNOTFOUND: OLENEWENUMERATOR
Arguments: ()
Error at ...: TOLEAUTO:OLENEWENUMERATOR(0) in Module: win32ole.prg
Called from : TOLEAUTO:__OPFOREACH(707) in Module: win32ole.prg
Called from : MAIN(58) in Module: DOC_WORD.prg
*/
RETURN NIL



Спасибо: 0 
Профиль
постоянный участник


Пост N: 50
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 04.12.06 05:31. Заголовок: Re:


#define CRLF CHR(13)+CHR(10)

FUNCTION MAIN()
LOCAL oWord, oDocs, nI, oText, oDoc, nDoc
LOCAL aFileDoc := {"test1.doc","test2.doc","test3.doc","test4.doc"}
LOCAL cFileDocAll := "All_test.doc"
LOCAL cFile, cPathDoc := SUBSTR(EXENAME(), 1, RAT("\",EXENAME() ) )

TRY
oWord := GetActiveObject( "Word.Application" )
CATCH
TRY
oWord := CreateObject( "Word.Application" )
CATCH
Alert( "ОШИБКА! Word не доступен. [" + Ole2TxtError()+ "]" )
RETURN
END
END

FOR nI := 1 TO LEN(aFileDoc)
cFile := cPathDoc + aFileDoc[nI]
IF !FILE(cFile)
ALERT("; Нет файла "+cFile+"; ",{"Пропускаю"} )
ELSE
oDocs := oWord:Documents
oDocs:Open( cFile )
ENDIF
NEXT

oDocs := oWord:Documents:Add()

oText := oWord:Selection()
oText:Font:Name := "Arial"
oText:Font:Size := 48
oText:Font:Bold := .T.

oText:TypeText ( HB_OEMTOANSI("OLE на xHarbour") + CRLF )
oText:TypeParagraph() /// !!!

oText:TypeText ( HB_OEMTOANSI("проверка записи 1") + CRLF )
oText:TypeParagraph()

// обратите внимание будет ли сл.строка в результирующем файле
oText:Text := HB_OEMTOANSI("проверка записи 2") + CRLF
oText:Font:Name := "Arial"
oText:Font:Size := 12
oText:Font:Bold := .F.

cFile := cPathDoc + cFileDocAll
oDocs:SaveAs( cFile ) // Сохранить файл как .....
oWord:Visible := .T. // Сделать окно WinWord видимым
oWord:WindowState := 1 // Maximize


oWord:Windows[2]:Activate()
oText := oWord:Selection() ; oText:WholeStory() ; oText:Copy()

oWord:Windows[1]:Activate()
oText := oWord:Selection() ; oText:PasteAndFormat( 0 )

oWord:Windows[3]:Activate()
oText := oWord:Selection() ; oText:WholeStory() ; oText:Copy()

oWord:Windows[1]:Activate()
oText := oWord:Selection() ; oText:PasteAndFormat( 0 )

oWord:Windows[4]:Activate()
oText := oWord:Selection() ; oText:WholeStory() ; oText:Copy()

oWord:Windows[1]:Activate()
oText := oWord:Selection() ; oText:PasteAndFormat( 0 )

oWord:Windows[5]:Activate()
oText := oWord:Selection() ; oText:WholeStory() ; oText:Copy()

oWord:Windows[1]:Activate()
oText := oWord:Selection() ; oText:PasteAndFormat( 0 )

oDocs:Save() // если нужно конечно

wait

oDocs := oWord:Documents // !!!

FOR each oDoc in oDocs
oDoc:Close()
NEXT

oWord:Quit() // если конечно надо


Спасибо: 0 
Профиль
постоянный участник




Пост N: 125
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.12.06 11:06. Заголовок: Re:


Спасибо большое, Петр !!!
Пошел разбираться.

Спасибо: 0 
Профиль
постоянный участник




Пост N: 132
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.12.06 22:00. Заголовок: Re:


Заработало !!! Спасибо Петр !
А можно еще бы чтоб копировало в цикле ?
Т.е. сколько файлов открываешь, столько и копирует.
Просто не совсем понятен принцип нумерации окон:

oWord:Windows[1]:Activate()
oText := oWord:Selection() ; oText:PasteAndFormat( 0 )

Т.е. на 1-окно копируется содержимое буфера, а почему оно первое, ведь результирующий файл открывался последним ?

И как получить хендл окна, т.е. какой номер у какого файла ?

И как закрыть все файлы, кроме результирующего ?




Спасибо: 0 
Профиль
постоянный участник


Пост N: 55
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 05.12.06 14:00. Заголовок: Re:


Andrey пишет:

 цитата:
А можно еще бы чтоб копировало в цикле ?
Т.е. сколько файлов открываешь, столько и копирует.



Можно

Andrey пишет:

 цитата:
Т.е. на 1-окно копируется содержимое буфера, а почему оно первое, ведь результирующий файл открывался последним ?



Откройте Word и откройте в нем несколько файлов - посмотрите в меню Окно список открытых окон - сразу все поймете: в 1 окне - открыт последний файл, в последнем - первый.

Andrey пишет:

 цитата:
И как получить хендл окна, т.е. какой номер у какого файла ?



Наверное как-то можно, не интересовался

Andrey пишет:

 цитата:

И как закрыть все файлы, кроме результирующего ?



В данном случае лучше сохранить результирующий файл,
закрыть все файлы и повторно открыть результирующий файл.

#define CRLF CHR(13)+CHR(10)

FUNCTION MAIN()
LOCAL oWord, oDocs, nI, oText, oDoc, nDoc
LOCAL aFileDoc := {"test1.doc","test2.doc","test3.doc","test4.doc"}
LOCAL cFileDocAll := "All_test.doc"
LOCAL cFile, cPathDoc := SUBSTR(EXENAME(), 1, RAT("\",EXENAME() ) )

TRY
oWord := GetActiveObject( "Word.Application" )
CATCH
TRY
oWord := CreateObject( "Word.Application" )
CATCH
Alert( "ОШИБКА! Word не доступен. [" + Ole2TxtError()+ "]" )
RETURN
END
END

FOR nI := 1 TO LEN( aFileDoc )
cFile := cPathDoc + aFileDoc[nI]
IF !FILE(cFile)
ALERT("; Нет файла "+cFile+"; ",{"Пропускаю"} )
ELSE
oDocs := oWord:Documents
oDocs:Open( cFile )
ENDIF
NEXT

oDocs := oWord:Documents:Add()

oText := oWord:Selection()
oText:Font:Name := "Arial"
oText:Font:Size := 48
oText:Font:Bold := .T.

oText:TypeText ( HB_OEMTOANSI("OLE на xHarbour") + CRLF )
oText:TypeParagraph() /// !!!

oText:TypeText ( HB_OEMTOANSI("проверка записи") + CRLF )
oText:TypeParagraph()

cFile := cPathDoc + cFileDocAll
oDocs:SaveAs( cFile ) // Сохранить файл как .....

FOR nI := 2 TO LEN(aFileDoc)+1
oWord:Windows[nI]:Activate()
oText := oWord:Selection() ; oText:WholeStory() ; oText:Copy()

oWord:Windows[1]:Activate()
oText := oWord:Selection() ; oText:PasteAndFormat( 0 )
NEXT

oDocs:Save() //сохраняем all_test

oDocs := oWord:Documents
FOR each oDoc in oDocs
oDoc:Close() //закрываем все
NEXT

oDocs:Open( cFile ) // открываем all_test

oWord:Visible := .T.
oWord:WindowState := 1

wait

oWord:Quit()



Спасибо: 0 
Профиль
постоянный участник




Пост N: 137
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.12.06 01:52. Заголовок: Re:


Спасибо Петр, что бы я делал без тебя !
Подскажи, еще такой момент.
Если doc файлы различаются оформлением (поля и ориентацией), то при копировании в один файл
тоже теряется оформление, т.е. 1-файл книжная оринт., 2-альбомная, 3-альбомная, 4-альбамная.
Результирующий файл - книжный. Как сохранить ориентацию у страниц.

И еще вопрос, как отправить файл на печать и задать кол-во копий ?

Спасибо: 0 
Профиль
Администратор




Пост N: 420
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.12.06 09:57. Заголовок: Re:


Andrey пишет:

 цитата:
И еще вопрос, как отправить файл на печать и задать кол-во копий ?



oActive:PrintOut(.f.,,,,,,, nCopies)

Совет 1. Открываешь vbawd10.chm, набираешь в поиске Print, находишь метод PrintOut и смотришь его параметры

Совет 2. Включаешь в ворде запись макросов, выдаешь команду на печать, останавливаешь запись и смотришь что получилось в макросах


Спасибо: 0 
Профиль
постоянный участник




Пост N: 142
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.12.06 00:54. Заголовок: Re:


Люди, ау.
Подскажи, еще такой момент.
Если doc файлы различаются оформлением (поля и ориентацией), то при копировании в один файл
тоже теряется оформление, т.е. 1-файл книжная оринт., 2-альбомная, 3-альбомная, 4-альбамная.
Результирующий файл - книжный. Как сохранить ориентацию у страниц.


Спасибо: 0 
Профиль
Администратор




Пост N: 425
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.12.06 09:30. Заголовок: Re:


У ActiveDocument (обьект типа Document) есть свойство PageSetup

У него есть поля:

Orientation
TopMargin
BottomMargin
LeftMargin
RightMargin

их надо считать из исходного документа и установить в резутьтирующем

т.е

nOrient := oDoc1:PageSetup:Orientation

...

oDoc2:PageSetup:Orientation := nOrient

и так для остальных свойств



Спасибо: 0 
Профиль
постоянный участник




Пост N: 156
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.12.06 22:19. Заголовок: Re:


Pasha пишет:

 цитата:
nOrient := oDoc1:PageSetup:Orientation
...
oDoc2:PageSetup:Orientation := nOrient



Спасибо Петр, что бы я делал без тебя !
Подскажи, еще такой момент. Если ты с этим разбиралься и тебе не трудно ответить.

Если doc файлы различаются оформлением (поля и ориентацией), то при копировании в один файл
тоже теряется оформление, т.е. 1-файл книжная оринт., 2-альбомная, 3-альбомная, 4-альбамная.
Результирующий файл - книжный. Как сохранить ориентацию у страниц.


Спасибо: 0 
Профиль
Администратор




Пост N: 438
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 11.12.06 09:41. Заголовок: Re:


Вот как это выглядит на бейсике

'
' Ìàêðîñ1 Ìàêðîñ
' Ìàêðîñ çàïèñàí 11.12.2006 Ïàøà
'
ActiveDocument.Range(Start:=Selection.Start, End:=Selection.Start). _
InsertBreak Type:=wdSectionBreakNextPage
Selection.Start = Selection.Start + 1
With ActiveDocument.Range(Start:=Selection.Start, End:=ActiveDocument. _
Content.End).PageSetup
.LineNumbering.Active = False
.Orientation = wdOrientPortrait
.TopMargin = CentimetersToPoints(2)
.BottomMargin = CentimetersToPoints(2)
.LeftMargin = CentimetersToPoints(3)
.RightMargin = CentimetersToPoints(1.5)
.Gutter = CentimetersToPoints(0)
.HeaderDistance = CentimetersToPoints(1.25)
.FooterDistance = CentimetersToPoints(1.25)
.PageWidth = CentimetersToPoints(21)
.PageHeight = CentimetersToPoints(29.7)
.FirstPageTray = wdPrinterDefaultBin
.OtherPagesTray = wdPrinterDefaultBin
.SectionStart = wdSectionNewPage
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.VerticalAlignment = wdAlignVerticalTop
.SuppressEndnotes = False
.MirrorMargins = False
.TwoPagesOnOne = False
.BookFoldPrinting = False
.BookFoldRevPrinting = False
.BookFoldPrintingSheets = 1
.GutterPos = wdGutterPosLeft
End With

ЗЫ что-то с клипбоард не в порядке. Может мне нужен SP к оффису ?

Спасибо: 0 
Профиль
администратор




Пост N: 510
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.12.06 09:51. Заголовок: Re:


Pasha пишет:

 цитата:
Может мне нужен SP к оффису ?


а что за оффис у тебя ?
SP найдем ;) уточни версию.

Спасибо: 0 
Профиль
Администратор




Пост N: 439
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 11.12.06 10:39. Заголовок: Re:


Да я уже поставил, все равно не помогло
Office 2003 был без sp, поставил sp2

Спасибо: 0 
Профиль
постоянный участник




Пост N: 161
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.12.06 20:02. Заголовок: Re:


Слушайте, а win32ole.prg не работает с Офисом 97, вылетает по ошибке.
Он как должен или не должен работать с 97 ?

Спасибо: 0 
Профиль
Администратор




Пост N: 444
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.12.06 00:06. Заголовок: Re:


Как это не работает
у меня все в порядке
Что за ошибка

Спасибо: 0 
Профиль
постоянный участник




Пост N: 172
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.12.06 19:27. Заголовок: Re:


Не знаю, что за ошибка, чуть позже опять протестирую связку Win2000 Prof Engl + Word 97 Rus.

Сделал чтение оринтации страницы, поля замерил, все бестолку.
---------------------
? "Copy ClipBoard and Paste New Document"
FOR nI := 2 TO LEN(aFileDoc)+1
oWord:Windows[nI]:Activate()
nOrient := oWord:Selection():PageSetup():Orientation()
nTopMargin := oWord:Selection():PageSetup():TopMargin()
nBottomMargin := oWord:Selection():PageSetup():BottomMargin()
nLeftMargin := oWord:Selection():PageSetup():LeftMargin()
nRightMargin := oWord:Selection():PageSetup():RightMargin()
? nOrient,nTopMargin,nBottomMargin,nLeftMargin,nRightMargin
oText := oWord:Selection() ; oText:WholeStory() ; oText:Copy()

oWord:Windows[1]:Activate()
oWord:Selection():PageSetup():Orientation() := nOrient
oWord:Selection():PageSetup():TopMargin() := nTopMargin
oWord:Selection():PageSetup():BottomMargin() := nBottomMargin
oWord:Selection():PageSetup():LeftMargin() := nLeftMargin
oWord:Selection():PageSetup():RightMargin() := nRightMargin
oText := oWord:Selection() ; oText:PasteAndFormat( 0 )
oText:TypeText ( CHR(12) )
oText:TypeParagraph()
NEXT
-------------------------
Документ становится книжным, а следующие страницы тоже книжними, хотя ставишь альбомную.
Где зарыта "собака" ?




Спасибо: 0 
Профиль
постоянный участник




Пост N: 180
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.12.06 19:37. Заголовок: Где зарыта "собака" ?




Спасибо: 0 
Профиль
постоянный участник




Пост N: 183
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.12.06 00:25. Заголовок: Re:


Народ, так кто может подсказать как объединить несколько DOC файлов имеющих различные типы ориентации:
1-файл КНИЖНУЮ
2-3-4 файл АЛБОМНУЮ
5-файл КНИЖНУЮ
------------------
Т.е. в вышеперечисленной программе почему-то не преключаются на другую оринтацию страницы.

Спасибо: 0 
Профиль
Ответов - 32 , стр: 1 2 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 147
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет