列出工作簿中除最后一个选项卡之外的所有选项卡

List all tabs in a workbook excluding the last tab

我想列出电子邮件正文中工作簿中的所有选项卡,不包括最后一个选项卡。

我注意到最后一个选项卡名称始终为 21 个字符,因此我的解决方案是从字符串中删除最后 21 个字符。

如果有人试图在没有足够制表符的工作簿上使用宏来从末尾减去 21 个字符,我需要有更好的方法或提供某种错误处理过程,包括 Left 和 Len 函数细绳。我犹豫要不要点击“如果出现错误继续下一步”,因为我觉得从我浏览堆栈的时间来看这是一个不好的做法。

这是一段代码:

​Dim EmailItem  As Object
​Dim xMailOut As Outlook.MailItem
Dim xOutApp As Outlook.Application
​Set xOutApp = CreateObject("Outlook.Application")
​Set xMailOut = xOutApp.CreateItem(olMailItem)
Dim wks As Worksheet, strName As String
​For Each wks In Worksheets
​    strName = strName & wks.Name & "<br>"
Next
MSG = "" & Left(strName, Len(strName) - 21)

错误将在代码的最后一行出现,因为工作簿没有足够的标签/标签匹配要删除的固定标签的字符。我不想删除标签。我只是不想要 MSG 中的选项卡名称。

您可以使用不同类型的循环来排除最后一个工作表:

Dim wb As Workbook, strName As String, i As Long

set wb = ThisWorkbook 'or ActiveWorkbook or whatever...
For i = 1 to wb.Worksheets.Count-1
    strName = strName & wb.Worksheets(i).Name & "<br>"
Next