Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Класс для работы с MSWord.(для новичков)  [new]
Starpom
Member

Откуда: г. Москва
Сообщений: 35
Понадобилось мне упростить работу с бланками в Отделе кадров. Все «рыбы» бланков были набиты в Ворде. Пришлось полазить по форуму, но вся информация била разрозненная. Так что для новичков (кем я тоже являюсь в Фоксе) я собрал все в один класс. Надеюсь, кому пригодиться. Профи – сильно не пинайте, но критику с удовольствием приму.

**********************************************************
*	Работа с Микрософт Вордом.
* ToDo:**********************************************************

* Создаем новый документ MS WORD на базе ранее созданного шаблона  

LOCAL loWord as TMSWord 

loWord = CREATEOBJECT( [TMSWord] )
loWord.AddDoc()
loWord.SetTextToDoc("Номер заявки: ##NZav#^", .T.)
loWord.SaveDocAs("c:\test2.doc")
loWord.CloseDoc()

loWord.OpenDoc("c:\test2.doc")
loWord.VisibleWord( .T. )

loWord.StartOfDoc()
loWord.FindAndPasteTextDoc("##NZav#^", "1 239kgr")

loWord.PrintDialogWord()
WAIT 

loWord.SaveDocAs("c:\test22.doc")
loWord.CloseDoc()
RELEASE loWord 
 
    
**********************************************************
* Класс работы с Вордом.
* [27.09.2005] v 1.4/rf1/
**********************************************************
DEFINE CLASS TMSWord  as Custom 

	PROTECTED  m_pMSWord 
	m_pMSWord = NULL
	
	&& ---  Печатаем напрямую, без диалогов. Можно задать и другие параметры.
	PROCEDURE PrintOutDoc( NumCopies as Integer )
		* Если не указали кол-во копий печатаем одну.
		IF PARAMETERS()<1
			this.m_pMSWord.ActiveDocument.PrintOut()
		ELSE 
			this.m_pMSWord.ActiveDocument.PrintOut( NumCopies )
		ENDIF 
	ENDPROC 	  
	&& ---  Открывает диалог печати.
	PROCEDURE PrintDialogWord
		* Const wdDialogFilePrint=88
		this.m_pMSWord.Dialogs.Item(88).Show()
	ENDPROC 		
	&& --- Находжим (вперед) текст и заменяем его.
	PROCEDURE FindAndPasteTextDoc( findtext as string , pastetext as string)
		this.m_pMSWord.Selection.Find.Forward = .T.
		this.m_pMSWord.Selection.Find.Text = findtext
		* -
		* - Если нашли выражение, то заменяем его.
		IF this.m_pMSWord.Selection.Find.Execute()
			this.m_pMSWord.Selection.Text = pastetext
		ENDIF  
	ENDPROC 		
	&& --- Удаляем выделенный текст и вставляем новый.
	PROCEDURE PasteTextDoc( txt as string )
		this.m_pMSWord.Selection.Delete()
		this.m_pMSWord.Selection.InsertAfter(txt)
	ENDPROC 
	&& --- Находим текст (вперед)
	PROCEDURE FindTextDoc( txt as string ) as Logical	
		this.m_pMSWord.Selection.Find.Forward = .T.
		this.m_pMSWord.Selection.Find.Text = txt
		RETURN this.m_pMSWord.Selection.Find.Execute()
	ENDPROC 				
	&& ---  В начало документа.
	PROCEDURE StartOfDoc
		this.m_pMSWord.Selection.End = 0
		this.m_pMSWord.Selection.Start = 0
	ENDPROC 
	&& ---  В конец документа.
	PROCEDURE EndOfDoc
		this.m_pMSWord.ActiveDocument.Range.Select()
		this.m_pMSWord.Selection.Start = this.m_pMSWord.Selection.End
	ENDPROC 		
	&& --- Открываем документ.
	PROCEDURE OpenDoc( filename as string )
		this.m_pMSWord.Documents.Open(filename)
	ENDPROC 
	&& --- Отображать Ворд на экране.
	PROCEDURE VisibleWord( vis as Logical )
		this.m_pMSWord.Visible = vis		&& .T. - Делаем созданный документ видимым  
	ENDPROC 
	&& --- Сохранение текста.
	PROCEDURE SaveDocAs( filename as string )
		this.m_pMSWord.ActiveDocument.SaveAs( filename )
	ENDPROC 	
	&& --- Запись текста после курсора.
	PROCEDURE SetTextToDoc( txt as string, insertAfter as Logical ) 
		* вставлять ли текст после курсора или до.
		IF insertAfter
			this.m_pMSWord.ActiveDocument.Range. InsertAfter(txt)
		ELSE 
			this.m_pMSWord.ActiveDocument.Range. InsertBefore(txt)
		ENDIF
	ENDPROC 
	&& --- Создание пустого документа
	PROCEDURE AddDoc
		this.m_pMSWord.Documents.Add() 	&&'Полный_путь_доступа'+'Имя_файла_шаблона.dot')  
	ENDPROC 
	&& --- Закрытие документа
	PROCEDURE CloseDoc
		this.m_pMSWord.ActiveDocument.Close()
	ENDPROC
	&& --- Соединение с вордом.
	PROCEDURE Init
		this.m_pMSWord = CREATEOBJECT( [WORD.APPLICATION] )
	ENDPROC 
	&& --- Закрытие ворда.
	PROCEDURE Destroy
		this.m_pMSWord.Quit()
	ENDPROC 
ENDDEFINE
29 сен 05, 11:12    [1921542]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить