[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/01/05(Fri) 20:09
投稿者名:7-2/1
Eメール:
URL :
タイトル:
ファイルの種類を判断しテキスト形式のファイルのみオープン
Microsoft Common Dialog Control を使ってファイルを開き、
テキストボックスに設定を行っています。

ダイアログボックスのフィルタを「すべてのファイル」とし、
指定したファイルがテキスト形式かそれ以外かをチェックし、
テキスト形式のファイルのみをオープンするようにしたいの
ですが、どうすればよいのですか。

GetAttrとかを使ってみたのですが上手くいきません。
ファイルの種類を知る方法とかあるのでしょうか。

-------------------------------------------------------------
Private Sub Command1_Click()
    Dim FN As String
    Dim ReadData As String
    Dim TextData As String
    Dim FileNo As Integer

    CommonDialog1.Filter = "すべてのファイル(*.*)|*.*"
    CommonDialog1.ShowOpen
    
    FN = CommonDialog1.FileName
    If FN = "" Then
        Exit Sub
    End If

    If GetAttr(FN) And vbArchive <> 0 Then
        MsgBox "テキスト形式ファイルではありません。"
        Exit Sub
    End If

    FileNo = FreeFile
    Open FN For Input As #FileNo

    Do While Not EOF(FileNo)
        Line Input #FileNo, ReadData
        TextData = TextData & ReadData & vbCrLf
    Loop

    Text1.Text = TextData

    Close #FileNo
End Sub

投稿時間:2007/01/05(Fri) 20:32
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: ファイルの種類を判断しテキスト形式のファイルのみオープン
> テキスト形式のファイルのみをオープンするようにしたいの
> ですが、どうすればよいのですか。

何のために、どの程度のチェックを必要としているのかにもよりますね。

単純に、拡張子で判断する程度で十分なのであれば、
 If FN Like "*.[tT][xX][tT]" Then
のように、ファイル名からの判断でいけるでしょう。


ファイル名ではなく、その内容で判断したいのであれば、実際にそのファイルを
開いてみて、テキストとして不正なデータが含まれていないかどうかを
チェックする必要があるかと思います。
(どのようなデータを不正とみなすかは、文字コードによって異なります)

投稿時間:2007/01/05(Fri) 23:51
投稿者名:7-2/1
Eメール:
URL :
タイトル:
Re^2: ファイルの種類を判断しテキスト形式のファイルのみオープン
> 単純に、拡張子で判断する程度で十分なのであれば、
>  If FN Like "*.[tT][xX][tT]" Then
> のように、ファイル名からの判断でいけるでしょう。
>
拡張子が一意(固定)でないです。
「*.txt」や、「*.csv」とか、「*.yyyymmdd」とかの
日付をつけているものとかが存在し、すべてを網羅する
の無理かと。

できれば、ファイルの内容とかで判断したいのです。
どのようなデータを不正とみなすかによると思いますが、
ファイルの最後を見て、ファイルの終わり方で判断できるのですか。

どうすればよいのですか。

投稿時間:2007/01/07(Sun) 23:41
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: ファイルの種類を判断しテキスト形式のファイルのみオープン
> 拡張子が一意(固定)でないです。
> 「*.txt」や、「*.csv」とか、「*.yyyymmdd」とかの
> 日付をつけているものとかが存在し、すべてを網羅する
> の無理かと。

.yyyymmdd の形の拡張子のファイルがテキストファイルならこちらを
調べる方が簡単だと思いますよ。
(普通のファイルは、ルールを無視したようなファイルを作成していないので)
その他、テキストファイルにどのような拡張子をつけていますか?
GetExtensionName メソッド 等を使って拡張子を取り出し、正規表現 等を使って
調べればそれほど大変な事ではないかと。
例えば、.yyyymmdd の形の拡張子 なら文字数 や IsDate 関数を使用すれば簡単に
解りますよね。

私は、ファイルの中身を調べる方が大変だと思いますよ。貴方が言うテキストファイルに
何か規則性があるのなら別ですが。

Form1.frm Module1.bas *****.htm  ***.ini  ****.bat 等(無数にある)のファイルは
中身を調べればテキストファイルですよね、これらはどちらに分類するのですか?
貴方が言うテキストファイルの定義はどのようなものを指しているのかにもより
ますよね。

投稿時間:2007/01/09(Tue) 13:55
投稿者名:7-2/1
Eメール:
URL :
タイトル:
Re^4: ファイルの種類を判断しテキスト形式のファイルのみオープン
魔界の仮面弁士さん、花ちゃん
ありがとうございます。

教えて頂いたことで考えて見ます。
何か質問等が発生しましたら、再度、質問させて頂きます。