使用Excel VBA打开部分名称的工作簿

3

我希望使用VBA打开一个包含数字的文件夹,例如2,并涉及到IT技术。但是,我试过的各种变形都不能正常工作。

这个工作簿的名称除了数字以外都是用希伯来语书写的,所以我希望VBA代码可以基于数字来打开文件。

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

下面是我的代码:

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

谢谢您的帮助。

不行,那样做不行。问题说明在数字2之前有一些希伯来文本应该被忽略,但它是文件名的一部分。 - Wolfie
1
如果工作簿中有希伯来语,并且其中包含您需要搜索的数字,则需要在目录中搜索您想要的工作簿。我将使用VBA添加答案,告诉您如何搜索文件。 - Danny James
@DannyJames 不确定你是在问我还是告诉我。 - Rafael Osipov
2个回答

4

试试这个

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

@RafaelOsipov - 首先,它是否进入了“IF”条件。 - Mrig
@RafaelOsipov - 调试并检查sFound的值。 - Mrig
@Mrig 为什么要在 fPath 后面再加一个斜杠? - Marco Vos
1
@RafaelOsipov - 我已经将sFound = Dir(fPath & "\" & "*2*.xlsx")更改为sFound = Dir(fPath & "*2*.xlsx")。你可以尝试一下这个。 - Mrig
@Mrig - 设置WB1时出现了同样的问题吗? - Marco Vos
显示剩余2条评论

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个字符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接