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

このQ&Aのポイント
  • VB6でUTF-8ファイルの読取りをする方法について教えてください。
  • VB6のFileSystemObjectを使用してUTF-8ファイルの読み取りを行いたいですが、方法が分かりません。
  • コード例や参考資料などがあれば教えていただけると助かります。
回答を見る
  • ベストアンサー

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]]]) よろしくお願いいたします。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

現在開示されている状況からは「Visual Basic6でなければならない」理由がまったくわかりません。 秀丸エディタを使っているのなら、秀丸のマクロで済んでしまう内容ではないでしょうか? 秀丸のマクロは、ちょっとしたプログラム言語並の機能がありますから。 他にも、UTF-8に対応していて、文字列の加工も得意な言語がいっぱいあります。 Perl , Ruby, PHP, Python等。 COBOLやFortranを知っているなら、変にオブジェクト指向っぽくなってBasicと呼ぶのに抵抗のあるVBより、昔のBasicに近い感じで記述できるPerlの方が理解しやすいのではないか、とも思います。

himana77
質問者

お礼

データは秀丸で作るんのですが、利用するとき秀丸のないところで使う必要があるのです。 また、64歳になりましたので、いまさら別の言語を勉強するのは無理です。VisualBasic2010もトライしましたがさっぱり分りませんでした。 つまり私が今使えるのはVisual Basic6なので、それでのUTF-8の利用法を探しているわけです。

その他の回答 (1)

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

私はDomesticな人間で、よくわかってないが、参考までに。 下記を質問に補足された方が良いのでは。 コード云々を聞く前に、質問として (1)達成して、その後結果どうしたいのか。文字化けしないように画面表示や印刷したいのか、    エクセルに読み込みたい、ワードなどソフトに読み込みたい、他のコードのファイルを作りたいなどなど。 (2)なぜプログラムで処理したいのか。次のプログラムによる処理につなげるためとか。 (3)元データはどういうもの(何処から入手した・由来したもの)か。WEBから来たもの。現地人の作成文書?ファイル。 (4)ソフトによって(身近なものでも)は、文字コードを指定して開けるものがある。 メモ帳 「開く」の画面と「文字コード」を指定。他の専用テキストエディタなら、可能なものが多いでしょう。 エクセルの「テキストファイルウイザード1/3」で「元のファイル」で指定 など 参考 http://d.hatena.ne.jp/replication/20100211/1266232291 ーー プログラムでは ファイルを開くとき、文字コードを指定できる入出力システムや、データベースソフトを利用する http://d.hatena.ne.jp/niemands/20090316/1237225383 ーー FSOではCreateTextFileなどは文字コードを指定できるパラメータがある。 OpenTextFileでファイル形式指定でTristateなどが在る。

himana77
質問者

お礼

ご協力ありがとうございます。 秀丸エディタで作成した日本語と中国簡体字の混じったテキストファイルを読み込んで、一定の処理ののち、HTML文に作成してインターネットブラウザで日本文と中国簡体字を表示させます。 HTML文の作成法や簡体字の表示させ方は分っています。ところが、現状では、中国簡体字をVisual Basic6によるプログラムで読み込んだ時点でコードが異なるために文字化けになってしまいます。 そこで、UTF-8コードとして変数に読み込む方法が必要になっているものです。Visual Basic6の画面に表示する必要はありません。 やり方は問いませんのでよろしくお願いいたします。

