Programming and Application(编程与应用)


Content(目录)




Linux


MySQL
Office















 
PCNow 30-Day Free Trial, Remote PC Access
 
Logo_234x60

Word 7.0向导的奥秘


Word 7.0向导的奥秘

董占山

(中国农科院棉花所,河南安阳,455112)

Word 7.0是MS Windows 95下的一个优秀文字处理软件,它集文字处理、图形图片剪辑、图文混排于一身,具有强大的所见即所得功能,用过它的人无不交口称赞。在模板文件夹(“TEMPLATE”)内,Word 7.0提供了许多创建复杂文档的向导。用户在创建文档时可以根据需要选择不同的向导,创建适合于自己的复杂文档。当向导运行结束后,一份精美文档的蓝图就基本绘成了,您只需要在一定的位置添加上特有的内容,一份精致的文档就完成了。用向导创建的文档,有些甚至不需要进行任何修改就可以直接打印出来,比如用月历向导创建的精美月历就是一例。

向导的概念与使用

向导是一种特殊的模板,它一般包含有自动宏AutoNew和向导宏StartWizard,当然,有些向导还包含有其它宏命令。只要您在新建对话窗口中选中了向导,并单击〖确定〗按钮后,通过向导的AutoNew宏就可以启动StartWizard宏,后者将一步一步向您提出问题,然后根据您的回答,自动创建具有复杂格式的新文档。用向导创建的新文档一般是基于默认模板Normal.dot,但文档中使用的样式反映了您在回答向导提问时选择的编排格式。用向导创建的有些文档可以直接使用,根本不需要修改。应用向导创建信函、备忘录、摘要、新闻简报以及在文档中插入表格,往往可以取得事半功倍的效果。使用向导创建新文档的步骤如下:

  1. 单击“文件”菜单中的“新建”命令,弹出新建对话窗口;
  2. 在“新建”组框中选中“文档”互斥选项;
  3. 在“模板”列表框选中一个向导(向导的图标和模板的图标有区别,向导图标上带有一个魔笛标志),如“Award Wizard(奖状向导)”;
  4. 单击〖确定〗按钮启动向导,等待一会,显示出向导的第一屏;
  5. 您按照向导每屏的提示去做,选择合适的选项或键入适当的文字;
  6. 完成选择之后,单击〖完成〗按钮关闭对话窗口,这时向导开始向文档填充正文。

修改向导

Word提供了创建常用文档的向导,如果这些向导某些地方不合您的要求,您也可以象修改Word文档和文档模板一样修改它。方法如下:

  1. 单击“文件”菜单中的“打开”命令,弹出打开对话窗口;
  2. 单击“文件类型”列表框,在弹出的列表框中选中“所有文件”;
  3. 在“查找范围”列表框中找到向导所在的模板文件夹;
  4. 在“名称”列表框中选中欲修改的向导文件(向导文件的扩展名为.WIZ);
  5. 单击〖确定〗按钮,打开向导;
  6. 单击“工具”菜单中的“宏”命令,打开宏对话窗口;
  7. 单击“有效范围”列表框,从弹出的列表框中选择向导名,而不是其它模板名;
  8. 在“宏名”编辑框下面的列表框中选中“StartWizard”宏;
  9. 单击〖编辑〗按钮,将StartWizard宏调入宏编辑窗口;
  10. 在此您可以修改宏程序的有关命令和函数,以便改变向导的行为;
  11. 修改完毕,单击“文件”菜单中的“保存”命令,或者单击“常用”工具栏的“保存”按钮,保存向导宏,这时会弹出对话提示窗口,询问是否保存宏;
  12. 单击〖是〗按钮保存宏;
  13. 单击“文件”菜单中的“关闭”命令,关闭宏编辑窗口;
  14. 切换到向导所在的窗口,单击“文件”菜单中的“关闭”命令,关闭向导,这时会提示您是否保存向导,单击〖是〗按钮保存向导,完成向导的修改。

创建一个学生作业本向导

为了让您破除对Word向导的神秘感,下面自己动手创建一个向导。创建向导主要是创建向导宏,以及创建一些和向导一起工作的样式、自动图文集词条。这里提供的一个向导是创建学生作业本的,它只有两个选择屏幕,十分简单,第一屏要求您选择作业本的样式,第二屏更加简单,只需要您单击〖完成〗按钮就可以创建作业本了。分五大步骤来完成:创建一个新模板、创建必要的自动图文集词条、进行页面设置、编写AutoNew和StartWizard宏程序、将新模板的扩展名改为.WIZ。注意本文提供的向导创建的新文档不是基于Normal.Dot模板而是基于向导自己。

