名称几乎相同的表单

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

使用通配符首先获取表单:

 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 

正如我在评论中所说的,你可以用数字来表格,或者你可以使用类似的东西

 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 

当你比较表名string和常规字符(在我的例子*所以它的任何东西)。 所以这个macros将与绒毛,绒毛蓬松等

还有一些通过Sheets (工作簿中的所有工作表)循环,并通过Like (比如=)比较它们的名字,但是它可以使用一些基本的正则expression式。