簡體   English   中英

如何在VBA中打開具有類似名稱的文件?

[英]How to open a file with similar name in VBA?

我正在嘗試使用VBA打開文件夾中的文件,條件是它們的名稱與其他文件的名稱相似,而其他文件的名稱也將被打開。

使用以下代碼,我從folder1打開名稱為“ 1_FirmA_v1.0”,“ 1_FrimB_v1.0”,....的文件,然后在這些文件上執行一些命令。

我的問題是,每當文件名與循環中openend的folder1中的文件名相似時,我都想從folder2中打開文件。 folder2中文件的名稱為“ 2_FirmA_v1.1”,“ 2_FirmB_v1.5”,...。 因此,當我從文件夾1打開“ 1_FirmA_v1.0”時,我想從文件夾2打開“ 2_FirmA_v1.1”。問題是我不知道如何以動態搜索文件名的方式放置代碼第二個文件夾的名稱,因為尚不清楚文件的確切名稱。 這是我到目前為止嘗試過的:

Sub Makro1()

Dim x As Workbook
Dim y As Workbook
Dim myPath, fname

myPath = "C:\Desktop\"

Set fso = CreateObject("Scripting.FileSystemObject")
Set fldr = fso.GetFolder("C:\TEST\")

fname = Dir(fldr & "\1*")
'fname2 = myPath2 & "Daten" & Mid(fname, Len(fname) - 12, Len(fname) - 25) & "v2.1test.xlsx"
'fname3 = myPath3 & "Daten" & Mid(fname, Len(fname) - 12, Len(fname) - 25) & "v2.0.xlsx"

Do While fname <> ""


Set x = Workbooks.Open(fldr & fname)
Set y = Workbooks.Open(myPath & "2" & Mid(fname, Len(fname) - 31, Len(fname) - 25) & "v*")

x.Activate
fname = Dir
Loop

不幸的是,我似乎無法在命令workbooks.open中使用“ *”。 有誰知道另一種處理方式? 最好的祝福

好的,我將開始一個答案,我們將繼續前進。

首先,只是因為它在許多方面都更好,所以請設置對Windows.Scripting的引用。 Windows.Scripting然后將fso聲明為

Dim fso as Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject

因為這將為您提供智能感知,並使事情變得容易。

就通配符而言,您需要縮小范圍。 假設我們正在尋找下划線之間的字符串,在這種情況下為“ FirmA”。 您將需要瀏覽文件夾中的文件,直到找到為止。

Dim fldr as Scripting.Folder 'again, gives you the intelliSense
Set fldr = fso.GetFolder("C:\TEST\")
Dim fi as Scripting.File
For Each fi in fldr.Files
    If fi.Name Like "*FirmA*" Then '(hardcoded, but you will replace)
        <your code>
    End if
Next

如何提取“ FirmA”比較棘手。 您將需要為文件名提供更多背景信息。 必須有某種形式的模式才能起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM