文档库 最新最全的文档下载
当前位置:文档库 › Excel常用操作

Excel常用操作

使用表
Workbook 类提供了一个 Sheets 属性,它返回一个 Sheets 对象。这个对象包含 Sheet 对象集合,其中每个对象既可以是 Worksheet 对象,也可以是 Chart 对象。单击示例工作簿的 List Sheets 链接来运行下面的过程,它列出工作簿中的所有现有的表:

' Visual Basic
Private Sub ListSheets()
Dim sh As Excel.Worksheet
Dim rng As Excel.Range
Dim i As Integer

rng = ThisApplication.Range("Sheets")
For Each sh In ThisWorkbook.Sheets
rng.Offset(i, 0).Value = https://www.wendangku.net/doc/338039866.html,
i = i + 1
Next sh
End Sub

// C#
private void ListSheets()
{
int i = 0;

Excel.Range rng =
ThisApplication.get_Range("Sheets", Type.Missing);
foreach (Excel.Worksheet sh in ThisWorkbook.Sheets)
{
rng.get_Offset(i, 0).Value2 = https://www.wendangku.net/doc/338039866.html,;
i = i + 1;
}
}
您可能还会发现下面的 Sheets 类的成员会很有用。

Visible 属性可以让您在不删除和重建表的情况下显示或隐藏一个现有的表。可将 Visibility 属性设置成 XlSheetVisibility 枚举值(XlSheetHidden、XlSheetVeryHidden、xlSheetVisible)中的一个值。使用 XlSheetHidden 可以让用户通过 Excel 界面隐藏表;使用 XlSheetVeryHidden,则要求您运行代码来取消隐藏表:

' Visual Basic
DirectCast(ThisWorkbook.Sheets(1), Excel.Worksheet).Visible = _
Excel.XlSheetVisibility.xlSheetVeryHidden

// C#
((Excel.Worksheet) ThisWorkbook.Sheets[1]).Visible =
Excel.XlSheetVisibility.xlSheetVeryHidden;
Add 方法允许您将一个新表添加到工作簿中的表集合中,并且可以接受四个可选参数,这些参数可以指明表的位置、要添加的表数和表的类型(工作表、图表等):

' Visual Basic
Dim sh As Excel.Sheet = ThisWorkbook.Sheets.Add()

