Bagaimana cara menggunakan FileSystemObject di VBA?

112

Apakah ada sesuatu yang perlu saya rujuk? Bagaimana saya menggunakan ini:

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

Saya mendapatkan pesan kesalahan karena tidak mengenali objek ini.

l --''''''--------- '' '' '' '' '' ''
sumber

Jawaban:

178

Dalam Excel Anda perlu mengatur referensi ke pustaka run-time skrip VB. File yang relevan biasanya terletak di\Windows\System32\scrrun.dll

  • Untuk referensi file ini, muat Editor Visual Basic ( ALT+ F11)
  • Pilih Alat> Referensi dari menu drop-down
  • Kotak daftar referensi yang tersedia akan ditampilkan
  • Centang kotak di sebelah ' Microsoft Scripting Runtime'
  • Nama lengkap dan jalur scrrun.dllfile akan ditampilkan di bawah kotak daftar
  • Klik pada OKtombol tersebut.

Ini juga dapat dilakukan secara langsung dalam kode jika akses ke model objek VBA telah diaktifkan.

Akses dapat diaktifkan dengan mencentang kotak yang Trust access to the VBA project object modelditemukan di File> Opsi> Pusat Kepercayaan> Pengaturan Pusat Kepercayaan> Pengaturan Makro

Pengaturan Makro VBA

Untuk menambahkan referensi:

Sub Add_Reference()

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

End Sub

Untuk menghapus referensi:

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
Robert Mearns
sumber
Apa yang Anda lakukan di Mac?
Thomas Fankhauser
Apakah tidak ada cara untuk melakukan ini melalui baris perintah, seperti termasuk perpustakaan atau sesuatu?
LuizAngioletti
Apakah ada cara untuk AUTO mencentang kotak 'Microsoft Scripting Runtime'? untuk SEMUA file Excel? Saya menggunakan Excel 2016
compski
Lihat jawaban yang diterima untuk pertanyaan ini. stackoverflow.com/questions/9879825/…
Robert Mearns
13

Di excel 2013 string pembuatan objek adalah:

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

alih-alih kode pada jawaban di atas:

Dim fs,fname
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Stefano Spinucci
sumber
untuk menjadi sedikit lebih eksplisit, saya biasanya melihatnya sebagaiDim fso As Object
Marcucciboy2
12

Orang-orang ini memiliki contoh yang sangat baik tentang bagaimana menggunakan objek sistem berkas 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
%> 
Gerald Ferreira
sumber
3
Potongan kode ini menunjukkan penggunaan FSO di ASP / IIS tidak unggul
Spangen
2

Setelah menambahkan referensi, saya harus menggunakan

Dim fso As New Scripting.FileSystemObject
thedanotto
sumber
2

Setelah mengimpor runtime skrip seperti yang dijelaskan di atas, Anda harus membuat sedikit modifikasi agar dapat berfungsi di Excel 2010 (versi saya). Ke dalam kode berikut saya juga menambahkan kode yang digunakan untuk pengguna untuk memilih file.

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

Semoga membantu!

salam Hormat

Fabio

FIRE FOX
sumber