【问题标题】:Fast Way to Open all files in a folder, refresh all files, SAVE AS all files快速打开文件夹中所有文件、刷新所有文件、另存为所有文件的方法
【发布时间】:2019-06-27 16:04:11
【问题描述】:

我有 2 个不同的文件夹位置,一个模板文件夹包含 40 个模板 excel 文件,其中包含预制公式。这些文件保存为 template_2D、template_3D 等,但是 30 个文件依赖于一个名为“srtData”的文件。 xslx' 和其他 10 个从打开的 30 个中提取数据。

然后我想刷新所有文件(因为所有文件都相互依赖),然后我想将所有 40 个文件保存在不同的位置,并在没有模板的情况下使用它们的名称。例如。 2D,3D ...但在不同的位置,然后关闭所有模板文件以及这些保存的文件。所以模板文件不会改变,所发生的只是刷新版本已保存在不同的文件夹位置。

我对 VBA 非常了解,所以对 VBA 非常了解。

到目前为止,我只有

 Sub OpenAllWorkbooks()

Dim fldrpath As String

fldrpath = "R:\Sam\"

'Step 1:Declare your variables
Dim MyFiles As String
 'Step 2: Specify a target folder/directory, you may change it.
MyFiles = Dir(fldrpath & "*.xlsx")
Do While MyFiles <> ""
'Step 3: Open Workbooks one by one
Workbooks.Open fldrpath & MyFiles

'Step 4: Next File in the folder/Directory
MyFiles = Dir
Loop

End Sub

但是我认为这样做我不知道如何将所有内容保存在不同的文件夹中

【问题讨论】:

  • Workbooks.Open fldrpath &amp; MyFiles 更改为Set wb = Workbooks.Open (fldrpath &amp; MyFiles) 然后简单地使用wb.SaveAs path,fileformat 其中wb 被声明为Dim wb as workbook
  • 谢谢!但是如何在没有'template_'的情况下将它们保存为同名?
  • wb.saveas replace(path,"template_",""),fileformat 只会删除单词“template_”
  • 您可以使用Mid(FileName,10) 获取不带Template_ 的文件名,或者如果文件名中没有多次出现“Template_”字样,则使用@HarassedDad 建议的Replace .
  • 啊不可思议!我现在正在测试它并尽快发布解决方案(或错误)

标签: excel vba


【解决方案1】:

这是我使用的解决方案,遵循上面的 cmets:

Sub OpenAllWorkbooks()

Dim wb as Workbook
Dim fldrpath As String

fldrpath = "R:\Sam\"

'Step 1:Declare your variables
Dim MyFiles As String
 'Step 2: Specify a target folder/directory, you may change it.
MyFiles = Dir(fldrpath & "*.xlsx")
Do While MyFiles <> ""
'Step 3: Open Workbooks one by one
Set wb = Workbooks.Open (fldrpath & MyFiles)
wb.SaveAs path,fileformat

'Step 4: Next File in the folder/Directory
MyFiles = Dir
Loop

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    相关资源
    最近更新 更多