// C#
Excel.Sheet sh = ThisWorkbook.Sheets.Add(
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Copy 方法创建一个表的副本,并且将表插入到指定的位置。您可以随意指定将新表插入到现有表的前面或者后面。如果您不指定位置,Excel 会创建一个新的工作簿来存放这个新表。下面的代码片段复制当前工作簿中的第一个表,并且将副本放在第三个表的后面:

' Visual Basic
DirectCast(ThisWorkbook.Sheets(1), Excel.Worksheet). _
Copy(After:=ThisWorkbook.Sheets((3)))

// C#
((Excel.Worksheet) ThisWorkbook.Sheets[1]).
Copy(Type.Missing, ThisWorkbook.Sheets[3]);.
Delete 方法删除一个指定的表:

' Visual Basic
DirectCast(ThisWorkbook.Sheets(1), Excel.Worksheet).Delete

// C#
((Excel.Worksheet) ThisWorkbook.Sheets[1]).Delete();
FillAcrossSheets 方法将工作簿内一个表的范围中的数据复制到所有其他表。您需要指定一个范围,以及是否要复制数据、进行格式化,或全部,剩下的工作 Excel 会去处理。下面的代码片段在工作簿中,将一个

表中名称为 Data 的范围的数据和复制到所有表的同一区域中,并对这些数据进行格式化:

' Visual Basic
ThisWorkbook.Sheets.FillAcrossSheets( _
ThisApplication.Range("Data"), Excel.XlFillWith.xlFillWithAll)

// C#
ThisWorkbook.Sheets.FillAcrossSheets(
ThisApplication.get_Range("Data", Type.Missing),
Excel.XlFillWith.xlFillWithAll);
Move 方法和 Copy 方法很类似,只不过最终您得到的是表的一个实例。您可以指定将表放到您的表的前面,或者放到后面(但不可以同时指定)。同样的,如果您没有为移动的表指定一个位置,Excel 会创建一个新的工作簿来包含它。下面的代码片段将第一个工作表移到最后:

' Visual Basic
Dim shts As Excel.Sheets = ThisWorkbook.Sheets
DirectCast(shts(1), Excel.Worksheet).Move(After:=shts(shts.Count))

// C#
Excel.Sheets shts = ThisWorkbook.Sheets;
((Excel.Worksheet)shts[1]).Move(Type.Missing, shts[shts.Count]);
提示 如果出于某种原因您要对工作簿中的表列表进行排序,您可以使用 Move 方法来进行一个低效的冒泡排序。当然,您不可能有太多的表,所以排序速度不是个问题。

PrintOut 方法允许您打印选择的对象(这个方法适用于多个不同的对象)。您可以指定许多可选的参数,包括:要打印的页数(起始页和终止页)、副本数量、打印前是否进行预览、要使用的打印机的名称、是否打印到一个文件、是否进行逐份打印以及您要打印到的文件名。下面的例子使用默认的打印机打印指定的表、只打印第一页、打印两份副本,并且在打印前预览文档:

' Visual Basic
DirectCast(ThisWorkbook.Sheets(1), Excel.Worksheet). _
PrintOut(From:=1, To:=1, Copies:=2, Preview:=True)

// C#
((Excel.Worksheet)ThisApplication.Sheets[1]).
PrintOut(1, 1, 2, true, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
PrintPreview 方法允许您在 PrintPreview 窗口显示指定的对象,并且可以选择禁止更改页面布局:

' Visual Basic
DirectCast(ThisWorkbook.Sheets(1), Excel.Worksheet). _
PrintPreview(False)

// C#
((Excel.Worksheet)ThisApplication.Sheets[1]).PrintPreview(false);
Select 方法选择指定的对象,并且改变用户的选择(可使用 Activate 方法使对象获得焦点,而不需改变用户的选择。)您可以有选择地提供一个被当前选择取代的对象的引用。下面的代码片段选择第一个工作表:

' Visual Basic
ActiveWorkbook.Sheets(1).Select()

// C#
((Excel.Worksheet)ThisApplication.Sheets[1]).Select(Type.Missing);
提示 在这一部分中列出的许多方法也适用于其他的类。例如,PrintOut 方法是由以下类提供的:Chart、Charts、Range、Sheets、 Window、Workbook、Worksheet 和 Worksheets。这些方法的具体使用是相同的,只不过是作用在不同的对象上而已。Select 方

法几乎适用于任何一种可选择的对象(并且这样的对象有很多)。

Workbook 类的方法
Workbook 类提供了大量的方法,其中有许多方法处理一些非常特殊的情况。这一部分探讨一些在每个应用程序中您都可能会用到的方法,而不是详细介绍各种方法,并将一些难理解的方法放在后面的章节中介绍,下面的列表描述了一些您最可能使用的方法:

Activate 方法激活一个工作簿,并且选择工作簿中的第一个工作表:

' Visual Basic
ThisApplication.Workbooks(1).Activate

// C#
ThisApplication.Workbooks[1].Activate;
Close 方法关闭一个指定的工作簿,并且(可选)指定是否保存修改。如果工作簿从未保存过,则可以指定一个文件名。此外,如果您要将工作簿发送给其他用户,您可以指定您是否想将工作簿发送给下一个用户。下面的代码片段关闭工作簿,并且不保存修改:

' Visual Basic
ThisApplication.Workbooks(1).Close(SaveChanges:=False)

// C#
ThisApplication.Workbooks(1).Close(false,
Type.Missing, Type.Missing);
Protect 和 Unprotect 方法允许您保护一个工作簿,从而不能添加或者删除工作表,以及再次取消保护工作簿。您可以指定一个密码(可选),并且指明是否保护工作簿的结构(这样用户就不能移动工作表)以及工作簿的窗口(可选)。保护工作簿用户仍可以编辑单元格。要想保护数据,您必须保护工作表。调用 Unprotect 方法(如果需要,还要传递一个密码)可以取消保护工作簿。以下示例假定一个名称为 GetPasswordFromUser 的过程,它要求用户输入密码,并且会返回输入的值:

' Visual Basic
ThisApplication.Workbooks(1).Protect(GetPasswordFromUser())

// C#
ThisApplication.Workbooks[1].Protect(
GetPasswordFromUser(), Type.Missing, Type.Missing);
正如您所认为的,Save 方法保存工作簿。如果您还未保存过工作簿,则应该调用 SaveAs 方法,这样您可以指定一个路径(如果还未保存过工作簿,Excel 会将其保存在当前文件夹中,并以创建工作簿时所给的名称命名):

' Visual Basic
' Save all open workbooks.
Dim wb As Excel.Workbook
For Each wb in ThisApplication.Workbooks
wb.Save
Next wb

// C#
// Save all open workbooks.
foreach (Excel.Workbook wb in ThisApplication.Workbooks)
{
wb.Save();
}
SaveAs 方法要比 Save 方法复杂的多。这个方法允许您保存指定的工作簿,并且指定名称、文件格式、密码、访问模式和其他更多的选项(可选)。查看联机帮助可以获得所有选项列表。下面的代码片段将当前工作簿保存到一个指定位置,并且存成 XML 格式:

' Visual Basic
ThisApplication.ActiveWorkbook.SaveAs("C:\MyWorkbook.xml", _
FileFormat:=Excel.XlFileFormat.xlXMLSpreadsheet)

// C#
ThisApplication.Acti

veWorkbook.SaveAs("C:\\MyWorkbook.xml",
Excel.XlFileFormat.xlXMLSpreadsheet, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
提示 由于保存成某些格式需要一些交互,您也许想在调用 SaveAs 方法之前将 Application.DisplayAlerts 属性设置成 False。例如,在将一个工作表保存成 XML 格式时,Excel 会提醒您不能随工作簿保存 VBA 项目。如果将 DisplayAlerts 属性设置成 False,就不会出现这种警告。

SaveCopyAs 方法将工作簿的一个副本保存到文件中,但不会修改在内存中打开的工作簿。当您想创建工作簿的备份,同时不修改工作簿的位置时,这个方法非常有用:

' Visual Basic
ThisApplication.ActiveWorkbook.SaveCopyAs("C:\Test.xls")

// C#
ThisApplication.ActiveWorkbook.SaveCopyAs("C:\\Test.xls");
警告 交互式地取消任何保存或者复制工作簿的方法会在您的代码中触发一个运行时异常。例如,如果您的过程调用 SaveAs 方法,但是没有禁用 Excel 的提示功能,并且您的用户在提示后单击“取消”,则 Excel 会将运行时错误返回给代码。

相关文档
相关文档 最新文档