vba新建工作簿Word文档格式.docx
《vba新建工作簿Word文档格式.docx》由会员分享,可在线阅读,更多相关《vba新建工作簿Word文档格式.docx(31页珍藏版)》请在冰点文库上搜索。
![vba新建工作簿Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/6/47822871-78d5-4c35-a33b-22efbae1dce6/47822871-78d5-4c35-a33b-22efbae1dce61.gif)
下述过程使用Worksheets属性激活活动工作簿上的第一张工作表。
SubFirstOne()
Worksheets
(1).Activate
如果要处理所有类型的工作表(工作表、图表、模块和对话框编辑表),可使用Sheets属性。
下述过程激活工作簿中的第四张工作表。
SubFourthOne()
Sheets(4).Activate
注释
如果移动、添加或删除工作表,则编号顺序将会更改。
按名称引用工作表
使用Worksheets属性和Charts属性可通过名称来标识工作表。
下述语句激活活动工作簿中的不同工作表。
Worksheets("
Sheet1"
).Activate
Charts("
Chart1"
DialogSheets("
Dialog1"
可用Sheets属性返回工作表、图表、模块或对话框编辑表;
Sheets集合包含了所有这些表。
下例激活活动工作簿中的“Chart1”。
SubActivateChart()
Sheets("
嵌入到工作表中的图表是ChartObjects集合的成员,而那些位于单独的工作表上的图表则属于Charts集合。
将文档保存为网页
在MicrosoftExcel中,可以将工作簿、工作表、图表、区域、查询表、数据透视表、打印区域或自动筛选区域保存到网页中。
也可以直接在Excel中编辑HTML文件。
将文档保存为网页是一个创建并保存HTML文件及任何支持文件的过程。
若要完成此过程,请使用SaveAs方法,如下例所示,此示例将活动工作簿保存为“C:
\Reports\myfile.htm”。
ActiveWorkbook.SaveAs_
Filename:
\Reports\myfile.htm"
_
FileFormat:
=xlHTML
自定义网页
通过设置DefaultWebOptions对象和WebOptions对象的属性,用户可以自定义HTML文档的外观、内容、浏览器支持、编辑支持、图形格式、屏幕分辨率、文件组织和编码。
DefaultWebOptions对象包含应用程序级的属性。
而任何具有相同名称的工作簿级属性设置(包含在WebOptions对象中)将优先于这些设置。
设置完属性后,可使用Publish方法将工作簿、工作表、图表、区域、查询表、数据透视表、打印区域或自动筛选区域保存到网页中。
下例设置了不同的应用程序级属性,然后设置了活动工作簿的AllowPNG属性,而此设置将优先于应用程序级的默认设置。
最后,本示例将区域保存为“C:
\Reports\1998_Q1.htm”。
WithApplication.DefaultWebOptions
.RelyonVML=True
.AllowPNG=True
.PixelsPerInch=96
EndWith
WithActiveWorkbook
.WebOptions.AllowPNG=False
With.PublishObjects
(1)
.FileName="
\Reports\1998_Q1.htm"
.Publish
也可以直接将文件保存到Web服务器上。
下例将一个区域保存到Web服务器上,假定该网页的URL地址为
With.WebOptions
.FileName=_
"
在MicrosoftExcel中打开HTML文档
若要在Excel中编辑HTML文档,请首先使用Open方法打开该文档。
下例打开文件“C:
\Reports\1997_Q4.htm”以进行编辑。
Workbooks.OpenFilename:
\Reports\1997_Q4.htm"
打开文件后,可通过设置DefaultWebOptions和WebOptions对象的属性来自定义该HTML文档的外观、内容、浏览器支持、编辑支持、图象格式、屏幕分辨率、文件组织和编码。
用A1样式记号引用单元格和单元格区域
可使用Range属性来引用A1引用样式中的单元格或单元格区域。
下述子程序将单元格区域A1:
D5的字体设置为加粗。
SubFormatRange()
Workbooks("
Book1"
).Sheets("
).Range("
A1:
D5"
)_
.Font.Bold=True
下表演示了使用Range属性的一些A1样式引用。
引用
含义
Range("
A1"
单元格A1
B5"
从单元格A1到单元格B5的区域
C5:
D9,G9:
H16"
多块选定区域
A:
A"
A列
1:
1"
第一行
C"
从A列到C列的区域
5"
从第一行到第五行的区域
1,3:
3,8:
8"
第1、3和8行
A,C:
C,F:
F"
A、C和F列
用编号引用单元格
通过使用行列编号,可用Cells属性来引用单个单元格。
该属性返回代表单个单元格的Range对象。
下例中,Cells(6,1)返回Sheet1上的单元格A6,然后将Value属性设置为10。
SubEnterValue()
Worksheets("
).Cells(6,1).Value=10
因为可用变量替代编号,所以Cells属性非常适合于在单元格区域中循环,如下例所示。
SubCycleThrough()
DimCounterAsInteger
ForCounter=1To20
).Cells(Counter,3).Value=Counter
NextCounter
如果要同时更改某一单元格区域中所有单元格的属性或对其应用方法,可使用Range属性。
有关详细信息,请参阅用A1样式记号引用单元格。
引用行和列
可用Rows属性或Columns属性来处理整行或整列。
这两个属性返回代表单元格区域的Range对象。
下例中,用Rows
(1)返回Sheet1上的第一行,然后将单元格区域的Font对象的Bold属性设置为True。
SubRowBold()
).Rows
(1).Font.Bold=True
下表举例说明了使用Rows和Columns属性的一些行和列的引用。
Rows
(1)
Rows
工作表上所有的行
Columns
(1)
第一列
Columns("
Columns
工作表上所有的列
若要同时处理若干行或列,请创建一个对象变量并使用Union方法,将对Rows属性或Columns属性的多个调用组合起来。
下例将活动工作簿中第一张工作表上的第一行、第三行和第五行的字体设置为加粗。
SubSeveralRows()
DimmyUnionAsRange
SetmyUnion=Union(Rows
(1),Rows(3),Rows(5))
myUnion.Font.Bold=True
用快捷记号引用单元格
可用方括号将A1引用样式或命名区域括起来,作为Range属性的快捷方式。
这样就不必键入单词“Range”或使用引号,如下例所示。
SubClearRange()
).[A1:
B5].ClearContents
SubSetValue()
[MyRange].Value=30
引用命名区域
用名称比用A1样式记号更容易标识单元格区域。
若要命名选定的单元格区域,请单击编辑栏左端的名称框,键入名称,再按Enter。
下例引用了名为“MyBook.xls”的工作簿中的名为“MyRange”的单元格区域。
Range("
MyBook.xls!
MyRange"
).Font.Italic=True
下例引用名为“Report.xls”的工作簿中的特定工作表单元格区域“Sheet1!
Sales”。
SubFormatSales()
[Report.xls]Sheet1!
).BorderAroundWeight:
=xlthin
若要选定命名区域,请用GoTo方法,该方法将激活工作簿和工作表,然后选定该区域。
Application.GotoReference:
Selection.ClearContents
下例显示对于活动工作簿将如何编写相同的过程。
在命名区域中的单元格上循环
下例用ForEach...Next循环语句在命名区域中的每一个单元格上循环。
如果该区域中的任一单元格的值超过limit的值,就将该单元格的颜色更改为黄色。
SubApplyColor()
ConstLimitAsInteger=25
ForEachcInRange("
Ifc.Value>
LimitThen
c.Interior.ColorIndex=27
EndIf
Nextc
相对于其他单元格来引用单元格
处理相对于另一个单元格的某一单元格的常用方法是使用Offset属性。
下例中,将位于活动工作表上活动单元格下一行和右边三列的单元格的内容设置为双下划线格式。
SubUnderline()
ActiveCell.Offset(1,3).Font.Underline=xlDouble
可录制使用Offset属性(而不是绝对引用)的宏。
在“工具”菜单上,指向“宏”,再单击“录制新宏”,然后单击“确定”,再单击录制宏工具栏上的“相对引用”按钮。
若要在单元格区域中循环,请在循环中将变量与Cells属性一起使用。
下例以5为步长,用5到100之间的值填充第三列的前20个单元格。
变量counter用作Cells属性的行号。
DimcounterAsInteger
Forcounter=1To20
).Cells(counter,3).Value=counter*5
Nextcounter
用Range对象引用单元格
如果将对象变量设置为Range对象,即可用变量名方便地操作单元格区域。
下述过程创建了对象变量myRange,然后将活动工作簿中Sheet1上的单元格区域A1:
D5赋予该变量。
随后的语句用该变量代替该区域对象,以修改该区域的属性。
SubRandom()
DimmyRangeAsRange
SetmyRange=Worksheets("
myRange.Formula="
=RAND()"
myRange.Font.Bold=True
引用工作表上的所有单元格
如果对工作表应用Cells属性时不指定编号,该属性将返回代表工作表上所有单元格的Range对象。
下述Sub过程清除活动工作簿中Sheet1上的所有单元格的内容。
SubClearSheet()
).Cells.ClearContents
引用多个单元格区域
使用适当的方法可以很容易地同时引用多个单元格区域。
可用Range和Union方法引用任意组合的单元格区域;
用Areas属性可引用工作表上选定的一组单元格区域。
使用Range属性
通过在两个或多个引用之间放置逗号,可使用Range属性来引用多个单元格区域。
下例清除了Sheet1上三个单元格区域的内容。
SubClearRanges()
H16,B14:
D18"
)._
ClearContents
命名区域使得用Range属性处理多个单元格区域更为容易。
下例可在三个命名区域处于同一工作表时运行。
SubClearNamed()
MyRange,YourRange,HisRange"
).ClearContents
使用Union方法
用Union方法可将多个单元格区域组合到一个Range对象中。
下例创建了名为myMultipleRange的Range对象,并将其定义为单元格区域A1:
B2和C3:
D4的组合,然后将该组合区域的字体设置为加粗。
SubMultipleRange()
Dimr1,r2,myMultipleRangeAsRange
Setr1=Sheets("
B2"
Setr2=Sheets("
C3:
D4"
SetmyMultipleRange=Union(r1,r2)
myMultipleRange.Font.Bold=True
使用Areas属性
可用Areas属性引用选定的单元格区域或多块选定区域中的区域集合。
下述过程计算选定区域中的块数目,如果有多个块,就显示一则警告消息。
SubFindMultiple()
IfSelection.Areas.Count>
1Then
MsgBox"
Cannotdothistoamultipleselection."
选定和激活单元格
使用MicrosoftExcel时,通常要先选定单元格或单元格区域,然后执行某一操作,如设置单元格的格式或在单元格中输入数值。
但在VisualBasic中,通常在修改单元格之前不必先选定它们。
例如,如果要用VisualBasic在单元格D6中输入公式,就不必先选定单元格D6,而只需返回Range对象,然后将该对象的Formula属性设置为所需的公式,如下例所示。
SubEnterFormula()
D6"
).Formula="
=SUM(D2:
D5)"
有关使用其他方法在不选定单元格的情况下对其进行控制的示例,请参阅如何引用单元格和区域。
使用Select方法和Selection属性
Select方法激活工作表和工作表上的对象;
而Selection属性返回代表活动工作簿中活动工作表上的当前选定区域的对象。
在成功使用Selection属性之前,必须先激活工作簿,并激活或选定工作表,然后用Select方法选定单元格区域(或其他对象)。
宏录制器经常创建使用Select方法和Selection属性的宏。
下述Sub过程是用宏录制器创建的,该过程演示了Select方法和Selection属性在一起使用的方法。
SubMacro1()
).Select
ActiveCell.FormulaR1C1="
Name"
B1"
Address"
Selection.Font.Bold=True
下例完成同样的任务,但不激活或选定工作表或单元格。
SubLabels()
WithWorksheets("
.Range("
)="
).Font.Bold=True
选定活动工作表上的单元格
如果用Select方法选定单元格,应注意Select方法仅用于活动工作表。
如果从模块中运行Sub过程,必须先在该过程中激活工作表,然后才能用Select方法选定单元格区域,否则该方法将失败。
例如,下述过程在活动工作簿中将Sheet1中的一行复制到Sheet2上。
SubCopyRow()
).Rows
(1).Copy
Sheet2"
).Rows
(1).Select
).Paste
激活选定区域内的单元格
可用Activate方法激活选定区域内的单元格。
即使选定了单元格区域,也只能有一个活动单元格。
下述过程选定了一个单元格区域,然后激活该区域内的一个单元格,但并不改变选定区域。
SubMakeActive()
处理三维区域
如果要处理若干工作表上相同位置的单元格区域,可用Array函数选定两张或多张工作表。
下例设置三维单元格区域的边框格式。
SubFormatSheets()
Sheets(Array("
"
Sheet3"
Sheet5"
)).Select
H1"
Selection.Borders(xlBottom).LineStyle=xlDouble
下例应用FillAcrossSheets方法,在活动工作簿中,将Sheet2上的单元格区域的格式和任何数据复制到该工作簿中所有工作表上的相应区域中。
SubFillAll()
.Borders(xlBottom).LineStyle=xlDouble
Worksheets.FillAcrossSheets(Worksheets("
))
处理活动单元格
ActiveCell属性返回代表活动单元格的Range对象。
可对活动单元格应用Range对象的任何属性和方法,如下例所示。
ActiveCell.Value=35
只有活动单元格所在的工作表处于活动状态时,才能处理该活动单元格。
移动活动单元格
可用Activate方法指定活动单元格。
例如,下述过程使单元格B5成为活动单元格,然后将其字体设置为加粗。
SubSetActive()
ActiveCell.Font.Bold=True
若要选定单元格区域,请用Select方法。
若要使单个单元格