You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VBA复制含固定文本RB的可变文件名文件数据(无需打开)

解决方法:自动选择包含“RB”的目标文件

Got it, let's adjust your VBA code to automatically locate the Excel file with "RB" in its name, instead of relying on a hardcoded filename. Here's the modified version with explanations:

完整修改后的代码

Sub DownloadRA()
    Dim targetPath As String
    Dim targetFileName As String
    Dim rgTarget As Range
    Dim sourceFormula As String
    
    ' 替换为你的目标文件夹实际路径
    targetPath = "D:\2023 MOJE pliki tygodniowe\kopie zapasowe\"
    
    ' 查找文件夹中包含"RB"的Excel文件(通配符*匹配任意字符)
    targetFileName = Dir(targetPath & "*RB*.xlsx")
    
    ' 检查是否找到符合条件的文件
    If targetFileName = "" Then
        MsgBox "未找到包含'RB'的Excel文件,请检查路径或文件名!", vbExclamation
        Exit Sub
    End If
    
    ' 设置当前工作簿中PASTEHERE工作表的目标区域
    Set rgTarget = ThisWorkbook.Sheets("PASTEHERE").Range("B23:EA6000")
    
    ' 动态构建外部数据引用公式
    sourceFormula = "='" & targetPath & "[" & targetFileName & "]Sheet1'!$B$23:$EA$6000"
    
    ' 写入公式并转换为静态值(避免外部链接)
    rgTarget.FormulaArray = sourceFormula
    rgTarget.Value = rgTarget.Value
End Sub

关键修改点说明

  • 自动查找文件:使用Dir函数配合通配符*RB*.xlsx,可以快速定位目标文件夹中文件名包含“RB”的Excel文件。*代表任意长度的任意字符,所以*RB*会匹配所有文件名里有“RB”的xlsx文件。
  • 错误处理:添加了判断逻辑,如果没找到符合条件的文件,会弹出提示框并终止程序,避免出现运行时错误。
  • 更可靠的工作簿引用:把ActiveWorkbook改成ThisWorkbook,确保始终指向运行这段代码的当前工作簿,而不是当前激活的其他工作簿。
  • 动态公式构建:通过字符串拼接,把找到的文件名和路径自动插入到公式中,无需手动修改代码。

注意事项

如果目标文件夹中有多个包含“RB”的Excel文件,Dir函数会返回按名称排序的第一个文件。如果需要处理多个文件,可以添加循环逻辑遍历所有匹配的文件,不过从你的需求来看,应该是只有一个目标文件,所以当前代码足够使用。

内容的提问来源于stack exchange,提问作者nozu1984

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 16:45:29