मैं VBA में FileSystemObject का उपयोग कैसे करूँ?


112

क्या कुछ ऐसा है जिसे मुझे संदर्भित करना है? मैं इसका प्रयोग कैसे करूं:

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

मुझे एक त्रुटि मिल रही है क्योंकि यह इन वस्तुओं को नहीं पहचानती है।

जवाबों:


178

एक्सेल के भीतर आपको वीबी स्क्रिप्ट रन-टाइम लाइब्रेरी के लिए एक संदर्भ सेट करना होगा। प्रासंगिक फ़ाइल आमतौर पर पर स्थित है\Windows\System32\scrrun.dll

  • इस फ़ाइल को संदर्भित करने के लिए, Visual Basic Editor ( ALT+ F11) लोड करें
  • ड्रॉप-डाउन मेनू से उपकरण> संदर्भ चुनें
  • उपलब्ध संदर्भों की एक सूची प्रदर्शित की जाएगी
  • ' Microsoft Scripting Runtime' के बगल में स्थित चेक बॉक्स पर टिक करें
  • scrrun.dllफ़ाइल का पूरा नाम और पथ सूची बॉक्स के नीचे प्रदर्शित किया जाएगा
  • OKबटन पर क्लिक करें।

यह सीधे कोड में भी किया जा सकता है यदि VBA ऑब्जेक्ट मॉडल तक पहुंच सक्षम की गई है।

फ़ाइल> विकल्प> ट्रस्ट सेंटर> ट्रस्ट सेंटर सेटिंग्स> मैक्रो सेटिंग्सTrust access to the VBA project object model पर पाए गए चेक-बॉक्स पर टिक करके पहुंच को सक्षम किया जा सकता है

VBA मैक्रो सेटिंग्स

एक संदर्भ जोड़ने के लिए:

Sub Add_Reference()

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

End Sub

एक संदर्भ हटाने के लिए:

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

आप एक मैक पर क्या करते हैं?
थॉमस फनकौसर

क्या कमांड लाइन के माध्यम से ऐसा करने का कोई तरीका नहीं है, जैसा कि एक पुस्तकालय या कुछ भी शामिल है?
लुइज़ैंग्लाइटी

वहाँ चेक-बॉक्स 'Microsoft स्क्रिप्टिंग रनटाइम' को ऑटो करने का एक तरीका है? सभी एक्सेल फ़ाइलों के लिए? मैं एक्सेल 2016 का उपयोग कर रहा हूं
compski

इस प्रश्न के स्वीकृत उत्तर पर एक नजर डालें। stackoverflow.com/questions/9879825/…
रॉबर्ट मर्न्स

13

एक्सेल 2013 में ऑब्जेक्ट क्रिएशन स्ट्रिंग है:

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

उपरोक्त उत्तर में कोड के बजाय:

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

थोड़ा और स्पष्ट होने के लिए, मैं इसे सामान्य रूप से देखता हूंDim fso As Object
Marcucciboy2

11

इन लोगों के पास उत्कृष्ट उदाहरण हैं कि वे फ़ाइल सिस्टम ऑब्जेक्ट का उपयोग कैसे करें 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
%> 

4
यह कोड स्निपेट एएसपी / आईआईएस में एफएसओ के उपयोग को प्रदर्शित नहीं करता है
स्पैजेन

2

संदर्भ जोड़ने के बाद, मुझे उपयोग करना था

Dim fso As New Scripting.FileSystemObject

2

स्क्रिप्टिंग रनटाइम आयात करने के बाद जैसा कि ऊपर वर्णित है, आपको इसे एक्सेल 2010 (मेरा संस्करण) में काम करने के लिए कुछ मामूली संशोधन करना होगा। निम्नलिखित कोड में मैंने फ़ाइल को चुनने के लिए उपयोग किए गए कोड को भी जोड़ दिया है।

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

आशा है कि यह मदद करेगा!

सादर

फैबियो

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.