【发布时间】:2022-01-25 21:08:56
【问题描述】:
我编写了下一个代码,将某个工作表从我的活动工作簿复制到多个工作簿,但它不断复制副本,这是我的第一个问题, 下一个我希望该代码影响其中的文件夹和子文件夹如何做到这一点。 代码是:
Option Explicit
Public Sub CopySheetToAllWorkbooksInFolder()
Dim sourceWorkbook As Workbook
Dim sourceSheet As Worksheet
Dim destinationWorkbook As Workbook
Dim folder As String, filename As String
'Worksheet in active workbook to be copied as a new sheet to the destination workbook
Set sourceWorkbook = ActiveWorkbook
Set sourceSheet = sourceWorkbook.Worksheets("pay")
'Folder containing the destination workbooks
folder = "J:\2021\hager\test\"
filename = Dir(folder & "*.xlsx", vbNormal)
While Len(filename) <> 0
Debug.Print folder & filename
Set destinationWorkbook = Workbooks.Open(folder & filename)
sourceSheet.Copy after:=destinationWorkbook.Sheets(1)
destinationWorkbook.ChangeLink Name:=sourceWorkbook.Name, NewName:=destinationWorkbook.Name
destinationWorkbook.Close True
filename = Dir() ' Get next matching file
Wend
End Sub
因为付款是工作表,文件夹是我的目标文件夹。
【问题讨论】:
-
请更好地阐明“它不断复制副本”的含义。然后,您的活动代码将更新已定义文件夹中的工作簿,但不会更新其子文件夹中的工作簿。
-
我的意思是它不断复制我想复制的工作表,比如在目标工作簿 pay1、pay2、pay3 等中复制很多;我问有没有办法让它影响工作簿在子文件夹中也是如此。
-
我可以向您展示如何从文件夹和子文件夹中更新所有工作簿(一种非常快速的方法),但看起来您的安装有问题。如果您使用
sourceSheet.Copy之后没有任何参数,Excel 将创建一个仅包含复制工作表的新工作簿。但是如果你使用sourceSheet.Copy after:=destinationWorkbook.Sheets(1),它不应该以这种方式表现......让我指出方法描述。请看here。您使用什么 Excel/Office 版本? -
office 2016 和上面的代码一样,我已经在使用 sourceSheet.Copy after:=destinationWorkbook.Sheets(1) 但我不知道为什么它会不断重复工作表,有时它可能超过 10 张相同的工作簿
-
请更好地澄清这个问题...是否有超过 10 个仅包含复制工作表的工作簿,或仅包含复制工作表?如果是最后一个变体,那些工作表在哪里?