创建一个新模板

  1. 单击“文件”菜单中的“新建”命令;
  2. 选中“常用”对话页上的“空文档”模板;
  3. 选中“新建”组框中的“模板”互斥项;
  4. 单击〖确定〗按钮,创建一个基于NORMAL.DOT的新模板;
  5. 单击“文件”菜单中的“保存”命令,保存新模板。

创建自动图文集词条

创建自动图文集词条的方法在许多Word书籍上都有介绍,这里不赘述。在提供的学生作业本向导中,有关的自动图文集词条及其内容如下:

这些方格是用Word的表格功能制作的,线条是用给段落加边框的方法实现的。

页面设置

因为本向导创建的学生作业本是32开的,有别于Normal模板设定的纸张大小,所以需要设定向导的纸张大小和页边距,并且在创建新文档时基于它本身而不是Normal.dot模板。使用“文件”菜单中的“页面设置”对话窗口设置下列项目为给定的值即可。

  1. 纸张大小:32开;
  2. 方向:纵向;
  3. 页边距:上、下、内测、外侧均为1.65厘米;
  4. 装订线:0厘米;
  5. 页眉:0.85厘米;
  6. 页脚:0.85厘米。

创建AutoNew和StartWizard宏

创建自动宏AutoNew和向导宏StartWizard的步骤如下:

  1. 单击“工具”菜单中的“宏”命令;
  2. 单击“有效范围”列表框,从弹出的列表框中选中新创建的模板名;
  3. 在“宏名”编辑框中输入“AutoNew”;
  4. 单击〖创建〗按钮,打开宏编辑窗口;
  5. 输入如下的命令:
  6. Sub MAIN
    StartWizard
    End Sub
  7. 单击“文件”菜单中的“保存”命令,保存该宏;
  8. 单击“文件”菜单中的“关闭”命令,关闭宏编辑窗口。

创建和编辑向导宏的步骤类似于上面的步骤,只是向导宏StartWizard十分复杂,最好的办法是在已有向导宏的基础上进行修改、加工,形成新的向导宏。在本文的最后提供了创建学生作业本的向导宏,它是向导宏的框架,您可以在它的基础上工作。

当这一步完成后,请保存这个模板,并关闭它,以便到Windows 95系统下更改这个文件的扩展名为.WIZ。

更改向导的扩展名为.WIZ

切换到Windows 95的桌面,执行如下的步骤,更改刚刚创建的向导文件的扩展名。

  1. 用鼠标右键单击“我的电脑”图标,弹出快捷菜单;
  2. 单击快捷菜单中的“资源管理器”命令;
  3. 从左窗格中查找新创建向导所在的文件夹,单击打开之;
  4. 如果文件扩展名不显示,单击“查看”菜单中的“选项”命令,弹出选项对话窗口,单击“查看”选项卡标签,切换到查看对话页;
  5. 清除“隐藏已登记的文件类型的MS-DOS文件扩展名”复选框;
  6. 单击〖确定〗按钮返回;
  7. 将鼠标定位到右窗格中新创建的向导文件上,单击鼠标右键弹出菜单;
  8. 单击“重命名”命令,将文件改名为以“.WIZ”为扩展名的文件即可。

向导宏StartWizard程序清单

'*********************************************
' Paper Wizard
' StartWizard Macro
'*********************************************

'通用变量
Dim Shared State, LastState
Dim Shared StateItems(3)
Dim Shared HideFilePreview(3)
Dim Shared dlg As UserDialog
Dim Shared wizname$
Dim Shared iWorkDoc, workDoc$
Dim Shared gDoogie

'向导特有变量
Dim Shared kCreating$, AutoTextStr$

'初始化子程序
Sub InitStrings
wizname$ = "作业本向导"
kCreating$ = "开始创建作业本"
End Sub

'StartWizard Macro
Sub MAIN
On Error Goto FatalError
InitStrings
WaitCursor 1
VerifyEnvirons
Print "设置对话框..."
Begin Dialog UserDialog 628, 276, wizname$, .DlgControl
'通用控制0-8
Picture 0, 238, 500, 11, "LinePic", 1, .LinePicA
'Workaround odd picture bug --
Picture 128, 238, 500, 11, "LinePic", 1, .LinePicB
' use two copies to go entire width
OKButton 11, 215, 73, 21
'2
PushButton 185, 250, 73, 21, "提示(&H)", .Hint
'3
CancelButton 269, 250, 80, 21
'4
PushButton 360, 250, 91, 21, "<上一步(&B)", .Back
'5
PushButton 451, 250, 91, 21, "下一步(&N)>", .Next
'6
PushButton 550, 250, 75, 21, "完成(&F)", .ExitWizardBtn
'7
FilePreview 16, 12, 250, 214, .Preview
StateItems(0) = 9'Number of general (state-independent) controls

'从这里开始是向导特有的状态
'State 1
Text 22, 8, 577, 26, "本向导创建精美的学生作业本。您喜欢那种格式?"
OptionGroup .Style
OptionButton 30, 45, 81, 16, "英文 &1"
OptionButton 30, 105, 81, 16, "数学 &2"
OptionButton 30, 165, 81, 16, "方格 &3"
OptionButton 321, 45, 81, 16, "米字 &4"
OptionButton 321, 105, 81, 16, "中字 &5"
OptionButton 321, 165, 81, 16, "双线 &6"
Picture 55, 65, 250, 34, "picEnglish", 1, .Picture11
Picture 55, 125, 250, 34, "picMath", 1, .Picture12
Picture 55, 185, 250, 34, "picSquare", 1, .Picture13
Picture 347, 65, 250, 34, "picMeter", 1, .Picture14
Picture 347, 125, 250, 34, "picCross", 1, .Picture15
Picture 347, 185, 250, 34, "picDouble", 1, .Picture16
ItemsInState 14
HideFilePreview(LastState) = 1
'State 2: 完成
Picture 0, 0, 283, 226, "FlagPic", 1, .flag
Text 280, 84, 335, 26, "Ok,开始创建精美的作业本"
ItemsInState 2 '这个状态的控制数
HideFilePreview(LastState) = 1
End Dialog
x = Dialog(dlg)
If x <> 0 Then
WaitCursor 1
ToolsOptionsGeneral .BlueScreen = gDoogie
WindowList(iWorkDoc)'确保工作文档是活动文档
StartOfDocument
ViewPage '在页面模式下显示
ViewZoom .AutoFit
Else
WaitCursor 1
ToolsOptionsGeneral .BlueScreen = gDoogie
WindowList(iWorkDoc)' 保证工作文档是活动文档
If Window() <> iWorkDoc Then Stop
DocClose 2 '关闭工作文档
End If
Goto MyOk
FatalError:
DisableAutoMacros 0
If err < 1000 Then
ReportError
EndIf
On Error Goto 0
MyOk:
End Sub'StartWizard

'*********************************
' 向导特有的子程序
'*********************************
' 显示错误信息
Sub ReportError
MsgBox("出现错误", "警告", 0)
Error err
End Sub

' 建立作业本
Sub CreatePaper
Print kCreating$
EditSelectAll
EditClear
WaitCursor 1
EditAutoText .Name = "DoubleLine", .Insert
TailLine$ = "DoubleLine"
If AutoTextStr$ = "SingleLine2" Then
LineNum = 9
TailLine$ = "DoubleLine15"
ElseIf AutoTextStr$ = "SingleLine" Then
LineNum = 11
ElseIf AutoTextStr$ = "DoubleLine2" Then
LineNum = 12
Else
LineNum = 10
End If
For i = 1 To LineNum
EditAutoText .Name = AutoTextStr$, .Insert
Next
EditAutoText .Name = TailLine$, .Insert
On Error Goto 0
End Sub

 

' 设置默认的格式
Sub SetDefaultStyle
If State = 1 Then

Select Case DlgValue("Style")

Case 0

AutoTextStr$ = "SingleLine"

Case 1

AutoTextStr$ = "SingleLine2"

Case 2

AutoTextStr$ = "SquareLine"

Case 3

AutoTextStr$ = "MeterLine"

Case 4

AutoTextStr$ = "CrossLine"

Case 5

AutoTextStr$ = "DoubleLine2"

Case Else

End Select

End If

End Sub

 

'处理单击按钮动作

Function DoButtonClick(id$, item)

ret = 0

If State = 1 Then SetDefaultStyle

