VBAでFileSystemObjectを使用するにはどうすればよいですか?


112

参照する必要があるものはありますか?これをどのように使用しますか:

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

これらのオブジェクトを認識しないため、エラーが発生します。

回答:


178

Excel内で、VBスクリプトランタイムライブラリへの参照を設定する必要があります。関連ファイルは通常次の場所にあります\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

Macで何をしますか?
Thomas Fankhauser 2013

ライブラリなどを含める場合のように、コマンドラインからこれを行う方法はありませんか?
LuizAngioletti

「Microsoft Scripting Runtime」チェックボックスを自動的にチェックする方法はありますか?すべてのExcelファイルの場合?私はExcel 2016を使用しています
compski 2017

この質問に対する受け入れられた回答を見てください。stackoverflow.com/questions/9879825/...
ロバートMearns

13

Excel 2013では、オブジェクト作成文字列は次のとおりです。

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

上記の答えのコードの代わりに:

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

もう少し明確にするために、私は通常次のように見ていますDim fso As Object
Marcucciboy2

12

これらの人たちは、ファイルシステムオブジェクト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
このコードスニペットは、ExcelではなくASP / IISでのFSOの使用を示しています
Spangen

2

参照を追加した後、私は使用する必要がありました

Dim fso As New Scripting.FileSystemObject

2

上記のようにスクリプトランタイムをインポートした後、Excel 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

お役に立てば幸いです。

宜しくお願いします

ファビオ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.