簡體   English   中英

通過vb檢查路徑文件夾

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM