Vba 名称几乎相同的图纸

Vba 名称几乎相同的图纸,vba,excel,Vba,Excel,我正在尝试从另一个excel文件的工作表中打开和复制单元格。我在打开、复制和关闭所需的excel文件方面没有问题。在这种情况下,我使用了带有x.Sheets(“文档”)的。UsedRange。我需要从中复制单元格的大多数文件都有“Documents”作为工作表名称,但有些文件有“Documents”+其他不同的字符(例如,“DocuemntsEX”)。当我试图复制时,它显示“下标超出范围”,因为“DocumentEX”与“Document”不同。有没有什么方法可以保留工作表的特定名称,因为大多数

我正在尝试从另一个excel文件的工作表中打开和复制单元格。我在打开、复制和关闭所需的excel文件方面没有问题。在这种情况下,我使用了带有x.Sheets(“文档”)的
。UsedRange
。我需要从中复制单元格的大多数文件都有“Documents”作为工作表名称,但有些文件有“Documents”+其他不同的字符(例如,“DocuemntsEX”)。当我试图复制时,它显示“下标超出范围”,因为“DocumentEX”与“Document”不同。有没有什么方法可以保留工作表的特定名称,因为大多数文件都有这个名称?是否有任何代码可以帮助我访问具有不同图纸名称的图纸?如果你需要澄清,就打电话给我

正如我在评论中所说的,您可以按编号使用工作表,也可以使用类似的方式

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
当您将工作表名称与字符串和常规字符进行比较时(在我的示例中,它是任意的)。因此,该宏将处理sheet fluff、fluffy fluffiest等


通过
工作表
(工作簿中的所有工作表)进行循环,并通过
Like
(Like=)比较它们的名称,但它可以使用一些基本的正则表达式

首先使用通配符获取工作表:

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

如果工作表在同一索引上,您可以使用
工作表(“工作表编号”)
(不带“”,因此,例如工作表(2)
如果您需要澄清,请直接联系我。
绝对100%需要澄清。最好使用
Lcase
Ucase
,或
选项比较文本,例如
Lcase(ws.Name)来消除案例敏感性像“documents*”
,否则可能会出现一些问题