2009-07-17 3 views
19

VBScriptを使用してテキストファイルに文字列を読み書きするにはどうすればよいですか?私は以下のコードを使用するとき、私はとてもすでに存在しているテキストファイルを持っている意味: -VBScriptを使用してファイルに読み書きする

Set fso = CreateObject("Scripting.FileSystemObject")    
Set file = fso.OpenTextFile("C:\New\maddy.txt",1,1) 

これは読み取り専用でファイルを開きますが、私はこのコードを使用するとき、私は何も を書き込むことができませんし、: -

Set fso = CreateObject("Scripting.FileSystemObject")    
Set file = fso.OpenTextFile("C:\New\maddy.txt",2,1) 

私はこのファイルを書き込みに使用できますが、何も読み取ることはできません。ちょうどOpenTextFileメソッドを呼び出すだけで、読み書きのためにファイルを開くことができますか?

私はVBScriptが本当に新しいです。私はC概念に精通しています。 VBScriptを使い始めるためのリンクはありますか?

私はオブジェクトとプロパティの概念についてよく知っておく必要があると思います。

答えて

4

読んで(1)、書き込み(2)、または追加する(8)にはopenTextFileしか使用できません。参照here。あなたはVBScriptののusing VB6 insteadた場合

、あなたが行うことができます:

Open "Filename" [For Mode] [AccessRestriction] [LockType] As #FileNumber 

Randomモードを使用します。たとえば:

Open "C:\New\maddy.txt" For Random As #1 
+0

ため

For i = 1 to 10 createFile(i) Next Public Sub createFile(a) Dim fso,MyFile filePath = "C:\file_name" & a & ".txt" Set fso = CreateObject("Scripting.FileSystemObject") Set MyFile = fso.CreateTextFile(filePath) MyFile.WriteLine("This is a separate file") MyFile.close End Sub 

そして、これを作成するためにこれは私がvbscripting.Iに本当に新しいですが、私のCの概念をちょうどよく知って。誰も私のvbscriptingを実際に始めるためのリンクを私に提案してもらえますか?私はオブジェクトとプロパティの概念についての良い知識を持つ必要があると思います..任意の提案?? –

+0

ここにW3Schoolsからの素敵なチュートリアルがあります:http://www.w3schools.com/Vbscript/vbscript_intro.asp –

+0

pianoman、ありがとうございました。私はすでにリンクを通過しており、基本的な操作をabtに伝えています。オブジェクト、クラスの使用法のようにもう少し深く入りましょう。私はこれらの用語のように本当に新しいです。 –

20

あなたは、元のファイルに戻す名前を変更し、一時ファイルを作成することができます。

Set objFS = CreateObject("Scripting.FileSystemObject") 
strFile = "c:\test\file.txt" 
strTemp = "c:\test\temp.txt" 
Set objFile = objFS.GetFile(strFile) 
Set objOutFile = objFS.CreateTextFile(strTemp,True) 
Set ts = objFile.OpenAsTextStream(1,-2) 
Do Until ts.AtEndOfStream 
    strLine = ts.ReadLine 
    ' do something with strLine 
    objOutFile.Write(strLine) 
Loop 
objOutFile.Close 
ts.Close 
objFS.DeleteFile(strFile) 
objFS.MoveFile strTemp,strFile 

使用法は、OpenTextFileを使用して、ほぼ同じである:

あなたは開くことができ
Set objFS = CreateObject("Scripting.FileSystemObject") 
strFile = "c:\test\file.txt" 
strTemp = "c:\test\temp.txt" 
Set objFile = objFS.OpenTextFile(strFile) 
Set objOutFile = objFS.CreateTextFile(strTemp,True)  
Do Until objFile.AtEndOfStream 
    strLine = objFile.ReadLine 
    ' do something with strLine 
    objOutFile.Write(strLine & "kndfffffff") 
Loop 
objOutFile.Close 
objFile.Close 
objFS.DeleteFile(strFile) 
objFS.MoveFile strTemp,strFile 
6

2つのテキストストリーム、1つは読み取り用です

Set filestreamIn = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt,1) 

Set filestreamOUT = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt,8,true) 

を付加するためのfilestreamINは、ファイルの初めから読み取ることができ、そしてfilestreamOUTはファイルの末尾に書き込むことができます。

1

あなたはまた、ファイル全体を読み込み、配列

Set filestreamIN = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt",1) 
file = Split(filestreamIN.ReadAll(), vbCrLf) 
filestreamIN.Close() 
Set filestreamIN = Nothing 

あなたが選択した任意の方法で配列を操作して、それを保存し、再びファイルに配列を書くことができます。

Set filestreamOUT = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt",2,true) 

for i = LBound(file) to UBound(file) 
    filestreamOUT.WriteLine(file(i)) 
Next 

filestreamOUT.Close() 
Set filestreamOUT = Nothing 
+0

というのは、ファイルサイズがあまり大きくない場合、その1つです。 – ghostdog74

+0

ほぼ1つのライナー、すなわち、 "file = Split(CreateObject(...)、OpenTextFile(...、1)、ReadAll()、vbCrLf)"になる可能性があります:) –

