通过VB在excel中打开特定工作表

通过VB在excel中打开特定工作表,excel,Excel,我有以下代码,可以为excel文件创建csv文件。如果我指定工作表编号(如1、2等),工作正常,但我想指定工作表名称。工作表名称前后可能包含一些空格。这就是问题所在。我想我应该使用正则表达式,但我无法确定如何使用。如果文件确实包含额外的空间,如果我不处理它,我会得到一个下标超出范围的错误 如果工作表名称只能在尝试引用时近似,那么您没有太多选择,只能在目标工作簿的工作表上循环查找匹配项。也许像这样,我假设您可以调整它以满足您的特定需求: Sub test() Dim ws As Worksh

我有以下代码,可以为excel文件创建csv文件。如果我指定工作表编号(如1、2等),工作正常,但我想指定工作表名称。工作表名称前后可能包含一些空格。这就是问题所在。我想我应该使用正则表达式,但我无法确定如何使用。如果文件确实包含额外的空间,如果我不处理它,我会得到一个下标超出范围的错误


如果工作表名称只能在尝试引用时近似,那么您没有太多选择,只能在目标工作簿的工作表上循环查找匹配项。也许像这样,我假设您可以调整它以满足您的特定需求:

Sub test()

  Dim ws As Worksheet
  Dim aWsName As String

  aWsName = "Failure Report"
  For Each ws In ActiveWorkbook.Worksheets
    If InStr(1, ws.Name, aWsName) > 0 Then
      ws.Activate
      ActiveSheet.[A1] = "Matched!"
    End If
  Next

End Sub

虽然并非适用于所有情况,但代码尝试在活动工作簿的一个工作表的名称中查找工作表名称aWsName。它之所以不完美,是因为它不关心您要查找的字符串名称之前或之后的字符。如果名称差异很大,那么这应该不是问题。您至少可以试一试,看看它是如何为您工作的。

您确定src_文件工作簿确实有一个同名的工作表吗?另外,请确保src_文件工作簿中的工作表名称中没有多余的空格字符。@djikay是的,我刚刚解决了这个问题。我现在已经更新了问题。我没有将工作表名称作为输入。因此我不能使用trim。我不知道工作表名称是否有空格。
Sub test()

  Dim ws As Worksheet
  Dim aWsName As String

  aWsName = "Failure Report"
  For Each ws In ActiveWorkbook.Worksheets
    If InStr(1, ws.Name, aWsName) > 0 Then
      ws.Activate
      ActiveSheet.[A1] = "Matched!"
    End If
  Next

End Sub