我有以下代码为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
答案 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
之前或之后的字符。如果名称充分不同,那么这应该不是问题。你至少可以试试看它是如何运作的。