FileSystemObject'i VBA'da nasıl kullanırım?


Yanıtlar:


178

Excel içinde, VB komut dosyası çalışma zamanı kitaplığına bir başvuru ayarlamanız gerekir. İlgili dosya genellikle şu adreste bulunur:\Windows\System32\scrrun.dll

  • Bu dosyaya başvurmak için, Visual Basic Düzenleyicisi'ni yükleyin ( ALT+ F11)
  • Açılır menüden Araçlar> Referanslar'ı seçin
  • Mevcut referansların bir liste kutusu görüntülenecektir
  • ' Microsoft Scripting Runtime' Yanındaki onay kutusunu işaretleyin
  • scrrun.dllDosyanın tam adı ve yolu liste kutusunun altında görüntülenecektir.
  • Tıklayın OKdüğmesi.

VBA nesne modeline erişim etkinleştirildiyse, bu doğrudan kodda da yapılabilir.

Dosya> Seçenekler> Güven Merkezi> Güven Merkezi Ayarları> Makro Ayarları'ndaTrust access to the VBA project object model bulunan onay kutusu işaretlenerek erişim etkinleştirilebilir.

VBA Makro ayarları

Bir referans eklemek için:

Sub Add_Reference()

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

End Sub

Bir referansı kaldırmak için:

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

Mac'te ne yaparsınız?
Thomas Fankhauser

Bunu komut satırı aracılığıyla yapmanın bir kitaplık veya başka bir şey eklemek gibi bir yolu yok mu?
LuizAngioletti

AUTO onay kutusunu 'Microsoft Scripting Runtime' işaretlemenin bir yolu var mı? TÜM Excel dosyaları için? Excel 2016 kullanıyorum
compski

Bu sorunun kabul edilen cevabına bir göz atın. stackoverflow.com/questions/9879825/…
Robert Mearns

14

Excel 2013'te nesne oluşturma dizesi şöyledir:

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

yukarıdaki yanıttaki kod yerine:

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

biraz daha açık olmak Dim fso As Object
gerekirse

12

Bu adamların http://www.w3schools.com/asp/asp_ref_filesystem.asp dosya sistemi nesnesinin nasıl kullanılacağına dair mükemmel örnekleri var

<%
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
%> 

4
Bu kod parçacığı, FSO'nun ASP / IIS'de mükemmel olmadığını gösterir
Spangen

2

Referansı ekledikten sonra kullanmak zorunda kaldım

Dim fso As New Scripting.FileSystemObject

2

Komut dosyası çalışma zamanını yukarıda açıklandığı gibi içe aktardıktan sonra, Excel 2010'da (benim sürümüm) çalışmasını sağlamak için küçük değişiklikler yapmanız gerekir. Aşağıdaki koda, kullanıcıya bir dosya seçmek için kullanılan kodu da ekledim.

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

Umarım yardımcı olur!

Saygılarımla

Fabio

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.