具有几乎相同名称的表格

时间:2016-05-18 11:10:32

标签: excel vba excel-vba

我试图打开并复制来自不同excel文件的工作表中的单元格。打开,复制和关闭我需要的excel文件没有问题。在这种情况下,我有With x.Sheets("Documents").UsedRange。我需要复制单元格的大多数文件都有“Documents”作为工作表名称,但有些文件有“Documents”+其他不同的字符(例如“DocuemntsEX”)。当我尝试复制时,它显示“下标超出范围”,因为“DocumentEX”与“Document”不同。有没有什么办法可以保留工作表的具体名称,因为大多数文件都有这个名字?是否有任何代码可以帮助我访问具有不同工作表名称的工作表?如果你需要澄清,请打我。

2 个答案:

答案 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(类似于=)比较它们的名称,但它可以使用一些基本的正则表达式。