2017-01-24 5 views
0

ExcelでUnixまたはWindows形式のファイルを処理する必要があります。私はすでにそれぞれのコードを読み込むための正しいコードを持っていますが、正しいプロシージャを呼び出す前に、ファイルタイプを事前に知る必要があります。テキストファイルがunixであるかWindowsでexcel vbaを使用しているかを識別する方法は?

VBAを使用してファイルタイプ(Unix/Windows)を簡単に識別する方法はありますか?

おかげ

+0

私が推測できるもの行末.../r/n vs/nですか?しかし、私はUNIXファイルとWindowsファイルの "Excelファイル"について知らない。 –

+0

いいえ、私はUnixまたはWindowsフォーマットのテキストファイルについて話しています。私はExcelでそれらを読んでいますが、適切な手順を呼び出す前にファイルの種類を知る必要があります。 –

+0

あなたのテキストファイルが他の方法で特別なものでない限り、冗談の答えは私が考えることができるすべてです。 –

答えて

0

あなたはカウントするために、このようなものを使用することができます

Private Sub CountCRLF() 
     Dim TmpStr$() 
     TmpStr = Split(Text1.Text, Chr(13) & Chr(10)) 
     MsgBox "There are " & UBound(TmpStr()) & " CRLF's in string", vbInformation, "Count" 
    End Sub 

それが数を超える場合、それはWindowsのファイルである必要があります。ファイルが両方のタイプの改行を混在させる場合、より複雑なアプローチが必要になります。

しかし、ファイルが本当に小さいと確信していない限り、これはパフォーマンスの面で心配です。あなたの疑問にお答えすると、あなたはすでにラインを1つずつ処理する機能を持っていると思うでしょうし、これらのファイルを一度だけ処理して、あなたが進むにつれて検出し、処理するようにしてください...

+0

ここでの問題は、ファイルを開いてCR&LFを数える必要があることです。 strFile = "textfile.csv" オープンstrFileは#1 ライン入力#1、strText のMsgBox "などの入力のために 文字列 として 'サブのReadFile()文字列 として 薄暗いstrText薄暗いstrFile:私はそのような何かを試してみました"それはUNIXファイルなら 閉じる#を1 エンドSub' 、 " "&UBound関数(スプリット(strText、のvbCrLf))&" CRLFのは「vbInformationは、" カウントが文字列であり、ライン入力" の文は、A取り長い時間。それがWindowsファイルの場合、応答は高速ですが、行には分割してカウントするCRLFがありません。 –

+0

バイナリ形式でファイルを読むことができます。行末は違いはありません。すべてを読むには、 'textData = Input $(LOF(#1)、#1)'を実行します。私はあなたのファイルがすべて小さいことを本当に願っています... – joser

+0

回答とupvoteを受け入れることを忘れないでください、私は担当者を使用することができます: - – joser

関連する問題