Làm cách nào để sử dụng FileSystemObject trong VBA?


112

Có điều gì đó mà tôi cần tham khảo? Làm cách nào để sử dụng cái này:

Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream

Tôi gặp lỗi vì nó không nhận ra những đối tượng này.

Câu trả lời:


178

Trong Excel, bạn cần đặt một tham chiếu đến thư viện thời gian chạy tập lệnh VB. Tệp liên quan thường được đặt tại\Windows\System32\scrrun.dll

  • Để tham chiếu tệp này, hãy tải Visual Basic Editor ( ALT+ F11)
  • Chọn Công cụ> Tham chiếu từ menu thả xuống
  • Một hộp danh sách các tài liệu tham khảo có sẵn sẽ được hiển thị
  • Đánh dấu vào hộp kiểm bên cạnh ' Microsoft Scripting Runtime'
  • Tên đầy đủ và đường dẫn của scrrun.dlltệp sẽ được hiển thị bên dưới hộp danh sách
  • Bấm vào OKnút.

Điều này cũng có thể được thực hiện trực tiếp trong mã nếu quyền truy cập vào mô hình đối tượng VBA đã được kích hoạt.

Có thể bật quyền truy cập bằng cách đánh dấu vào hộp kiểm Trust access to the VBA project object modelđược tìm thấy tại Tệp> Tùy chọn> Trung tâm Tin cậy> Cài đặt Trung tâm Tin cậy> Cài đặt Macro

Cài đặt VBA Macro

Để thêm tài liệu tham khảo:

Sub Add_Reference()

    Application.VBE.ActiveVBProject.References.AddFromFile "C:\Windows\System32\scrrun.dll"
'Add a reference

End Sub

Để xóa tham chiếu:

Sub Remove_Reference()

Dim oReference As Object

    Set oReference = Application.VBE.ActiveVBProject.References.Item("Scripting")

    Application.VBE.ActiveVBProject.References.Remove oReference
'Remove a reference

End Sub

Bạn làm gì trên máy Mac?
Thomas Fankhauser

Không có cách nào để làm điều này thông qua dòng lệnh, như bao gồm một thư viện hoặc một cái gì đó?
LuizAngioletti

Có cách nào để TỰ ĐỘNG đánh dấu vào hộp kiểm 'Microsoft Scripting Runtime' không? cho TẤT CẢ các tệp Excel? Tôi đang sử dụng Excel 2016
compski

Hãy xem câu trả lời được chấp nhận cho câu hỏi này. stackoverflow.com/questions/9879825/…
Robert Mearns

13

Trong excel 2013, chuỗi tạo đối tượng là:

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

thay vì mã trong câu trả lời ở trên:

Dim fs,fname
Set fs=Server.CreateObject("Scripting.FileSystemObject")

phải hơi rõ ràng hơn, tôi thường xem nó như làDim fso As Object
Marcucciboy2

12

Những người này có các ví dụ tuyệt vời về cách sử dụng đối tượng hệ thống tệp http://www.w3schools.com/asp/asp_ref_filesystem.asp

<%
dim fs,fname
set fs=Server.CreateObject("Scripting.FileSystemObject")
set fname=fs.CreateTextFile("c:\test.txt",true)
fname.WriteLine("Hello World!")
fname.Close
set fname=nothing
set fs=nothing
%> 

3
Đoạn mã này cho thấy việc sử dụng các FSO trong ASP / IIS không nổi trội
Spangen

2

Sau khi thêm tham chiếu, tôi phải sử dụng

Dim fso As New Scripting.FileSystemObject

2

Sau khi nhập thời gian chạy tập lệnh như được mô tả ở trên, bạn phải thực hiện một số sửa đổi nhỏ để nó hoạt động trong Excel 2010 (phiên bản của tôi). Trong đoạn mã sau, tôi cũng đã thêm mã được sử dụng để người dùng chọn tệp.

Dim intChoice As Integer
Dim strPath As String

' Select one file
Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False

' Show the selection window
intChoice = Application.FileDialog(msoFileDialogOpen).Show

' Get back the user option
If intChoice <> 0 Then
    strPath = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
Else
    Exit Sub
End If

Dim FSO As New Scripting.FileSystemObject
Dim fsoStream As Scripting.TextStream
Dim strLine As String

Set fsoStream = FSO.OpenTextFile(strPath)

Do Until fsoStream.AtEndOfStream = True
    strLine = fsoStream.ReadLine
    ' ... do your work ...
Loop

fsoStream.Close
Set FSO = Nothing

Hy vọng nó sẽ giúp!

Trân trọng

Fabio

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.