--看msdn介绍,好像还要自己写vba代码??!!
用于 Microsoft Office 系统的 Visual Studio 工具
演练:使用组合框更改文档格式设置
此演练将演示在文档中使用控件更改文本格式设置的基本操作。若要查看最终的完整示例,请参见使用控件的 Word 文档示例。
此演练包含以下几个步骤:
创建新项目
将文本和控件添加到 Word 文档
添加引用
添加命名空间语句并声明类级变量
初始化控件
选中选项时设置文本的格式
测试
先决条件
若要完成此演练,您需要:
用于 Microsoft Office 系统的 Microsoft Visual Studio 工具。
Microsoft Office Word 2003。
创建新项目
此步骤中将创建一个 Word 文档项目。
创建新项目
从“文件”菜单中指向“新建”,然后单击“项目”以显示“新建项目”对话框。
在“项目类型”窗格中,展开“Microsoft Office 系统项目”,然后选择“Visual Basic 项目”或“Visual C# 项目”。
在“模板”窗格中,选择“Word 文档”。
将此项目命名为 My Word Formatting,然后单击“确定”。
“Microsoft Office 项目向导”随即显示。
确保选中“创建新的 Office 文档”,记住文件名和位置以便打开该文档进行编辑,然后单击“完成”。
Visual Studio .NET 在指定位置创建了一个新的 Word 文档并将 My Word Formatting 项目添加到解决方案资源管理器。
将文本和控件添加到 Word 文档
对于此演练,您需要在 Word 文档中包含一个组合框和一些位于标有书签的范围中的文本。
添加文本和组合框
在 Microsoft Word 2003 中打开 My Word Formatting.doc 文件。
可能会显示一个警告,告诉您程序集名称或“程序集链接位置”属性已损坏,因为您尚未编译此程序集。单击“确定”以关闭此警告。
在文档中键入以下文本:
选择此组合框中的一个选项以更改此文本的格式设置。
选择刚添加到文档的文本。
打开“插入”菜单,并单击“书签”。
在“书签名”框中键入 rangeChangeFontText,然后单击“添加”。
在“视图”菜单中,指向“工具栏”,然后单击“控件工具箱”。
将插入点置于文档中文本的下方,然后单击“控件工具箱”上的“组合框”控件,从而将组合框添加到文档。
右击该组合框,然后单击快捷菜单中的“属性”。
将组合框的 (Name) 属性更改为 comboBoxChangeFontProperty。
关闭“属性”窗口和“控件工具箱”。
保存并关闭该文档。
当打开工作簿时,程序集中的代码将对所添加的组合框进行动态填充。
现在返回到 Visual Studio .NET 中的项目,添加一个引用,然后在此文档的代码文件中执行一些适当的操作。
添加引用
若要在文档中使用控件,项目中必须拥有对 MSForms 的引用。
添加对 MSForms 的引用
在 Visual Studio .NET 的“解决方案资源管理器”窗口中选择“引用”。
打开“项目”菜单,然后单击“添加引用”。
“添加引用”对话框随即显示。
单击“COM”选项卡。
在“组件名称”列表中选择“Microsoft Forms 2.0 Object Library”,然后单击“选择”。
注意 可能会有两个采用此名称的组件,这种情况下请使用列表中第一个采用此名称的组件。
单击“确定”,将该引用添加到项目中。
现在将命名空间语句添加到代码中。
添加命名空间语句并声明类级变量
将必要的命名空间语句和类级变量添加到代码文件中。
添加语句和类级变量
在 Visual Studio .NET 中打开 ThisDocument.vb 或 ThisDocument.cs 文件。
将以下语句添加到代码文件顶部:
' Visual Basic
Imports System.Globalization
Imports System.Runtime.InteropServices
Imports MSForms = Microsoft.Vbe.Interop.Forms
// C#
using System.Globalization;
using System.Runtime.InteropServices;
using MSForms = Microsoft.Vbe.Interop.Forms;
将此变量声明添加到 OfficeCodeBehind 类中,直接放在“生成的初始化代码”区域的上方,从而将此变量的作用域限制在此类的范围内:
' Visual Basic
Private WithEvents comboBoxChangeFontProperty As MSForms.ComboBox
Private rangeChangeFontText As Microsoft.Office.Interop.Word.Range
// C#
private MSForms.ComboBox comboBoxChangeFontProperty = null;
private Microsoft.Office.Interop.Word.Range rangeChangeFontText = null;
然后,在打开该文档时初始化控件。
初始化控件
必须先初始化控件,然后才可以在文档中使用它们。
初始化控件
在该类中找到 ThisDocument_Open 方法,并添加以下代码以查找并初始化控件(包括将来自数组的列表项填充到组合框)。此方法调用两个函数:FindControl 函数(包含在项目模板中)和 GetNamedRange 函数(您需要编写此函数)。
' Visual Basic
Private Sub ThisDocument_Open() Handles ThisDocument.Open
Dim control As Object
control = Me.FindControl("comboBoxChangeFontProperty")
Me.comboBoxChangeFontProperty = CType(control, MSForms.ComboBox)
Dim captions() As Object = {"Bold", "Italic", "Underline"}
Dim defaultParameter As Object = Type.Missing
Me.comboBoxChangeFontProperty.AddItem(captions(0), _
defaultParameter)
Me.comboBoxChangeFontProperty.AddItem(captions(1), _
defaultParameter)
Me.comboBoxChangeFontProperty.AddItem(captions(2), _
defaultParameter)
Me.rangeChangeFontText = GetNamedRange("rangeChangeFontText")
End Sub
// C#
private void ThisDocument_Open()
{
object control;
control = this.FindControl("comboBoxChangeFontProperty");
this.comboBoxChangeFontProperty = control as MSForms.ComboBox;
object [] captions = {"Bold", "Italic", "Underline"};
object defaultParameter = Type.Missing;
this.comboBoxChangeFontProperty.AddItem(ref captions[0],
ref defaultParameter);
this.comboBoxChangeFontProperty.AddItem(ref captions[1],
ref defaultParameter);
this.comboBoxChangeFontProperty.AddItem(ref captions[2],
ref defaultParameter);
this.rangeChangeFontText = GetNamedRange("rangeChangeFontText");
// Attach the events after making sure the variables
// have been properly initialized.
if (this.comboBoxChangeFontProperty != null &&
this.rangeChangeFontText != null)
{
this.comboBoxChangeFontProperty.Change += new
MSForms.MdcComboEvents_ChangeEventHandler(
comboBoxChangeFontProperty_Change);
}
}
此函数从 ThisDocument_Open 方法中调用,用于初始化文档中标有书签的范围。
Function GetNamedRange(ByVal name As String) As _
Microsoft.Office.Interop.Word.Range
Dim bookmark As Microsoft.Office.Interop.Word.Bookmark
For Each bookmark In ThisDocument.Bookmarks
If String.Compare(bookmark.Name, name, True, _
CultureInfo.InvariantCulture) = 0 Then
Return bookmark.Range
End If
Next
Return Nothing
End Function
// C#
Microsoft.Office.Interop.Word.Range GetNamedRange(string name)
{
foreach (Word.Bookmark bookmark in ThisDocument.Bookmarks)
{
if (String.Compare(bookmark.Name, name, true,
CultureInfo.InvariantCulture) == 0)
{
return bookmark.Range;
}
}
return null;
}
然后,编写代码来在选中某一选项时设置文本的格式。
选中选项时设置文本格式
当用户选择格式设置选项时,将更改文档中文本的格式。
在选中组合框中某项时更改格式设置
添加一个方法来处理 comboBoxChangeFontProperty 对象的 Change 事件。
添加以下代码以检查组合框中所选择的样式,然后更改书签 rangeChangeFontText 中文本的格式设置,以反映所选选项。此方法的 Visual Basic 版本调用 InverseBoolean2Integer 函数(您需要编写此函数从而将一个布尔值转换为一个整数)。
' Visual Basic
Private Sub comboBoxChangeFontProperty_Change() Handles _
comboBoxChangeFontProperty.Change
Dim culture As CultureInfo
culture = CultureInfo.InvariantCulture
Dim style As String
style = Me.comboBoxChangeFontProperty.Text.ToLower(culture)
If style = "bold" Then
Dim isBold As Boolean = Me.rangeChangeFontText.Font.Bold <> 0
Me.rangeChangeFontText.Font.Bold = _
Me.InverseBoolean2Integer(isBold)
ElseIf style = "italic" Then
Dim isItalic As Boolean = Me.rangeChangeFontText.Font. _
Italic <> 0
Me.rangeChangeFontText.Font.Italic = _
Me.InverseBoolean2Integer(isItalic)
ElseIf style = "underline" Then
Dim font As Word.Font
font = Me.rangeChangeFontText.Font
Dim currentStyle As Word.WdUnderline
currentStyle = CType(font.Underline, Word.WdUnderline)
If currentStyle = Word.WdUnderline.wdUnderlineNone Then
font.Underline = Word.WdUnderline.wdUnderlineSingle
Else
font.Underline = Word.WdUnderline.wdUnderlineNone
End If
End If
End Sub
// C#
private void comboBoxChangeFontProperty_Change()
{
CultureInfo culture = CultureInfo.InvariantCulture;
string style =
this.comboBoxChangeFontProperty.Text.ToLower(culture);
switch (style)
{
case "bold":
bool isBold = this.rangeChangeFontText.Font.Bold != 0;
this.rangeChangeFontText.Font.Bold = isBold ? 0 : 1;
break;
case "italic":
bool isItalic = this.rangeChangeFontText.Font.Italic != 0;
this.rangeChangeFontText.Font.Italic = isItalic ? 0 : 1;
break;
case "underline":
Microsoft.Office.Interop.Word.Font font;
Word.WdUnderline currentStyle;
font = this.rangeChangeFontText.Font;
currentStyle = (Word.WdUnderline)font.Underline;
if (currentStyle == Word.WdUnderline.wdUnderlineNone)
font.Underline = Word.WdUnderline.wdUnderlineSingle;
else
font.Underline = Word.WdUnderline.wdUnderlineNone;
break;
}
}
以下函数将一个布尔值转换为一个整数(0 或 1)。只有 Visual Basic 方法才调用此函数,C# 方法不调用。
' Visual Basic
Function InverseBoolean2Integer(ByVal value As Boolean) As Integer
If value = False Then
Return 1
End If
Return 0
End Function
测试
现在,您可以对文档进行测试,确保单击按钮时正确设置了文本格式。
测试文档
按 F5 键运行项目。
从组合框中选择一个选项。
确认文本的格式设置正确。
后续步骤
此演练演示了在 Word 2003 文档中使用组合框以及以编程方式更该文本格式设置的基本操作。下一步可能要执行以下几项任务:
对此项目进行测试部署。有关更多信息,请参见如何:部署 Office 文档和程序集。
使用按钮填充文本框。有关更多信息,请参见演练:使用按钮在文档中的文本框中显示文本。
以编程方式更改艺术字的格式设置。有关更多信息,请参见演练:在文档中使用按钮更改艺术字的格式设置。
更新文档中的图表。有关更多信息,请参见演练:使用选项按钮更新文档中的图表。
请参见
使用 Word 的演练 | Office 开发示例和演练 | Office 应用程序自动化
个人信息中心 |与我们联系
©2005 Microsoft Corporation. 版权所有. 保留所有权利 |商标 |隐私权声明