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

时间:2014-07-26 17:38:50

标签: excel

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

src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0))
dim mine(1)
mine(0)="

Dim oExcel 
Set oExcel = CreateObject("Excel.Application")

Dim oBook
Set oBook = oExcel.Workbooks.Open(src_file)
oBook.Worksheets("Failure Report").Activate
oBook.SaveAs mine(0), csv_format
oExcel.Quit

1 个答案:

答案 0 :(得分:0)

如果您尝试引用它时工作表名称只能近似,那么您没有太多选择,只能循环遍历目标工作簿的工作表以查找匹配项。也许是这样的(我假设你可以根据你的具体要求调整它):

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。它不完美的原因是因为它不关心你正在寻找的字符串aWsName之前或之后的字符。如果名称充分不同,那么这应该不是问题。你至少可以试试看它是如何运作的。