Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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 创建宏以在合并多个excel文件后输出和更新文件_Vba_Excel - Fatal编程技术网

Vba 创建宏以在合并多个excel文件后输出和更新文件

Vba 创建宏以在合并多个excel文件后输出和更新文件,vba,excel,Vba,Excel,我是VBA的新手。我正在使用Excel 2013完成此任务。我有几个Excel文件,我正在使用下面的宏组合成一个文件和多张图纸 Sub Merge2MultiSheets() Dim wbDst As Workbook Dim wbSrc As Workbook Dim wsSrc As Worksheet Dim MyPath As String Dim strFilename As String Application.DisplayAlerts = False Appli

我是VBA的新手。我正在使用Excel 2013完成此任务。我有几个Excel文件,我正在使用下面的宏组合成一个文件和多张图纸

Sub Merge2MultiSheets()
Dim wbDst As Workbook
Dim wbSrc As Workbook
Dim wsSrc As Worksheet
Dim MyPath As String
Dim strFilename As String

    Application.DisplayAlerts = False
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    MyPath = "H:\Survey Research\ECAS\Reports\2015\Tracks"
    Set wbDst = Workbooks.Add(xlWBATWorksheet)
    strFilename = Dir(MyPath & "\*.xls", vbNormal)

If Len(strFilename) = 0 Then Exit Sub

    Do Until strFilename = ""

        Set wbSrc = Workbooks.Open(FileName:=MyPath & "\" & strFilename)

        Set wsSrc = wbSrc.Worksheets(1)

        wsSrc.Copy After:=wbDst.Worksheets(wbDst.Worksheets.Count)

        wbSrc.Close False

    strFilename = Dir()

Loop
wbDst.Worksheets(1).Delete

Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
我希望新文件中的每张图纸都采用其原始文件的名称。我试图编辑下面的代码并将其包含在上面的宏中,但虽然没有收到错误消息,但它没有完成任务

Do While fileName <> ""
Workbooks.Open (directory & fileName)
WrdArray() = Split(fileName, ".")
For Each sheet In Workbooks(fileName).Worksheets
Workbooks(fileName).ActiveSheet.Name = WrdArray(0)
total = Workbooks("import-sheets.xlsm").Worksheets.Count
Workbooks(fileName).Worksheets(sheet.Name).Copy after:=Workbooks("import-   sheets.xlsm").Worksheets(total)
合并文件并命名图纸后,我希望输出新文件,并在原始文件中的数据发生更改时轻松更新它。
是否可以用一个宏实现所有这些?如果是这样的话,有谁能建议一种在Excel中编写宏的方法来自动命名工作表、输出文件并在原始文件中的数据发生更改时进行更新?

对于第一部分,我认为您只需要添加一行:

Do Until strFilename = ""

        Set wbSrc = Workbooks.Open(FileName:=MyPath & "\" & strFilename)

        Set wsSrc = wbSrc.Worksheets(1)
        'name the tab according to the file name
        wsSrc.Name = Replace(strFilename,".xls","")

        wsSrc.Copy After:=wbDst.Worksheets(wbDst.Worksheets.Count)

        wbSrc.Close False

    strFilename = Dir()

Loop

关于在源文件更改时更新工作簿的最后一部分可能要复杂得多:最简单的方法是重新运行合并代码。如果这对您不起作用,那么您需要添加更多详细信息。

到底是什么提供了详细信息!阻止你做你想做的事?如果您的现有代码存在问题,请更新您的问题以将其包括在内。如果您没有任何代码,请尝试编写一些代码,然后发回该代码以及可能收到的错误消息等的描述。是否缺少?没有问题也没有要求。。。只是我有。。。我想[做]。。。所以,嗯。。。没有人阻止你。想做就做如果你有一些具体的问题,请回来问。我很抱歉我的问题不清楚。我编辑了这个问题。谢谢你的建议@提姆