我试图打开并复制来自不同excel文件的工作表中的单元格。打开,复制和关闭我需要的excel文件没有问题。在这种情况下,我有With x.Sheets("Documents").UsedRange
。我需要复制单元格的大多数文件都有“Documents”作为工作表名称,但有些文件有“Documents”+其他不同的字符(例如“DocuemntsEX”)。当我尝试复制时,它显示“下标超出范围”,因为“DocumentEX”与“Document”不同。有没有什么办法可以保留工作表的具体名称,因为大多数文件都有这个名字?是否有任何代码可以帮助我访问具有不同工作表名称的工作表?如果你需要澄清,请打我。
答案 0 :(得分:3)
使用通配符首先获取工作表:
Function GetDocumentSheet(ByRef wb As Workbook) As Worksheet
For Each ws In wb.Sheets
If LCase$(ws.Name) Like "documents*" Then
Set GetDocumentSheet = ws
GoTo SheetFound:
End If
Next
Set GetDocumentSheet = Nothing
SheetFound:
End Function
在您的代码中:
Set mySheet = GetDocumentSheet(x) '// where 'x' is your workbook object
然后参考
mySheet.UsedRange
答案 1 :(得分:0)
正如我在评论中所说,你可以按编号使用工作表,或者你可以使用这样的东西
Sub findSheet()
Dim sheetSubName As String
sheetSubName = "fluff"
Dim currentSheet As Worksheet
For Each currentSheet In Sheets
If currentSheet.Name Like sheetSubName & "*" Then
MsgBox "do some stuff"
End If
Next currentSheet
End Sub
当您将工作表名称与字符串和常规字符进行比较时(在我的示例中*所以它的任何内容)。因此,这个宏将与片状绒毛,蓬松蓬松等一起使用。
通过Sheets
(工作簿中的所有工作表)循环并通过Like
(类似于=)比较它们的名称,但它可以使用一些基本的正则表达式。