【发布时间】:2013-12-16 01:45:05
【问题描述】:
我正在使用 VbScript 将文件夹中所有文件的所有工作表复制到单个工作簿中并保存。
我有 4 个工作簿。每个包含 1 个工作表。
工作表 1 = 1 MB,工作表 2 = 19 MB,工作表 3 = 48 MB,工作表 4 = 3 MB
工作表已正确复制到除工作表 3 之外的所有工作表中。
在工作表 3 中,仅复制了 1/2 的数据。背后的问题是什么?
请在下面找到代码。提前谢谢。
'~~> Change Paths as applicable
Dim objExcel, objWorkbook, Temp, wbSrc
Dim objShell, fol, strFileName, strDirectory, extension, Filename
Dim objFSO, objFolder, objFile
strFileName = "C:\Users\ARUN\Desktop\LD.xlsx"
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
extension = "xlsx"
strDirectory = InputBox("Enter the Folder Path:","Folder Path")
'strDirectory = "C:\Users\ARUN\Desktop\Excel Merger Project"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strDirectory)
'For loop to count the number of files starts
For Each objFile In objFolder.Files
if LCase((objFSO.GetExtensionName(objFile))) = LCase(extension) then
counter = counter + 1
'Get the file name
FileName = objFile.Name
'Temp = msgbox(FileName,0,"File Name" )
end if
Next
'For loop to count the number of files ends
Temp = "There are " & counter & " '. " & extension & "' files in the " & strDirectory & " folder path."
Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.Popup Temp,2,"Files Count"
For Each objFile In objFolder.Files
If LCase((objFSO.GetExtensionName(objFile))) = LCase(extension) Then
Filename = objFile.Name
Filename = strDirectory & "\" & Filename
Set wbSrc = objExcel.Workbooks.Open(Filename)
wbSrc.Sheets(1).Copy objWorkbook.Sheets(objWorkbook.Sheets.Count)
wbSrc.Close
End If
Next
objWorkbook.sheets("Sheet1").Delete
objWorkbook.sheets("Sheet2").Delete
objWorkbook.sheets("Sheet3").Delete
'~~> Close and Cleanup
objWorkbook.SaveAs (strFileName)
objWorkbook.Close
objExcel.Quit
objShell.Popup "All The Files Are Merged!!!",2,"Success"
Set fol = objFSO.GetFolder(strDirectory)
FolderName = InputBox("Enter the Folder Path:","Folder Path")
FolderNameMove = FolderName & "\"
objFSO.CopyFile strFileName, FolderNameMove
【问题讨论】:
-
复制的数据量是否始终相同?你有什么错误吗?
-
我的意思是行数。
-
检查您的 Excel 设置 - 您的默认工作簿是否仍设置为
.xls格式,即 2003?在这种情况下,Workbooks.Add可能会创建一个限制为 65k 行的 2003 工作簿,这可能小于 2007 格式的第三个 40MB 文件... -
每个人都给出了一些非常好的建议。我有个问题。
In worksheet 3, only 1/2 of the data is copied.Half到底是什么意思@ 你实际上是指一半还是假设。我还看到您正在删除sheet1,2,3请注意,如果您在 excel 中为新工作簿的默认设置不是 3 张,则该代码将失败。有一种不同的方法可以摆脱这些床单。 -
如果你使用
WAY 2会发生什么LINK 中提到的你可以复制吗?
标签: excel vbscript scripting vba