• ベストアンサー

VB6.0 CreateObject以外のファイルI/O

以前CreateObject("Scripting.FileSystemObject")を使用してファイルを読込む方法、一行ずつ書込む方法を教えていただいたのですが。 環境によってはウイルスチェックに引っかかってしまうようで、別な手段を取らなければならなくなりました。 読込み: Set objFso = CreateObject("Scripting.FileSystemObject") Set objTxtSt = objFso.OpenTextFile(strFilePass, 1) strData = CStr(objTxtSt.ReadAll()) 書込み: Set objFso = CreateObject("Scripting.FileSystemObject") Set objTxtSt = objFso.OpenTextFile(strFilePass, 2, False) Call objTxtSt.WriteLine(strData) 現在の処理は以上です。 上記と同じ処理をCreateObjectを使用せずに作成するにはどのようにすればよろしいでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

基本的な命令ならまずマニュアルで調べるのが妥当な方法だと思いますよ VB付属のMSDNや Webの http://msdn.microsoft.com/ja-jp/library/default.aspx などで ・・・ ファイルの削除なら『Kill』、存在の確認には『Dir』で出来ると思いますよ

ShimantoGa
質問者

お礼

Kill、Dirとも使用できました有難うございます。 調べ方についてですが。 >VB付属のMSDN 諸事情で参照することができません。 >WebのMSDN 「VB6.0 ファイル作成」「ファイル操作」「ファイル削除」などで検索しても、CreateObjectは見つかるのですがそれ以外の手段を見つけられませんでした。(Kill、Dirも発見できません) MSDNより「Visual Basic 6.0 と Visual Basic .NET とのフォルダやファイルの操作方法の違いについて」 .NET系は割と探しやすいのですが、6.0ですとどうもうまく検索できません。 因みに「VB6.0 Kill」では、質問は出てくるのですが関数の詳細は出てきませんでした。 あとはファイル作成を実現したいのですが、どのように調べればよいでしょうか。

ShimantoGa
質問者

補足

以下の補足です。 Open strPass For Output As #iFile Close #iFile ファイル作成はこの記述になるのでしょうか。 ファイルは作成されるのですが、ファイル作成→書込みと一連の流れを行うときのみ使用するものかと思っていたのですが。 Open strPass For Output As #iFile Print #iFile, strData Close #iFile

その他の回答 (2)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

GoogleやYahooなどの一般検索サイトの方がいいかもしれません 有名所では『VBレスキュー(花ちゃん)』http://hanatyan.sakura.ne.jp/index.html などがあります VB6用の入門書でもいいかもしれません 逆引き辞典 ってのも有効かもしれません 最低限 VB付属のMSDNは手元にあった方が効率いいですよ Open ファイル名 for output as #ff Close #ff で 中身は何もないファイルが生成されます VB6自体のサポートは終了してしまったはずですから Microsoftのサイトから無くなってしまっていても不思議ではないですね Office(ExcelやWord)のVBAのヘルプが使えるならこちらを代用してみるのも手ですが ・・・

ShimantoGa
質問者

お礼

>有名所では『VBレスキュー(花ちゃん)』​ http://hanatyan.sakura.ne.jp/vbhlp/reference.htm お陰さまでVBのリファレンスを発見できました。 Dirやkillもありました。 MkDirのようにフォルダを作成する関数は存在しましたが、ファイルを作成する関数はないようですので Open ファイル名 for output as #ff で良いみたいですね。 >VB6自体のサポートは終了してしまったはずですから どうりで出てこないわけですね。 有難うございました。

回答No.1

