Line inputではDOSの改行コードは認識できないみたいなので、他の方法で認識する方法ってありますか?
やりたいことは、単純にファイルを一行単位で読み出してxlsファイルに書き込む操作だけです。
Line inputだと、全行を一行と認識してしまうためうまく貼り付けれません。どうかよろしくお願いいたします。
MS Windowsにおける改行コードはvbCrLf(&H0D,&H0A)で、
MS DOS時代から変更されていません。
とりあえずバイナリダンプして
改行コードに何が用いられているか
調べてみては」どうですか?
確かに0D0Aでした。で、VBで普通のテキストをバイナリに変換して改行コードがあるかどうかをチェックし、その改行コードを変換(0D0A→0A)にして元のテキストに戻すっていうのは可能なんでしょうか?
編集 削除文字の検索ならInStr()
変換ならReplace()です。
こんな感じで作ってみたんですけど、vbCrLf(&HD, &HA)
でエラーが出るしGet #1, , strBufの時にはすでにバイナリではないし
どこがだめなんでしょうか??
Dim strBuf As String
Open "text.txt" For Binary As #1
strBuf = Space$(LOF(1))
Get #1, , strBuf
Close #1
s = InStr(strBuf, vbCrLf(&HD, &HA)) '検索
If s <> 0 Then
strBuf = Replace(strBuf, vbCrLf(&HD, &HA), vbCrLf(&HA)) '変換
End If
Open "text2.txt" For Output As #1 Len = 32000
Print #1, strBuf
んんん?
vbCrLfなんて関数ないですよ、
vbCrLfは、関数ではなく、定数で、改行コード(&HDと&HAの2文字)をあらわすものです。
なので、Replaceでおきかえる文字列には、vbCrLfを直接指定してください。
あと、InStrは、Replace関数の中でも呼ばれている(と思う)ので、意味はないです。
直接Replace...を使っても、速度は変わらないです。
ではどうやってvbCrLfを使ってDOSの改行コードとUNIXの改行コードを分けるのでしょうか???
編集 削除Replaceのおきかえごの文字列には、vbLf…というものはないですから、
Chr(&HA)を指定してあげます。
おきかえ前の文字列については、前に書いた通り
改行コードについて
http://tohoho.wakusei.ne.jp/www.htm
アラカルトの項にたしか、改行コードのことが書いてあったはず。
詳しく知っておくといいでしょう。
やっぱり無理です...
strBuf = Replace(strBuf, vbCrLf, Chr(&HA))
とやっても結果は全く変わりません。