VB6でFileSystemObjectでテキストファイルを読み込む実例

このQ&Aのポイント
  • Visual BasicV6でFileSystemObjectを使ってテキストファイルを変数に読み込む方法について教えてください。
  • VB6では、UTF-8コードのテキストファイルを読み込むためにFileSystemObjectを使用することができます。
  • VB6でFileSystemObjectを使ってテキストファイルを変数に読み込む具体的なコード例を教えてください。
回答を見る
  • ベストアンサー

VB6でFileSystemObjectで読込

Visual BasicV6でFileSystemObjectを(もし必要ならTextStream オブジェクトも)使って、テキストファイルを変数に読み込む実例を作っていただけませんでしょうか。 UTF-8コードのテキストファイルを読み込みたいのですが、当方、VB.NETは使えないし、MS社などのFileSystemObjectの使い方についての下記説明を見ても、どこで変数に入っていることが分からないため、お願いいたします。 Dim fso, MyFile Set fso = CreateObject("Scripting.FileSystemObject") Set MyFile = fso.CreateTextFile("c:\testfile.txt", True) MyFile.WriteLine("This is a test.") MyFile.Close Visual BasicV6自体は十分使えますが、FileSystemObjectなどについては全く分かりません。よろしくお願いいたします。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

先ず、参照設定で「Windows Script HostObject Modl」を 選択しておきます。これでFileSystemObjectが使えます。 設定無しでも使用可能ですが、分かり易い。 Dim FSO As FileSystemObject Dim STM As TextStream 後は掲題の通りです。 但し、SHIFT_JISでない文字列を扱おうとするなら、 FileSystemObjectは不適当ですし、標準のOpen, Print等のステートメントに比べると遅いので、VB6で、 わざわざFileSystemObjectを使う理由が分かりません。 SHIFT_JISで出力したものをUTF-8に変換するならば、 ADODB.Streamオブジェクトの方が適しています。 参照設定で「Microsoft ActiveX Data Objects 2.x Library」を 選択します。 Dim JIS As ADODB.Stream Dim UTF As ADODB.Stream Set JIS = CreateObject("ADODB.Stream") JIS.Open JIS.Type = adTypeText JIS.Charset = "SHIFT_JIS" JIS.WriteText "がんばろう日本" JIS.SetEOS JIS.Position = 0 '★ファイルポインタを先頭に戻す Set UTF = CreateObject("ADODB.Stream") UTF.Open UTF.Type = adTypeText UTF.Charset = "UTF-8" JIS.CopyTo UTF UTF.SetEOS UTF.SaveToFile "C:\~", adSaveCreateOverWrite JIS.Close UTF.Close

himana77
質問者

お礼

豊富な実例ありがとうございます。 どこを質問して良いのか分らず、作ってと書いてしましましたが、ありがとうございました。 ADODB.Streamオブジェクトとはまた新しいことでどうなるか分りませんがトライしてみます。

himana77
質問者

補足

質問者からです。 実施してみました。エラーなしで動いています。ところが、何をしているのか理解できません。 申し訳ありませんが、私はどれがShift-JISのテキストファイルで、どれがUTF-8の変数なのか理解できません。 スミマセンが教えていただけませんでしょうか。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

何回も同じ質問をしているようだが、Googleででも、「VB6 UTF-8」ででも照会して勉強しましたか。 すでに回答が出ているやり方も http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200501/05010078.txt などに出ている。 http://homepage2.nifty.com/nonnon/SoftSample/SampleModADOS.html など多数。 Googleででも「FSO UTF-8」でもッ照会してみたら良い。 >読み込む実例を作っていただけませんでしょうか 質問でなく、依頼じゃないですか。

himana77
質問者

お礼

お目を煩わせて申し訳ありません。また、何度も同じ質問をしまして失礼しました。良いものをご紹介いただきありがとうございました。 何を質問したらいいのかわからず、作ってほしいと書いてしまいました。 何とかやれそうです。