関連するQ&A

  • 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などについては全く分かりません。よろしくお願いいたします。

  • 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でひっかかります. 参照設定が足らないと思われるのですが, 何を加えたらいいのでしょうか. 教えてください.

  • 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 で、エラーにならずうまくいっています。 が、その出来上がったファイルを開こうとすると 「ファイル形式またはファイル拡張子が正しくありません」 と言う旨のメッセージが表示されます。 何が間違ってますか? よろしくお願いします。

  • ファイル内の文字列を置換するcscriptについて

    お世話になります。 早速ですが、 以前、以下のような、「UNIXファイルの文字列を置換する」プログラムを Cscript で記述する方法を教えていただいたものですが、 cscript //nologo foo.vbs < t22.org > t22.txt ====foo.vbs==================================================== Do While Not WScript.StdIn.AtEndOfStream str = WScript.StdIn.ReadLine WScript.StdOut.Write replace(str,"abc","xxx") & vbLF Loop 今回、これをさらに、 Cscript で「置換するファイル」と「置換する文字列」も指定するプログラム にしたいと思い記述してみたのですが、下記のような問題が発生します。 「置換後のファイルの最後に改行文字が入ってしまいます。」原因がわかりません。 cscript //nologo f00.vbs t22.txt aaa xxx ====foo.vbs==================================================== Dim myFile Dim myRec Dim fso Dim txt, wd1, wd2 txt = WScript.Arguments(0) wd1 = WScript.Arguments(1) wd2 = WScript.Arguments(2) WScript.Echo txt WScript.Echo wd1 WScript.Echo wd2 Set fso = CreateObject("Scripting.FileSystemObject") Set myFile = fso.OpenTextFile(txt) myRec = myFile.ReadAll myRec = replace(myRec,wd1,wd2) myFile.Close Set myFile = fso.CreateTextFile(txt) myFile.WriteLine (myRec) myFile.Close =============================== このコードのどこに問題があるのでしょうか? 読み込んでいるファイルは、Shift-JIS LF改行のファイルです。 あるいは、 もっと簡単な記述方法等ありましたら、ご意見、ご指導ください。

  • エクセルvbaでファイル書き込みのとき同じファイルがある場合に\"上書きしますか?\"というメッセージをだすには?

    エクセルvbaでファイル書き込みのとき同じファイルがある場合に"上書きしますか?"というメッセージをだすには、どのようにやればよいでしょうか? ダイアログで上書きするときにメッセージを出すようにしたいのです。 現在は、 Dim fo As New Scripting.FileSystemObject Dim ts As TextStream Dim myDir As String Dim myFileDir As String myDir = ThisWorkbook.Path myFileDir = myDir & "\a.txt" 'ここにファイルを探すコードを埋め込んでいます。 Set ts = fo.CreateTextFile(myFileDir, False) よろしくお願いします。

  • ファイルシステムオブジェクトのメソッドについて

    こんにちは、皆さん。 以下のプログラムでコピーしようとしたら、 オブジェクトがメソッド、プロパティをサポートしてないという メッセージが表示されてしまいました。 Set fso = CreateObject("Scripting.FileSystemObject") fso.CopyFile "c:\aaa.txt", "c:\temp\" Set fso = CreateObject("Scripting.FileSystemObject") Set src = fso.GetFile("c:\aaa.txt") fso.Copy "c:\temp\" こういった場合、どんなメソッドがあるか確認するには どうしたらよいでしょうか? また、ファイルをコピーするにはどうしたらよいでしょうか? よろしくお願いします。

  • UTF-8に設定したい。

    よろしくお願いします。 *-----------------------------------------* function convert( XMLParam, XSLTParam, destParam ) { objData=new ActiveXObject("Msxml2.DOMDocument"); objData.async = false; objData.load(XMLParam); objStyle=new ActiveXObject("Msxml2.DOMDocument"); objStyle.async = false; objStyle.load(XSLTParam); (objData.transformNode(objStyle)); fso=WScript.CreateObject("Scripting.FileSystemObject"); fl = fso.CreateTextFile(destParam,true,true); fl.Write(objData.transformNode( objStyle )); fl.Close(); } *---------------------------------------- というコードがありまして、 XMLファイルとスタイルシート(.xslt)を用いて 新しくファイルを作成しています。 CreateTextFile作成されるそのファイルの文字コードをUTF-8のファイルにしたいのですが、技術的に可能なのでしょうか。 現在はUnicodeで出力しています。 また、どのようにすれば可能でしょうか。 当方、前担当者よりソースを受け取ったのみで初心者同様のため、検討がつきません。 よろしくお願いします。

  • 複数のtxtファイルをエクセルに貼りつける方法 2

    前回質問した者です。 http://okwave.jp/qa/q7062908.html ある特定のフォルダ内に複数のフォルダがあり、その中の各フォルダには、txtファイルが複数あります。 VBAを使ってエクセルのA列にフォルダ名、B列にtxtファイル名、C列にはtxtファイルの内容を入れたいです。(今はコピペを手動で行っています) フォルダA ↓ フォルダ1、フォルダ2、フォルダ3、・・・・ ↓ 各フォルダにはtxtファイル(改行あり) VBAは解らないのですが、自分なりに検索してみて、以下のコードを見つけました。 しかし、以下の場合はA列にtxtファイルの内容しか入らず、また、特定のフォルダのみしか反映されません。 そこで、フォルダAのパスだけを指定して、A列にフォルダ名、B列にtxtファイル名、C列にはtxtファイルの内容を入れるにはどうすればいいのでしょうか? Sub Macro() Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim FolderPath As String 'ここのアドレスをファイルが格納されているフォルダのパスに変えてください FolderPath = "H:\Documents and Settings\asano\デスクトップ\TEST" Dim myFile As Object Dim i As Long i = 1 For Each myFile In fso.GetFolder(FolderPath).Files Cells(i, 1).Value = fso.OpenTextFile(myFile.Path).ReadAll() i = i + 1 Next End Sub

  • VB6・一括でファイル名の変更したいのですが

    VB6でファイルリネームツールを作成しています。 DriveListBox・DirListBox・FileListBox・TextBox*2・コマンドボタン*3を配置しています。 実行して、ドライブ・ディレクトリを選択して、FileListBoxに表示されいるファイルをコマンド2ボタンで全部Text2に表示させています。 そこで、text2からファイル名を直接編集して、コマンド3ボタンで編集したファイル名で保存したいのですが、どう記述すれば良いのでしょうか。 Text1とコマンド1の状態は、FileListboxでクリックしたファイルをText1に表示・編集して、コマンド1でファイル名変更できる状態です。 コマンド3のコードですと、 >Set fsofile = fso.GetFile(Dir1.Path & "\" & File1.FileName) の行が、実行エラー53、ファイルが見つかりません。となります。 宜しくお願いします。 現在のコードです。 Private Sub Command1_Click()   Dim fso As New FileSystemObject   Set fsofile = fso.GetFile(Dir1.Path & "\" & File1.FileName)   fsofile.Name = Text1.Text   File1.Refresh end sub Private Sub Command2_Click()   Text2.Text = Clear   Dim fso As New FileSystemObject   For Each myFile In fso.GetFolder(Dir1.Path & "\" & File1.FileName).Files     Text2.Text = Text2.Text & myFile.Name & vbCrLf   Next End Sub Private Sub Command3_Click()   Dim fso As New FileSystemObject   Set fsofile = fso.GetFile(Dir1.Path & "\" & File1.FileName)   fsofile.Name = Text2.Text   File1.Refresh End Sub Private Sub Dir1_Change()   File1.Path = Dir1.Path End Sub Private Sub Drive1_Change()   Dir1.Path = Drive1.Drive End Sub Private Sub File1_Click()   Text1.SetFocus   Text1.Text = File1.FileName End Sub Private Sub Form_Load()   Text1.Text = ""   Text2.Text = ""   Dir1.Path = App.Path   Drive1.Drive = App.Path End Sub

  • UTF-8のテキストファイルを開く方法

    UTF-8のテキストファイルを開く方法 こんにちは。VBA初心者です。 FSOを使ってテキストファイルを開いてみたのですが、S-JISで開かれるらしく、文字化けしてしまいました。 そこで、WEBで調べてみると「ADODB.Stream」というものを使用すると、「オブジェクト.Charset = "UTF-8"」のように文字コードを指定できることがわかりました。 しかし、テキストストリームというものがいまいち理解できていないので使い方がよくわかりません。 以下のようなコードを書いてみましたが、「実行時エラー'438' オブジェクトは、このプロパティまたはメソッドをサポートしていません。」となってしまいました。 どこが間違っているのか教えていただけないでしょうか。 ちなみに「Open」ステートメント(Open バス名 For モード As #ファイル番号)を使用してテキストを内部的に開いた場合はどうなるのでしょうか。もし、標準でS-JISだった場合は、UTF-8にする方法はあるのでしょうか。 どうかよろしくお願いします。 Sub UTF8を開く() Dim myADODB As Object Set myADODB = CreateObject("ADODB.Stream") Dim i As Integer Worksheets("sheet1").Activate i = 1 With myADODB .Charset = "UTF-8" .ReadLine ("D:\test\sample.txt") Do Until .AtEndOfStream = True Cells(i, 1).Value = myADODB i = i + 1 Loop .Close End With End Sub

専門家に質問してみよう