> 上記と同じ処理をCreateObjectを使用せずに作成するにはどのようにすればよろしいでしょうか。 VB標準のファイルIOステートメント(Open #, Input #, Print #, Close #等)かWinAPIですね。 ' ファイル全体を読み込む(テキストモード) Dim intFile As Integer Dim strLineInput As String Dim strFilePath As String Dim strFileBuff As String intFile = FreeFile() strFilePath = "C:\hoge.txt" Open strFilePath For Input As #intFile While Not EOF(intFile) Line Input #intFile, strLineInput If strFileBuff <> "" Then strFileBuff = strFileBuff & vbCrLf strFileBuff = strFileBuff & strLineInput Wend Close #intFile Debug.Print strFileBuff ' ファイルに1行を書き加える Dim intFile As Integer Dim strFilePath As String Dim strNewLine As String intFile = FreeFile strFilePath = "C:\hoge.txt" strNewLine = CStr(Now) Open strFilePath For Append As #intFile Print #intFile, strNewLine Close #intFile WinAPIでのコードは省略。

ShimantoGa
質問者

お礼

上記のコードで実装できました、有難うございます。 図々しいですが、追加で質問させてください。 ファイル作成と削除、存在チェックに関してです。 作成: Set objFso = CreateObject("Scripting.FileSystemObject") Set objTxtSt = objFso.CreateTextFile(strpFilePass) 削除: Set objFso = CreateObject("Scripting.FileSystemObject") Call objFso.DeleteFile(strpFilePass, True) 存在チェック: Set objFso = CreateObject("Scripting.FileSystemObject") Exist = objFso.FileExists(strpFilePass) 上記に相当する関数は存在しますでしょうか。

関連するQ&A

  • VB6.0にて、CSVファイルを読み込もうとしているのですが、1行ずつ

    VB6.0にて、CSVファイルを読み込もうとしているのですが、1行ずつ読み込めません。 以下のコードで、Lineのメッセージボックスが表示されないのです。 どなたか教えていただけないでしょうか。よろしくお願いします。 'CSVファイル読み込み Sub Stream() Dim Line, Temp As Variant Dim objFSO As Object Dim objStream As Object Const ForReading = 1, ForWriting = 2, ForAppending = 3 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objStream = objFSO.OpenTextFile(strDFpath & strDFname(1), ForReading, False) Temp = objStream.ReadAll MsgBox Temp '最後の行までループ Do Until objStream.AtEndOfLine - 1 <> True '1行読む Line = objStream.ReadLine MsgBox Line Loop objStream.Close Set objStream = Nothing Set objFSO = Nothing End Sub

  • VB6.0 特定の位置からの書き換え

    VB6.0でCSVを特定の行から削除、書き込みしたいと思っています。 Dim objFso, objTxtSt As Object Set objFso = CreateObject("Scripting.FileSystemObject") Set objTxtSt = objFso.OpenTextFile(strPass, 8, -1) Dim i As Integer For i = 1 To 2 Step 1 objTxtSt.SkipLine Next Call objTxtSt.WriteLine(strpData) objTxtSt.Close Set objTxtSt = Nothing Set objFso = Nothing しかしSkipLineが読込み時専用らしく書き込み時、削除時行を指定する方法がわかりません。 エラーNo.54:「ファイルモードが不正です」 またOpenTextFileの第二、第三引数の意味がわかりません(Read、Writeモードの切り替えかと考えています)ので、教えていただけますでしょうか。

  • OpenTextFile で書き込みできません。

    dim ObjFSO,ObjTS 'オブジェクトを作成します。 Set ObjFSO = Server.CreateObject("Scripting.FileSystemObject") 'ファイルを開きます。 Set ObjTS = ObjFSO.OpenTextFile(filename,1,false) filenameにはC:\Documents and Settings\○○○\デスクトップ\test.csvが入っています。 サーバーのパスにtest.csvを持っていくと問題なく動作しますが、それ以外デスクトップからだと「書き込みできません。」とエラーメッセージができません。 どうしたらいいでしょうか? よろしくお願い致します。

  • VBS ファイルマージ処理

    特定のDir内、複数ファイルのレコードを全てマージする為、 以下の処理を考えておりますが実現に至っておりません。 Fileがなくなるまで、ループ処理をさせる為、File名 の(1)から(2)へFile名の受け渡し方法が解かりません。 何方か有識者の方、ご教授頂けませんでしょうか もっと賢くマージが出来るので有りますならば、その方法 を教えて頂けませんでしょうか ※Dir内にFileはユニークなFile名にて、複数個作られます。 ※マージに必要なFileだけがDirには作られます。 ※マージするFileの順番は問いません。 (1)C:\temp\temp Dir内のFile名を取得 Set objFso = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder("C:\temp\temp") objFile = objFso.GetAbsolutepathname("temp_ini.txt") Set objOut = objFso.OpenTextFile(objFile, 2, False) For Each objFile In objFolder.Files objFilemei = objFile.Name objOut.Writeline objFilemei next ※File名の受け渡しがわからず、一旦Fileに書き出してます (2)Fileが無くなるまで、File内のレコードを全て読込み、マージファイルを作成(予定) objFile1 = objFso.GetAbsolutepathname("temp_temp.txt") Set objin = objFso.OpenTextFile("temp_ini.txt",1) Do Until objin.atendofstream = True linedata = objin.readline() loop 説明が悪くてすみませんが、よろしくお願い致します。

  • VB4でエラーが出ます CreateObject Scripting.FileSystemObject

    VB6で Set fso = CreateObject("Scripting.FileSystemObject") と書いてうまく動いていたbasを VB4のプログラムに移植したところうまく動かないのですが、 どなたか分かりませんでしょうか?

  • VBスクリプト:ファイル名をファイルに書く

    VBスクリプトで以下のようなコードを書いているのですが、上手く動いてくれません。あるディレクトリのファイル名をテキストファイルに書き込むという処理を行いたいのですが。。 配列は、ある順番(ファイル名順)のみ書き込むという処理を付け加えたいため必須です。アドバイスを頂けないでしょうか?宜しくお願い致します。 Set objFS = CreateObject("Scripting.FileSystemObject") Set fl = objFS.GetFolder("D:\") i = 0 For Each objFile In fl.Files str(i) = objFile.Name i = i + 1 Next Set objText = objFS.OpenTextFile("D:\filename.txt") For i = 0 To UBound(fl) objText.WriteLine fl(i) Next objText.Close

  • csvファイルを読み込む方法について

    aspにてscvファイルを読み込む際、直接ファイル名を指定するとうまくいくのですが、ファイル名を変数で指定しようとすると、「ファイルが見つかりません」というエラーになってしまいます。どのように記述すれば良いでしょうか。お教えください。よろしくお願いいたします。 (例) 'OK Set objFS = CreateObject("Scripting.FileSystemObject") Set objText = objFS.OpenTextFile(Server.MapPath("aaa.csv"),1) 'NG fname = "aaa.csv" Set objFS = CreateObject("Scripting.FileSystemObject") Set objText = objFS.OpenTextFile(Server.MapPath(fname),1) また、 Set objText = objFS.OpenTextFile(Server.MapPath("""" & fname & """"),1) としてもダメでした。以上です。

  • CSVファイル

    CSVファイルを1行ずつ比較して読み込み、一致した行を別ファイルに記述していこうと思っています。 現在、csvファイルを読み込む所まで出来ています。 比較して別ファイルに記述する方法を教えて下さい。 もしくはアドバイスください。 【ファイルの中身】 "09/09/2005 0:00:00,aaa,bbb,ccc" 【比較条件】 当日の日付を取得し、年月日だけで比較する Dim objFSO ' FileSystemObject Dim objFile ' ファイル読み込み用 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("c:\test.csv") Do while objFile.ReadLine <> ""         'IF文を記述(条件:日付)        '別ファイルに記述する Loop objFile.close Set objFileSystem = Nothing Set objFile = Nothing

  • ASP内で他のASPファイルを読み込む方法

    ASP内で別ファイル(A.html)を読み込みました。下記の通りです。 <% Set objA = Server.CreateObject("Scripting.FileSystemObject") Set objFile = objA.OpenTextFile("A.html", 1, False) If Err.Number > 0 Then Response.Write "Open Error" Else Do Until objFile.AtEndOfStream Response.Write objFile.ReadAll Loop End If objFile.Close %> 読み込みはできたのですが、問題なのはA.htmlにもASPの処理が書かれてて、その部分がそのままテキストとして表示されたのです。 このように表示されました↓ <% ASP %> 読み込んだ際に、A.htmlに書かれたASP処理も実行させるにはどうすればよいのでしょうか?

  • CreateObjectでエラー

    VB初心者です。 VB6で以下のコードのCreateObjectがエラー になってしまいます。 何が原因と考えられますか? Dim objFileSys As Object CheckFileExist = False 'ファイルの有無を確認する Set objFileSys = CreateObject("Scripting.FileSystemObject")   ↑   ここで、エラーが発生 CheckFileExist = objFileSys.FileExists(S_strFileFull) Set objFileSys = Nothing   エラーメッセージが   「オートメーションエラーです。    ライブラリが登録されてません。」   と出てしまいます。何が原因と考えられますか?   よろしくお願いします。

専門家に質問してみよう