関連するQ&A

  • VB6でUTF-8ファイルの読取りを

    VB6で、日本語と簡体文字の混在するUTF-8コードのファイル "c:\testfile.txt" を読み取って変数に入れて、取り扱える実例を作っていただけませんでしょうか? VB6では、FileSystemObjectなどを使うようですが、さっぱり使い方が分りません。私は昔、コボルやフォートランをかじったことがあり、VBの基礎は使えるのですが、FileSystemObjectなどはどうも分りません。Visual Basic.NETを使えばUTF-8も簡単に使えるようですが、難しくて歯が立たずVB6でやろうとしています。 ご参考;「次のコードは、FileSystemObject を使って、ファイルの読み取りまたは書き込みに使用できる TextStream オブジェクトを取得する例です。」とあるのですが、ファイルから変数に読み取るために使うには如何使えば良いのか、分りません。 Dim fso, MyFile Set fso = CreateObject("Scripting.FileSystemObject") Set MyFile = fso.CreateTextFile("c:\testfile.txt", True) MyFile.WriteLine("This is a test.") MyFile.Close また、下記は「指定したファイルを開き、開いたファイルの読み取り、または追加書き込みに使用できる TextStream オブジェクトを返します。」とあるのですが、これとの関係もよくわかりません。 object.OpenTextFile(filename[, iomode[, create[, format]]]) よろしくお願いいたします。

  • FileSystemObjectでエクセル作成

    エクセル2003です。 Sub test() Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") With FSO.CreateTextFile("C:\test.xls") .Close End With Set FSO = Nothing End Sub これでエクセルファイルを作成することが出来るのですが サイズが0KBであり、中身を開いて文字を入れて保存しようとすると 「テキスト(タブ区切り)と互換性のない機能が含まれている可能性があります」 と言うメッセージが表示されます。 普通のエクセルファイルとは違うファイルが作成されてしまってるのでしょうか? CSVファイルではなく普通のエクセルファイルをFileSystemObjectで作成する方法をご教授ください。

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

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

  • VBでテキストファイルを作成して,また消したい

    VisualBasicでDLLファイルを呼び出して実行したいのですが, その際に,テキストに一度引数を入れたいと思っています. しかし,不要になれば,そのつどプログラムの中でテキストファイルを削除したいと思っています. テキスト作成は  Open App.Path + "\新規作成.txt" For Output Access Write As 1 mystring = "ByVal ImaFile As String" Print #1, mystring Close #1 でできたのですが, テキストを削除する方法を教えてください. HELPには Sub Manip_Files() Dim fso As New FileSystemObject, txtfile As TextStream, fil1 As File, fil2 As File Set txtfile = fso.CreateTextFile("c:\testfile.txt", True) MsgBox "ファイルを削除します。" ' 現在の位置でファイルのハンドルを取得します。 Set fil1 = fso.GetFile("c:\tmp\testfile.txt") Set fil2 = fso.GetFile("c:\temp\testfile.txt") ' ファイルを削除します。 fil1.Delete fil2.Delete MsgBox "完了しました。" End Sub という方法が載っているのですが, 最初のFileSystemObjectでひっかかります. 参照設定が足らないと思われるのですが, 何を加えたらいいのでしょうか. 教えてください.

  • FileSystemObject Win2008Server

    FileSystemObject Win2008Server 今までのWin2003ServerをWindows2008サーバーに更新しました。 Accessデータベース関係は今まで通り処理出来るのですが FileSystemObjectを使ったTextファイルからの読み込みや加工が 出来なくなりました。 VBScriptで社内DBを稼働させています。 サーバーや設定の事はあまり詳しくないのですが 何をチェックすればいいのか、ご指導お願いします。 (1)これはエラーになりません Set connectObj = Server.CreateObject("ADODB.Connection") ConnectObj.Open "xxx" 以下Accessの読み書き (2)この実行でエラーになります。 Set fso = Server.CreateObject("Scripting.FileSystemObject") set tso = fso.OpenTextFile(fp,1) この実行でエラーになります。 以下テキストファイルの処理 お手数ですが宜しくお願いします。

  • CreateTextFileをするには?

    はじめまして 早速ですが Set fso= Server.CreateObject("Scripting.FileSystemObject") Set ts = fso.CreateTextFile(Server.MapPath("a.csv"),True) 見たいな感じでテキストファイルを作りたいのですが、2行目で実行がとまっているらしく、ファイルが作られません。 IISの設定が必要なのでしょうか? OSはWinXPProです。 認証方法は匿名アクセスでアドミニ権限に近いユーザーです。 どなたか教えてください。よろしくお願いします。

  • エクセルマクロ(vba)のFSO.OpenTextFileを利用したファイルへの追記について

    FSOを利用して、特定のファイルがなければ、FSO.CreateTextFileを使ってファイルを作成して、ログを記入します。 特定のファイルがあれば、FSO.OpenTextFileを使って追記します。 ファイルが存在しないので新規でファイル作成を行ってからログを記入するのははうまくいくのですが、ファイルが存在するので、ファイルを開いて追記する場合ががうまくできません。 何が原因なのでしょうか? 以下がそのプログラムです。 アドバイスをよろしくお願いします。 Dim excel_folder excel_folder = ThisWorkbook.Path excel_folder = excel_folder & "\log.txt" Set objShell = CreateObject("Wscript.Shell") Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") Dim stream, data_text If FSO.fileexists(excel_folder) Then Set stream = FSO.OpenTextFile(Filename:=excel_folder, IOMode:=ForAppending, Create:=True) Else: Set stream = FSO.CreateTextFile(Filename:=excel_folder, Overwrite:=True) End If data_text = "test" stream.writeLine (data_text) stream.writeLine (vbCrLf) stream.Close

  • FSOでエクセルファイルを作成したい

    FSOでエクセルファイルを作成したいのですが、 ファイルの作成はできますが、作成したファイルが開けません。 Sub 新規Excelファイルを作成する() Dim MyFile As String Dim myFSO As Object MyFile = "管理簿.xlsx" Set myFSO = CreateObject("Scripting.FileSystemObject") With myFSO.CreateTextFile("C:\" & MyFile) .Close End With Set myFSO = Nothing End Sub で、エラーにならずうまくいっています。 が、その出来上がったファイルを開こうとすると 「ファイル形式またはファイル拡張子が正しくありません」 と言う旨のメッセージが表示されます。 何が間違ってますか? よろしくお願いします。

  • FileSystemObjectのオーバーフロー

    FileSystemObjectで 1台のPCだけ、以下のプログラムで実行時エラー6オーバーフロー が発生します。 他の開発環境2台、実行環境2台では発生せず。 WinXP VB6+SP6です。 ~プログラム~ Set Fso = CreateObject("Scripting.FileSystemObject") 'ファイルの末尾から書き込みモード(第2引数=8)で開きます Set FsoTS = Fso.OpenTextFile(strPathFile, 8) lngファイル行数 = FsoTS.Line - 1 FsoTS.Close Set FsoTS = Nothing Set Fso = Nothing 質問内容 ・FSOを無効にする設定はありますか? ・FSOを無効にできた場合、「オブジェクトが作成できません」 のエラーになると思うのですが、そのエラーにはなりません。 ※実行環境が現在手元にないので、実証できない状態です。 以上

  • FileSystemObject エラー

    お世話になります。 閲覧ありがとうございます。 質問ですが、WSHの'Scripting.FileSystemObjectで質問があります。 VBSにて'Scripting.FileSystemObject'を利用するスクリプトを自端末上に作成しました。 しかし、『CreateObject("Scripting.FileSystemObject") 』にてエラーが発生してしまします。 エラー内容は以下のとおりです。 エラー: ActiveX コンポーネントはオブジェクトを作成できません。: 'Scripting.FileSystemObject' コード: 800A01AD ソース: Microsoft VBScript 実行時エラー 他のPCでは同じVBSで稼働しておりますので、構文等の間違いはないかとおもいます。 エラーが発生しているPCも稼働しているPCもすべてWindows XP sp2です。 以下を試みましたが、改善しませんでした。 (1)IEの[プロパティ]→[セキュリティ]→[レベルのカスタマイズ]→[スクリプトを実行しても安全とマークされていない ActiveX コントロールの 初期化とスクリプトの実行] を有効 ※インターネット & ローカルイントラネットの両方とも↑にしました。 (ローカルディスク上にVBSは作成してあります。) (2)Windows Script 5.6の再インストール ソースは以下のようになっております。 お手数をお掛け致しますが、よろしくお願い致します。 Option Explicit Const HKEY_LOCAL_MACHINE = &H80000002 Dim objTextFile Dim objFSO '保存するためのファイルオブジェクト Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.CreateTextFile("C:\Test.txt", True) objTextFile.WriteLine "Test!!" msgbox "処理が終了しました。"

専門家に質問してみよう