Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 循环进行一次轻微的更改-打开文件夹和文件,然后再次执行相同的循环,但从下一个文件夹打开文件_Vba_Excel - Fatal编程技术网

Vba 循环进行一次轻微的更改-打开文件夹和文件,然后再次执行相同的循环,但从下一个文件夹打开文件

Vba 循环进行一次轻微的更改-打开文件夹和文件,然后再次执行相同的循环,但从下一个文件夹打开文件,vba,excel,Vba,Excel,我是VBA新手,希望能得到一些帮助。我不认为这有那么难,只是我的知识限制了我 我创建了以下子文件夹,用于打开文件夹“beamresult\1”中包含*100的文件,效果非常好。 然而,我的挑战是,我有12个不同的文件夹,我希望从中打开文件。 另外,在这些文件夹中,我想打开不同的文件*100、*200、*900 在某种程度上,我想循环这个子文件夹,从文件夹1到12。在所有这些文件夹中打开所有文件并进行编辑 (在完整子文件中,在“循环”之前有许多代码用于编辑我的文件,但所有文档都应进行相同的编辑。)

我是VBA新手,希望能得到一些帮助。我不认为这有那么难,只是我的知识限制了我

我创建了以下子文件夹,用于打开文件夹“beamresult\1”中包含*100的文件,效果非常好。 然而,我的挑战是,我有12个不同的文件夹,我希望从中打开文件。 另外,在这些文件夹中,我想打开不同的文件*100、*200、*900

在某种程度上,我想循环这个子文件夹,从文件夹1到12。在所有这些文件夹中打开所有文件并进行编辑

(在完整子文件中,在“循环”之前有许多代码用于编辑我的文件,但所有文档都应进行相同的编辑。)

希望有人有一个聪明的想法如何解决这个问题

Sub OpenFiles()
'opens all files in a folder
Dim MyFolder As String
Dim MyFile As String

MyFolder = "C:\Beamresults\1"
MyFile = Dir(MyFolder & "\*100.xls")

Do While MyFile <> ""

Workbooks.Open Filename:=MyFolder & "\" & MyFile

MyFile = Dir

Loop


End Sub
子OpenFiles()
'打开文件夹中的所有文件
将MyFolder设置为字符串
将MyFile设置为字符串
MyFolder=“C:\Beamresults\1”
MyFile=Dir(MyFolder&“\*100.xls”)
当我的文件“”时执行此操作
工作簿。打开文件名:=MyFolder&“\”&MyFile
MyFile=Dir
环
端接头
子OpenFiles()
'打开文件夹中的所有文件
将MyFolder设置为字符串
将MyFile设置为字符串
暗x等长
对于x=1到12
MyFolder=“C:\Beamresults\”&x
MyFile=Dir(MyFolder&“\*”&x&“00.xls”)
当我的文件“”时执行此操作
工作簿。打开文件名:=MyFolder&“\”&MyFile
'处理并关闭文件
MyFile=Dir
环
下一个x
端接头

所有文件夹是否都在同一个更高级别的文件夹中?如果是这样,递归函数将是“遍历”所有子文件夹以查找带有*的文件的最简单解决方案???并处理它们。是的,所有文件夹1-12都在同一个文件夹中。递归函数可能会起作用。其中一个看起来怎么样?太好了,蒂姆!正如我所说,简单的解决方案。但我还有一个问题。稍后,我的文件将不会像*100这样简单地命名(这只是一个测试运行)。他们将被称为不同的人;TopChord、Post、TopChod_P、TopChord_DP和其他7个不同的名称。如何解开这个谜?有没有可能为所有这些名称创建一个字符串、数组或类似的东西,并遍历所有这些名称?
Sub OpenFiles()

    'opens all files in a folder
    Dim MyFolder As String
    Dim MyFile As String
    Dim x as Long

    For x = 1 to 12
        MyFolder = "C:\Beamresults\" & x
        MyFile = Dir(MyFolder & "\*" & x & "00.xls")

        Do While MyFile <> ""

            Workbooks.Open Filename:=MyFolder & "\" & MyFile
            'process and close file

            MyFile = Dir

        Loop
   Next x

End Sub