掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VBAを使用して .NETで作られた「.vb」ファイルを読み取るには? (ID:142676)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
初めて質問する愛与と申します。 貴重なこの場をお借りできることを、管理人様に感謝させて頂きます。 初めて故、不手際があるかもしれませんが、何卒よろしくお願い致します。 Access2003のVBAを使用してVB6.0ならびに、VB.NET(VS2008)のソースから イベント名及びメソッド名を読み取ろうと考えています。 下記のソースを使用してVB6.0(.frmファイル)からイベント名等は取れたのですが、 VB.NET(.vbファイル)を読み取ると文字化けしてしまいます。 原因が文字コードの違いというところまではわかったのですが ADODB.Streamによる変換もうまくいかず、悩んでいます。 文字コードを指定してファイルを開く方法、もしくは 読み取った文字列を別の文字コードに変換等は難しいのでしょうか? '-------------------------------------------------------------------- '[名称] EventNameOutPut ' '[概要] 指定されたファイルから、イベント、メソッド名を抜き取る。 ' '[処理] 1、テキストストリームでファイルを開く。 ' 2、イベント名等を抜き出す。 '-------------------------------------------------------------------- Private Sub EventNameOutput(ByRef rstrList() As String, ByVal vstrFolderPath As String) On Error GoTo Err_ Dim objFso As FileSystemObject 'vbファイル読取用 Dim objTso As TextStream Dim strLine As String Dim i As Integer 'ファイルカウント Dim Sli As Integer '文字カウント Dim Pi As Integer '貼り付け行 Dim intStart As Integer '読取開始位置 '各カウントの初期値を設定 i = 0 '選択されたファイル数分処理を行います。 For i = 0 To UBound(rstrList) Set objFso = New FileSystemObject Set objTso = objFso.OpenTextFile(vstrFolderPath & rstrList(i), ForReading) 'イベント、文字数カウントをリセット Sli = 0 Pi = 2 'ファイル名を一行目に。 Debug.Print rstrList(i) '読取終了位置まで一行づつ読み込みます。 Do Until objTso.AtEndOfStream strLine = objTso.ReadLine '1文字目から読み取り、イベントもしくはメソッドであるかを確認します。 Select Case True Case Left(strLine, 16) = "Private Function" intStart = 16 Case Left(strLine, 11) = "Private Sub" intStart = 11 Case Left(strLine, 20) = " Private Function" intStart = 20 Case Left(strLine, 15) = " Private Sub" intStart = 15 Case Else intStart = 0 End Select 'どちらでもなければ次の周回へ。 If intStart = 0 Then Else 'イベントもしくはメソッド名が見つかった場合は、名を抜き取ります。 '"("が見つかるまで回します。 For Sli = intStart To Len(strLine) 'イベント名の後の1文字目は必ず「 ( 」のはず! If Mid(strLine, Sli, 1) = "(" Then 'イベント名を抜き取り一時保存 「( 」を読み取りたくないので、読取文字数を - 1 します。 Debug.Print LTrim(Mid(strLine, intStart + 1, Sli - intStart - 1)) Pi = Pi + 1 Exit For End If Next End If Loop 'ここまで使用したオブジェクトを一旦開放。 objTso.Close Set objTso = Nothing Set objFso = Nothing Next Exit_: Exit Sub Err_: MsgBox "Number : " & Err.Number & vbCr & _ "Source : " & Err.Source & vbCr & _ "Description : " & Err.Description, _ vbCritical, _ "システムエラー" Resume Exit_ End Sub
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.