web-dev-qa-db-ja.com

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

参照する必要があるものはありますか?これの使用方法:

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

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

Excel内で、VBスクリプトランタイムライブラリへの参照を設定する必要があります。関連ファイルは通常、\Windows\System32\scrrun.dllにあります

  • このファイルを参照するには、Visual Basic Editor(ALT+F11
  • ドロップダウンメニューから[ツール]> [参照設定]を選択します。
  • 利用可能な参照のリストボックスが表示されます
  • Microsoft Scripting Runtime」の横にあるチェックボックスをオンにします
  • scrrun.dllファイルのフルネームとパスがリストボックスの下に表示されます
  • クリックしてください OK ボタン。

VBAオブジェクトモデルへのアクセスが有効になっている場合、これはコードで直接実行することもできます。

File> Options> Trust Center> Trust Center Settings> Macro SettingsにあるチェックボックスTrust access to the VBA project object modelにチェックを入れることでアクセスを有効にできます

VBA Macro settings

参照を追加するには:

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
168
Robert Mearns

これらの人は、ファイルシステムオブジェクトの使用方法の優れた例を持っています 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
%> 
12
Gerald Ferreira

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

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

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

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

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

お役に立てば幸いです!

宜しくお願いします

ファビオ

1
FIRE FOX

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

Dim fso As New Scripting.FileSystemObject
1
thedanotto