我正在开发一个excel项目,需要从网络上的文件导入数据。 我面临的问题如下:
我有一个文件夹(在共享驱动器中),其中子文件夹和最终子文件夹中的excel文件很少。 excel文件有许多选项卡,我必须从其中仅从一个特定选项卡(例如摘要)导入数据。必须对所有子文件夹中的所有文件重复此过程。 以下是描述的流程图。
文件夹A - >子文件夹1 - >子文件夹2 - > {Excel file1,Excel file2}
现在,我要找的是,每当我在子文件夹2中添加一个新的excel文件时,excel文件的相同选项卡(摘要)中的数据(所有excel文件都有相同的选项卡和不同的数据) )应该导入我的目标excel文件并制作数据图表。我需要一个VB脚本来运行此功能。
另外,如果我有更多的子文件夹,那么VB需要更长的时间才能运行吗?
我尝试了以下但似乎不起作用:
Sub ConFiles()
Dim Wbname As String
Dim Wb As Workbook
Dim ws As Worksheet
Dim ws1 As Worksheet
Dim lngCalc As Long
Dim lngrow As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
lngCalc = .CalculationState
.Calculation = xlCalculationManual
End With
Set ws1 = ThisWorkbook.Sheets.Add
'change folder path here
FolderName = "C:\temp"
Wbname = Dir(FolderName & "\" & "*.xls*")
'ThisWorkbook.Sheets(1).UsedRange.ClearContents
Do While Len(Wbname) > 0
Set Wb = Workbooks.Open(FolderName & "\" & Wbname)
Set ws = Nothing
On Error Resume Next
'change sheet name here
Set ws = Wb.Sheets("loging form")
On Error GoTo 0
If Not ws Is Nothing Then
lngrow = lngrow + 1
ws.Rows(2).Copy ws1.Cells(lngrow, "A")
End If
Wb.Close False
Wbname = Dir
Loop
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = lngCalc
End With
End Sub
答案 0 :(得分:0)
zip(numbers,in_range(numbers)) # Generator
list(zip(numbers,in_range(numbers))) # List of (value,in_range) tuples
上面的代码是如何获取所有excel文件。接下来是...打开工作簿并阅读每个工作表。要按文件读取文件,可以使用 Function GetExcelFiles(ByVal strFilePath As String) As String()
Dim arrStr As String() = Nothing
If Directory.Exists(strFilePath) Then
arrStr = GetFilePath(strFilePath)
Else
'error message here
End If
Return arrStr
End Function
Private Function GetFilePath(ByVal strFilePath As String) As String()
Dim arrFileNames As String() = Directory.GetFiles(strFilePath, "*.xls", SearchOption.AllDirectories)
Return arrFileNames
End Function
循环。
For Each
其中For Each strFileName In arrStr
'your code here
Next
别忘了添加strFileName = GetExcelFiles(folderPath)
那么
Imports Microsoft.Office.Interop.Excel
现在你有了工作簿。要读取每个工作表,请按照这种方式执行,并将其放在一个返回布尔值的函数中。
Dim excel As New Application
Dim workbook As Workbook = excel.Workbooks.Open(strFileName)
现在您可以继续进行处理了。