这是一些代码,会提示输入一个文件夹被选中,然后循环该文件夹的工作表名称中的所有文件[Worksheetname =“工作表Sheet1”]和[CELL =“K5”]并将单元格K5中的总数相加。
希望这会让你开始。您需要确保所有文件都具有有效的“工作表名称”或插入测试。
Option Explicit
Private Sub ReadFilesinFolder()
'**Opens File Dialog and cycles all files for batch or just single file
Dim objFs As Object, objF As Object, objF1 As Object, objFc As Object
Dim strEndofPath As String, strFilePath As String, strFilename As String
Dim lngCount As Long, Worksheetname As String, CELL As String, objWB As Workbook, objWS As Worksheet
Dim dblTOTAL As Double
Worksheetname = "Sheet1"
CELL = "K5"
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Show
If .SelectedItems.Count = 0 Then
End
End If
For lngCount = 1 To .SelectedItems.Count
strEndofPath = InStrRev(.SelectedItems(lngCount), "\")
strFilePath = Left(.SelectedItems(lngCount), strEndofPath)
strFilename = Right(.SelectedItems(lngCount), Len(.SelectedItems(lngCount)) - strEndofPath)
Next lngCount
End With
Set objFs = CreateObject("Scripting.FileSystemObject")
Set objF = objFs.GetFolder(strFilePath)
'Batch Import
Set objFc = objF.Files
For Each objF1 In objFc
DoEvents
Set objWB = GetObject(objF1)
Set objWS = objWB.Sheets(Worksheetname)
dblTOTAL = dblTOTAL + objWS.Range(CELL).Value
objWB.Close
Set objWB = Nothing
Next objF1
msgbox dblTOTAL
End Sub
文件对话框不让我选择一个目录,它不会让我选择多个文件。当我选择一个单独的.xls文件时,我在这一行上得到了一个运行时错误“类型不匹配”Set objWB = GetObject(objF1)“我还没有添加子程序。在Visual Basic编辑器中,我添加了子例程,然后运行 - >运行子/用户窗体(我按照我在这里找到的说明添加/运行子例程:http://www.ehow.com/how_6186281_use-subroutine-excel- visual-basic.html) – VincentRogers
我不知道什么“或插入一个测试”的含义在您的指示。 .xls文件只有在创建文件时自动执行该操作时才具有“有效的”Worksheetname“”。谢谢。 – VincentRogers
再试一次代码,完成后我忘记关闭每个工作簿。该代码假定所有数据都在名为“Sheet1”的工作表上。将'Sheet1'更改为您需要的值,或者如果工作表名称不一致,则需要添加更多逻辑以确定来自K5的数据所在的工作表名称。 – osknows