Excel VBA打开工作簿,其名称部分

时间:2017-08-22 13:04:10

标签: excel vba excel-vba

我想使用VBA打开来自包含数字的特定路径的工作簿,例如2。我试过的任何变化都不起作用。

除了数字之外,工作簿的名称是希伯来语,所以我希望VBA代码以文件名为基础打开文件。

我在希伯来语前有4个字母。在希伯来语中,我们从右到左书写。

这是我的代码:

Set WB1 = Workbooks.Open("C:\RESULTS\" 2 & ".xlsx")

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

这对我有用:

Option Explicit

Sub TestMe()

    Dim objFSO          As Object
    Dim objFolder       As Object
    Dim objFile         As Object
    Dim wbs             As Workbook

    Dim strExtension    As String
    Dim lngNumber       As String
    Dim lngAdditional   As Long
    Dim lngLenFile      As Long

    strExtension = ".xlsx"
    lngNumber = 20
    lngAdditional = 4

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder("C:\Users\Desktop\")
    lngLenFile = Len(strExtension) + Len(lngNumber) + lngAdditional

    For Each objFile In objFolder.Files
        If Left(objFile.Name, Len(lngNumber)) = lngNumber And _
                Right(objFile, Len(strExtension)) = strExtension And _
                Len(objFile.Name) = lngLenFile Then

            Debug.Print objFile.Name
            Set wbs = Workbooks.Open(objFile)

        End If
    Next objFile

End Sub

代码的想法是使其灵活,因此添加了lngNumberstrExtension。它始终检查尺寸以及左右两侧。因此24Some.xlsx2Some.xlsx不同。

添加了

Debug.Print以查看打开的文件。

添加了

lngAdditional,用于额外的4个字符。

答案 1 :(得分:3)

试试这个

Dim sFound As String, fPath As String

fPath = "C:\RESULTS\"
sFound = Dir(fPath & "*2*.xlsx")   'get the first file in dir
If sFound <> "" Then
    Set WB1 = Workbooks.Open(fPath & sFound)
End If