简介本文介绍了使用 Microsoft Office Excel 2003 的 技巧,它们是从各种新闻组汇集而来的。对于那些不熟悉的人来说,新闻组是一个论坛,用户和开发人员可以在这里提交涉及许多技术主题(例如 Office 应用程序)的问题。用户和其他专业人员可以回答这些问题。在此上下文中,新闻组包含大量经过修改的信息,可以帮助您使用和开发所选的 Office 应用程序。构成这些技巧的答案都是超级用户和开发人员(称为 Microsoft 最有价值的专家 (MVP))多年经验的结晶。 本文中的代码示例旨在作为您自定义应用程序的起点。这些示例已在 Excel 2003 上经过测试,但是也可以在 Excel 的先前版本中运行。在您的应用程序中使用这些示例之前,应该在您自己的 Excel 版本中对它们进行测试。 隔页打印工作表本部分中的代码用于隔页打印工作簿中的工作表。它通过循环访问所有的工作表并用偶数表填充数组来做到这一点。 Sub PrintEvenSheets()
Dim mySheetNames() As String
Dim iCtr As Long
Dim wCtr As Long
iCtr = 0
For wCtr = 1 To Sheets.Count
If wCtr Mod 2 = 0 Then
iCtr = iCtr + 1
ReDim Preserve mySheetNames(1 To iCtr)
mySheetNames(iCtr) = Sheets(wCtr).Name
End If
Next wCtr
If iCtr = 0 Then
'Only one sheet. Display message or do nothing.
Else
Sheets(mySheetNames).PrintOut preview:=True
End If
End Sub
该示例用于打印偶数工作表。您可以循环访问所有的工作表,并根据要打印的偶数工作表来构建一个数组。可以通过删除本示例中的第一个 If...Then End If 语句来做到这一点。 使用 ADO 在工作簿中检索工作表名称此代码示例使用 Microsoft ActiveX Data Objects (ADO) 在工作簿中检索工作表的名称。通过使用 ADO,您可以在 Excel 之外处理文件。ADO 使用通用编程模型来访问许多窗体中的数据。 Sub GetSheetNames()
Dim objConn As Object
Dim objCat As Object
Dim tbl As Object
Dim iRow As Long
Dim sWorkbook As String
Dim sConnString As String
Dim sTableName As String
Dim cLength As Integer
Dim iTestPos As Integer
Dim iStartpos As Integer
'Change the path to suit your own needs.
sWorkbook = "c:\myDir\Book1.xls"
sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sWorkbook & ";" & _
"Extended Properties=Excel 8.0;"
Set objConn = CreateObject("ADODB.Connection")
objConn.Open sConnString
Set objCat = CreateObject("ADOX.Catalog")
Set objCat.ActiveConnection = objConn
iRow = 1
For Each tbl In objCat.Tables
sTableName = tbl.Name
cLength = Len(sTableName)
iTestPos = 0
iStartpos = 1
'Worksheet names with embedded spaces are enclosed
'by single quotes.
If Left(sTableName, 1) = "'" And Right(sTableName, 1) = "'" Then
iTestPos = 1
iStartpos = 2
End If
'Worksheet names always end in the "___FCKpd___1quot; character.
If Mid$(sTableName, cLength - iTestPos, 1) = "___FCKpd___1quot; Then
Cells(iRow, 1) = Mid$(sTableName, iStartpos, cLength - _
(iStartpos + iTestPos))
MsgBox Cells(iRow, 1)
iRow = iRow + 1
End If
Next tbl
objConn.Close
Set objCat = Nothing
Set objConn = Nothing
End Sub
(责任编辑:admin) |
