• ベストアンサー

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