11

FileSystemObjectオブジェクトの詳細については、http://msdn.microsoft.com/en-us/library/aa242706(v=vs.60).aspxを参照してください。良いVBScriptのために、私はお勧め:変数にタイプミスを検出するのに役立つ明示

  • オプション。そのことはよく知られている定数は、名前に

を与えられているreadilbityを改善し、

  • のConstを再利用するサブ
  • 機能ここでは、テキストファイルにテキストを読み書きするいくつかのコードです:

    Option Explicit 
    
    Const fsoForReading = 1 
    Const fsoForWriting = 2 
    
    Function LoadStringFromFile(filename) 
        Dim fso, f 
        Set fso = CreateObject("Scripting.FileSystemObject") 
        Set f = fso.OpenTextFile(filename, fsoForReading) 
        LoadStringFromFile = f.ReadAll 
        f.Close 
    End Function 
    
    Sub SaveStringToFile(filename, text) 
        Dim fso, f 
        Set fso = CreateObject("Scripting.FileSystemObject") 
        Set f = fso.OpenTextFile(filename, fsoForWriting) 
        f.Write text 
        f.Close 
    End Sub 
    
    SaveStringToFile "f.txt", "Hello World" & vbCrLf 
    MsgBox LoadStringFromFile("f.txt") 
    
  • +1

    どちらの関数も "f.Close "メソッドを使用して、ファイルを開いたままにします。 – Rich

    +0

    '.ReadAll'は他のメソッドではできないファイルサイズの制限を持っているようです。または、少なくとも私のスクリプトが1GBを超えるファイルにクラッシュする... –

    1

    何をしようとしているにもかかわらず、同時にファイルに読み書きする必要はありません。また、常に避けなければならないより多くのメモリを使用します。私は、.ReadAllメソッドを使用してファイル全体を読むことをお勧めし、それを閉じて、あなたがデータを使ってやる必要があるものを(あなたが変数に内容を読み込むと仮定して)行い、そして同じファイルへの書き込みを行い、ファイルを上書きする。現在のファイルを上書きするときに何かが間違っているのであれば、それを別のファイルに書き込もうとすると、元のファイルを上書きしようとする前にエラーがスローされます。

    2

    Excelシートに入れておくと、他のものに必要な情報がExcelシートに保存されていれば、簡単に読み書きできるのでもっとうれしいです

    'this gives you an excel app 
    oExcel = CreateObject("Excel.Application") 
    
    'this opens a work book of your choice, just set "Target" to a filepath 
    oBook = oExcel.Workbooks.Open(Target) 
    
    'how to read 
    set readVar = oExcel.Cell(1,1).value 
    'how to write 
    oExcel.Cell(1,2).value = writeVar 
    
    'Saves & Closes Book then ends excel 
    oBook.Save 
    oBook.Close 
    oExcel.Quit 
    

    申し訳ありませんと、この答えは答えを書いて、初めて役に立つイマイチとすぐ下

    0

    はこの実行するためにいくつかの簡単なコードで、これはあなたのためのよりよい方法かもしれないと思った場合:

    sLocation = "D:\Excel-Fso.xls" 
    sTxtLocation = "D:\Excel-Fso.txt" 
    Set ObjExl = CreateObject("Excel.Application") 
    Set ObjWrkBk = ObjExl.Workbooks.Open(sLocation) 
    Set ObjWrkSht = ObjWrkBk.workSheets("Sheet1") 
    ObjExl.Visible = True 
    Set FSO = CreateObject("Scripting.FileSystemObject") 
    Set FSOFile = FSO.CreateTextFile (sTxtLocation) 
    sRowCnt = ObjWrkSht.usedRange.Rows.Count 
    sColCnt = ObjWrkSht.usedRange.Columns.Count 
    For iLoop = 1 to sRowCnt 
        For jLoop = 1 to sColCnt 
        FSOFile.Write(ObjExl.Cells(iLoop,jLoop).value) & vbtab 
        Next 
    Next 
    
    Set ObjWrkBk = Nothing 
    Set ObjWrkSht = Nothing 
    Set ObjExl = Nothing 
    Set FSO = Nothing 
    Set FSOFile = Nothing 
    
    +0

    ようこそ!別のサイトの自分のコンテンツにリンクすることに注意してください。あなたは[スパマー](http://stackoverflow.com/help/promotion)になりたくありません。あなたはここに大部分のコンテンツを含めるべきであり、そのリンクは参考としてのみ使用してください。 – NathanOliver

    0

    テキストファイル、テキストファイルを読み込む

    Dim fso 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set dict = CreateObject("Scripting.Dictionary") 
    Set file = fso.OpenTextFile ("test.txt", 1) 
    row = 0 
    Do Until file.AtEndOfStream 
        line = file.Readline 
        dict.Add row, line 
        row = row + 1 
    Loop 
    
    file.Close 
    
    For Each line in dict.Items 
        WScript.Echo line 
        WScript.Sleep 1000 
    Next 
    
    関連する問題