powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Класс для работы с MSWord.(для новичков)
1 сообщений из 1, страница 1 из 1
Класс для работы с MSWord.(для новичков)
    #33295081
Starpom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понадобилось мне упростить работу с бланками в Отделе кадров. Все «рыбы» бланков были набиты в Ворде. Пришлось полазить по форуму, но вся информация била разрозненная. Так что для новичков (кем я тоже являюсь в Фоксе) я собрал все в один класс. Надеюсь, кому пригодиться. Профи – сильно не пинайте, но критику с удовольствием приму.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
**********************************************************
*	Работа с Микрософт Вордом.
* 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
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Класс для работы с MSWord.(для новичков)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]