Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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 - Fatal编程技术网

Vba 宏将数据从一个工作簿复制到特定文件夹中的多个工作簿

Vba 宏将数据从一个工作簿复制到特定文件夹中的多个工作簿,vba,Vba,这正是我想要的,但在根据我的需要更改文件夹路径、文件名等之后,它就不起作用了 我的工作簿路径是C:\Users\navinc\Desktop\ 我的文件名是test(2) 我的工作表名称是主项目列表 文件夹路径C:\Users\navinc\Desktop\test中的我的目标文件\ 错误消息:“下标超出范围”是否缺少任何内容 我的代码: Sub Macro1() Dim file As String Dim myPath As String Dim wb As Workb

这正是我想要的,但在根据我的需要更改文件夹路径、文件名等之后,它就不起作用了

  • 我的工作簿路径是C:\Users\navinc\Desktop\
  • 我的文件名是test(2)
  • 我的工作表名称是主项目列表
  • 文件夹路径C:\Users\navinc\Desktop\test中的我的目标文件\
  • 错误消息:“下标超出范围”是否缺少任何内容
我的代码:

Sub Macro1()
   Dim file As String
   Dim myPath As String
   Dim wb As Workbook
   Dim rng As Range

   Dim wbMaster As Workbook
   'if master workbook already opened
   'Set wbMaster = Workbooks("test(2).xlsx")
   'if master workbook is not opened
   Set wbMaster = Workbooks.Open("C:\Users\navinc\Desktop\test(2).xlsx")

   Set rng = wbMaster.Sheets("Master Project list").Range("A1:D1")

   myPath = "C:\Users\navinc\Desktop\test\" ' note there is a back slash in the end
   file = Dir(myPath & "*.xlsx*")
   While (file <> "")

        Set wb = Workbooks.Open(myPath & file)
        rng.Copy
        With wb.Worksheets("Master Project list").Range("A1")
            .PasteSpecial xlPasteColumnWidths
            .PasteSpecial xlPasteAll
        End With

        wb.Close SaveChanges:=True
        Set wb = Nothing

        file = Dir
    Wend

    Application.CutCopyMode = False
End Sub
Sub宏1()
将文件设置为字符串
将myPath设置为字符串
将wb设置为工作簿
变暗rng As范围
将wbMaster设置为工作簿
'如果主工作簿已打开
'Set wbMaster=工作簿(“测试(2).xlsx”)
'如果未打开主工作簿
设置wbMaster=Workbooks.Open(“C:\Users\navic\Desktop\test(2.xlsx))
设置rng=wbMaster.Sheets(“主项目列表”)。范围(“A1:D1”)
myPath=“C:\Users\navic\Desktop\test\”注意,末尾有一个反斜杠
file=Dir(myPath&“*.xlsx*”)
While(文件“”)
设置wb=Workbooks.Open(myPath&file)
收到
带wb.工作表(“主项目清单”).范围(“A1”)
.Paste特殊XLPaste柱宽
.Paste特殊xlPasteAll
以
wb.Close SaveChanges:=真
设置wb=Nothing
file=Dir
温德
Application.CutCopyMode=False
端接头

似乎
wb
没有名为“主项目列表”的工作表

如果您不知道目标工作表的名称,那么这将是一个棘手的问题,除非(例如)它始终是您想要的第一个工作表,在这种情况下,您可以使用:

With wb.Worksheets(1).Range("A1")

提到哪一行出错总是很有帮助的…wb.Worksheets(“MasterProjectlist”).Range(“A1”)中的这一行出错问题是标记文件将具有不同的工作表名称。似乎
wb
没有名为“Master Project list”的工作表?如果您不知道目标工作表的名称,那么这将是一个棘手的问题,除非(例如)它始终是您想要的第一个工作表,在这种情况下,您可以使用wb.Worksheets(1.Range(“A1”)OMG!!!!它起作用了!!非常感谢你。。。你让我开心!!!把我的评论作为回答。