If item = 7 Then

CreatePaper

ret = 1 '返回向导

EndIf

DoButtonClick = ret

End Function'DoButtonClick

 

'****************************

' 通用子程序

'****************************

' 检查环境

Sub VerifyEnvirons

Print kStarting$ + wizname$ + "..."

Dim howser As ToolsOptionsGeneral

GetCurValues howser

gDoogie = howser.BlueScreen

ToolsOptionsGeneral .BlueScreen = 0

ScreenUpdating 0

DisableInput 'Disable ESCape (works correctly in dialog)

wind$ = FileNameFromWindow$()

If wind$ <> "" Then fBadDoc = 1

If IsMacro() <> 0 Or InStr(wind$, ".") <> 0 Then

fBadDoc = 1

Else

EditSelectAll

If Len(Selection$()) > 1 Then fBadDoc = 1

EndIf

If fBadDoc Then

MsgBox "这个向导不能在活动文档内使用。从“文件”菜单选择“新建”命令,在模板文件夹下运行“Paper Wizard”向导。", WizName$, 16

Error 1302

EndIf

workDoc$ = WindowName$() '取工作文档名

iWorkDoc = 1

While (WindowName$(iWorkDoc) <> workDoc$)

iWorkDoc = iWorkDoc + 1

Wend

WindowList(iWorkDoc)

FilePageSetup .Tab = "1", .PaperSize = "0", .TopMargin = "1.65 厘米", .BottomMargin = "1.65 厘米", .LeftMargin = "1.65 厘米", .RightMargin = "1.65 厘米", .Gutter = "0 厘米", .PageWidth = "13 厘米", .PageHeight = "18.4 厘米"

End Sub

 

' 累计控制数

Sub ItemsInState(howMany)

LastState = LastState + 1

StateItems(LastState) = howMany + StateItems(LastState - 1)

End Sub

 

'设置控制的状态

Sub EnableControls

If State > 1 Then DlgEnable 5, 1 '<Back

If State = 1 Then

DlgEnable 6, 1 'Next>

DlgFocus 6 'Next>

DlgEnable 5, 0 '<Back

ElseIf State = LastState Then

DlgFocus 7

DlgEnable 6, 0 'Next>

EndIf

End Sub'EnableControls

 

' 显示/隐藏控制

Sub SHControls(FirstField, LimField, SH)

For iField = FirstField To LimField - 1

DlgVisible iField, SH

Next

End Sub'SHControls

 

' 改变对话窗口状态

Sub ChangeState(old, new)

SHControls(StateItems(old - 1), StateItems(old), 0)

If HideFilePreview(new) - HideFilePreview(old) Then DlgVisible 8

SHControls(StateItems(new - 1), StateItems(new), 1)

State = new

EnableControls

End Sub'ChangeState

 

'向导对话函数

Function DlgControl(id$, iaction, wvalue)

fRet = 1

Select Case iaction

Case 1 '初始化

state = 1

DlgVisible 2 '隐藏〖确定〗按钮

DlgVisible 3 '隐藏〖提示〗按钮

SHControls(StateItems(1), StateItems(LastState), 0) '隐藏大于状态1的控制

SHControls(StateItems(State - 1), StateItems(State), 1) '显示初始状态

DlgVisible 8, 1 - HideFilePreview(State)

EnableControls'Enable/Disable controls

fRet = 0

Case 2 '单击

idnum = DlgControlId(id$)

result = DoButtonClick(id$, idnum)

If result = 0 Then

Select Case idnum

Case 6 'Next>

ChangeState(State, State + 1)

Case 4 'Cancel

fRet = 0'exit dialog

Case 5 '<Back

ChangeState(State, State - 1)

Case Else

End Select

ElseIf result = 1 Then

fRet = 0

EndIf

Case 3 '改变选项内容

' do nothing

Case 4 '焦点改变

' do nothing

Case 5 '空闲

Print ""'清除状态行

Case 6 '移动对话框

' do nothing

Case Else

End Select

DlgControl = fRet

End Function 'DlgControl

©董占山Zhanshan Dong

Post comments(留言)

Name(名字):

Comment(内容):


由Google提供

SunfineData Products|U's Bargain Network|Contact Me(与我联系)
© 1998-, 董占山, 版权所有, 欢迎转载文章链接。
转载文章和软件请注明出处(http://articles.sunfinedata.com/)。