列出工作簿中除最后一个选项卡之外的所有选项卡
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
我想列出电子邮件正文中工作簿中的所有选项卡,不包括最后一个选项卡。
我注意到最后一个选项卡名称始终为 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