[英]Check path folder by vb
我正在嘗試獲取文件夾路徑,然后在此文件夾中循環 Excel 工作表
Imports Excel= Microsoft.Office.Interop.Excel
Public Sub Combine()
Dim objApp As Excel.Application
Dim objBook As Excel.Workbook
Dim objSheet As Excel.Worksheet
Dim myrange As Excel.Range
Dim folderPath As String
Dim fileName As String
folderPath = @"FolderPath"
fileName = Dir(folderPath & "*.xls")
Do While (fileName <> "")
objBook = objApp.Workbooks.Open(Filename:=Txt_GetPath.Text & fileName = True)
objBook.Activate()
For Each objSheet In objBook.Sheets
objSheet.Copy(After:=objBook.Sheets(1))
Next objSheet
objBook.Close()
Loop
End Sub
但在objBook =objApp.Workbooks.open(...)
我得到一個錯誤
路徑必須是完整的
代碼有什么問題?
要處理目錄中的所有文件,您可以使用Directory.EnumerateFiles函數。
在代碼使用完畢后處理 Excel 應用程序並不完全簡單,因此我從使用 VB.NET 處理 Excel com 對象的正確方法中為您添加了一些內容? .
我不知道您在打開工作簿的命令中使用= True
目的是什么,所以我把它省略了。
Option Strict On
Imports System.IO
Imports Excel = Microsoft.Office.Interop.Excel
Public Sub DoCombine()
Dim objApp As New Excel.Application
Dim objBook As Excel.Workbook
Dim objSheet As Excel.Worksheet
Dim folderPath As String = Txt_GetPath.Text
For Each excelFile In Directory.EnumerateFiles(folderPath, "*.xls")
objBook = objApp.Workbooks.Open(Filename:=excelFile)
objBook.Activate()
For Each objSheet In objBook.Sheets
objSheet.Copy(After:=objBook.Sheets(1))
Next objSheet
objBook.Close()
Next
objApp.Quit()
End Sub
Public Sub Combine()
' Call the method to do the actual work
DoCombine()
' Now Let the GC clean up (twice, to clean up cycles too)
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
End Sub
使用Combine()
方法——它會調用你在DoCombine()
方法中使用的代碼,並確保計算機上沒有大量的Excel 副本在運行——你會在任務管理器中看到它們,即使它們沒有屏幕上。
使用Option Strict On
(幾乎)總是一個好主意,因為它可以讓 Visual Studio 向您展示代碼中的某些內容。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim strFileName As String
Dim xl As New Excel.Application
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet
If FolderBrowserDialog1.ShowDialog = System.Windows.Forms.DialogResult.OK Then
Dim Directory = FolderBrowserDialog1.SelectedPath
Dim Files() As System.IO.FileInfo
Dim DirInfo As New System.IO.DirectoryInfo(Directory)
Files = DirInfo.GetFiles("*", IO.SearchOption.AllDirectories)
For Each File In Files
wb = xl.Workbooks.Open(File.FullName)
For Each ws In wb.Sheets
strFileName = Microsoft.VisualBasic.Left(File.Name,
(InStrRev(File.Name, ".", -1, vbTextCompare) - 1))
If ws.Name = "SCHEDULE" Then
ws.Range("S7", "S50").Value2 = strFileName
End If
Next
wb.Close()
Next
xl.Quit()
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.