我需要將Excel工作簿的一部分複製到〜3500其他工作簿。由於工作簿的數量,編寫一個宏並在每個宏上運行它並不是很可能。將Excel工作簿的一部分複製/粘貼到其他工作簿而不打開
有沒有辦法編寫一個宏(或任何其他代碼真的),可以複製該作品並將其粘貼到其他工作簿而不打開它們?
我需要將Excel工作簿的一部分複製到〜3500其他工作簿。由於工作簿的數量,編寫一個宏並在每個宏上運行它並不是很可能。將Excel工作簿的一部分複製/粘貼到其他工作簿而不打開
有沒有辦法編寫一個宏(或任何其他代碼真的),可以複製該作品並將其粘貼到其他工作簿而不打開它們?
番茄 不幸的是,正如@Ken White和@ L42指出的那樣,爲了編輯文件,至少在某個級別上,必須打開它(即將其加載到內存中)。更糟糕的是,除非您願意直接操作xml或二進制數據(不建議),否則您將不得不使用Excel爲您打開.xlsx文件,這需要時間。
這當然不意味着你必須手動完成。例如:
Sub DataToOtherWorkbooks()
Dim StrFile As String
Dim SourceRange As Range
Rng = "A1:A2"
Set SourceRange = Range(Rng)
StrFile = Dir("C:\ExcelWorkBooks\*.xlsx")
Do While Len(StrFile) > 0
Debug.Print StrFile
Application.ScreenUpdating = False
Set TargetWb = Workbooks.Open("C:\ExcelWorkBooks\" & StrFile)
TargetWb.Worksheets("Sheet1").Range(Rng).Value(11) = SourceRange.Value(11)
TargetWb.Save
TargetWb.Close SaveChanges:=False
StrFile = Dir
Loop
End Sub
通過在文件夾ExcelWorkBooks所有文件上面的代碼將循環使用的.xlsx擴展,並與位於源工作簿的指定範圍內的數據填充它們。
但是,如前所述,這將需要一些時間。當我在100個工作簿上運行它時(從我的筆記本電腦上),每個工作簿平均花費0.54秒。所以,就你的情況而言,擁有3,500個工作簿,大約需要31分鐘。不是很快的速度,但肯定比手動做更好。希望這對你有用。請詢問你是否還有其他問題。
補充
番茄,響應您的評論,傳輸格式,包括在你的射程細胞的合併或者未合併的性質,需要使用:
TargetWb.Worksheets("Sheet1").Range(Rng).Value(11) = SourceRange.Value(11)
我已經更新了原始代碼以反映更改。這應該照顧你,但讓我知道。
這工作!但是,源工作簿的某些單元格已合併或具有不同的對齊方式。這可以複製到其他人嗎?謝謝 –
@Mystic番茄,我補充了我的回答,以迴應你的評論。如果您有任何問題,請詢問。 –
太棒了。它的工作完美,謝謝你的幫助 –
如果不打開文件,則無法複製/粘貼到文件。常識應該告訴你;如果沒有文件打開,你將如何粘貼**? –
假設您知道要複製哪部分工作簿,並且它完全是同一個地方,可以想象,您可以在不同的程序中打開,複製並保存。當然,您可以編寫一個循環來打開每個工作簿,粘貼所需的代碼,並關閉3500次,或者關閉文件夾中的每個工作簿。 – timthebomb
'是否有辦法編寫一個宏(或者其他任何代碼片段),可以複製該片段並粘貼到其他工作簿而不打開它?「這取決於數據的設置。如果它安排的數據庫像(與字段和行),我認爲這是可能的。總之,是的。 – L42