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

投稿時間:2004/12/17(Fri) 23:51
投稿者名:YADORI
Eメール:
URL :
タイトル:
文字列の切り出し・・・
いつも利用させて頂いておりますが、一つお知恵をお貸し頂けませんか?

AAA.TXT の中に
W 0 1 "A014D-1F0-F1   " "AXC      " 53 85 3.20 1 1 53 *
W 0 2 "A014D-1F0-F1   " "AXC      " 53 85 3.20 1 1 53 *
と言うように
データの区切りが ”スペース”
改行が ”*”
”ダブルクォーテーション”は文字列(スペース有り)
のデータとなります。

input コマンドで読み込むと 区切りが無茶苦茶
LineInput コマンドで読み込むと AAA.TXTは改行が無いので全行読み込んでしまいます
スペースを カンマ(、)に置き換えてから読み込めば・・・
と単純な考えで行ったのですが”ダブルクォーテーション”内のスペースも置き換えられ
駄目でした。

この様なデータの場合、どうするのが一番簡単なのでしょうか?

お知恵をお貸しくださいm(_ _)m

投稿時間:2004/12/18(Sat) 00:14
投稿者名:E230
Eメール:
URL :
タイトル:
Re: 文字列の切り出し・・・
データの区切り=スペースを辞めれば?
Splitでいけるんじゃない?

投稿時間:2004/12/18(Sat) 11:27
投稿者名:YADORI
Eメール:
URL :
タイトル:
Re^2: 文字列の切り出し・・・
E230さん
回答ありがとうございます

> データの区切り=スペースを辞めれば?
> Splitでいけるんじゃない?

諸事情により止めることが出来ません。
Splitでも行ってみましたが ダブルクォーテーション内のスペースでも分割されてしまうので
駄目でした。

1文字づつ切り出して区切りを判断していくしか方法は無いのですかね?
データ行数が膨大なため避けたかったのですが・・・・

投稿時間:2004/12/18(Sat) 12:14
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: 文字列の切り出し・・・
これって、固定長のCSVファイルじゃないのですか?
(メモ帳で開いた時にはどのように表示されますか)
(Excelでうまく開く事ができますか)
 
それなら、ここのファイル操作関係の ランダムファイルの簡単な使用例(住所録作成)は
参考になりませんか。

投稿時間:2004/12/18(Sat) 12:41
投稿者名:YADORI
Eメール:
URL :
タイトル:
Re^4: 文字列の切り出し・・・
花ちゃんさん

> これって、固定長のCSVファイルじゃないのですか?
例題が悪かったですねm(_ _)m
データレコードフォーマット:可変長フリーフォーマットです。
> (メモ帳で開いた時にはどのように表示されますか)
メモ帳で開と改行なしに1行で表示されます。

> (Excelでうまく開く事ができますか)
1行単位 ”*”で改行されて読み込まれます。

> それなら、ここのファイル操作関係の ランダムファイルの簡単な使用例(住所録作成)は
> 参考になりませんか。

可変長だったので無理でした<(_ _)>

投稿時間:2004/12/18(Sat) 12:51
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: 文字列の切り出し・・・
> 例題が悪かったですねm(_ _)m
> データレコードフォーマット:可変長フリーフォーマットです。
> > (メモ帳で開いた時にはどのように表示されますか)

だから、メモ帳でどのように表示されるのかを聞いているのです。
実際のデータの並びと違うデータを投稿して質問しても誰も正しい答えは出せないのでは。

> メモ帳で開と改行なしに1行で表示されます。
1行にどのように表示されるのか、個々のデータの本来の区切り位置はどこなのかを
しりたいのです。

> > (Excelでうまく開く事ができますか)
> 1行単位 ”*”で改行されて読み込まれます。

拡張子を CSV とかで読み込んでいませんか?
TXT とかに拡張子をして読み込んで見て下さい。

投稿時間:2004/12/18(Sat) 14:00
投稿者名:YADORI
Eメール:
URL :
タイトル:
Re^6: 文字列の切り出し・・・
花ちゃんさん

> 実際のデータの並びと違うデータを投稿して質問しても誰も正しい答えは出せないのでは。
そうですね 失礼しました。

"A68501" "aa                            " *
D 0 1 "01A5-1d0-01   " "Rpdc      " 53 85 3.20 1 1 53 85 1 812 0 13 "pl    " "      " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 *
A 0 0 53 0 0 4.712389 0 0 0 0 0 0 0 0 0 0 0 0 0 1 *
D 0 0 0 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 *
>
> 1行にどのように表示されるのか、個々のデータの本来の区切り位置はどこなのかを
> しりたいのです。

データの区切りはスペースです。但しダブルクォーテーション内は区切りではありません。

>
> > > (Excelでうまく開く事ができますか)
> > 1行単位 ”*”で改行されて読み込まれます。
>
> 拡張子を CSV とかで読み込んでいませんか?
> TXT とかに拡張子をして読み込んで見て下さい。

"A68501" "aa                            " *
D 0 1 "01A5-1d0-01   " "Rpdc      " 53 85 3.20 1 1 53 85 1 812 0 13 "pl    " "      " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 *
A 0 0 53 0 0 4.712389 0 0 0 0 0 0 0 0 0 0 0 0 0 1 *
D 0 0 0 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 *

TXTもCSVもどちらも同じ結果でした。

投稿時間:2004/12/18(Sat) 14:40
投稿者名:E230
Eメール:
URL :
タイトル:
Re^3: 文字列の切り出し・・・
> > データの区切り=スペースを辞めれば?
> > Splitでいけるんじゃない?
>
> 諸事情により止めることが出来ません。
先にそれを言ってくれなきゃぁ。
明確なレスがつかず、板が助長になるだけです。

> Splitでも行ってみましたが ダブルクォーテーション内のスペースでも分割されてしまうので
> 駄目でした。
そりゃそうだ。
*でSplitしてCVS出力。
その後花ちゃんさんの方法でどぜよ。

投稿時間:2004/12/18(Sat) 14:46
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^4: 文字列の切り出し・・・
Replace 関数で2個のスペースを1個に置き換えるを繰り返せば、後は、Split で
取り出せるし普通のスペース区切りとして扱えます。
スペースをカンマに置き換えてもいいし、一気読み込んでから処理しても
1行毎に処理してもできるかと思います。

Private Sub Command1_Click()
    Dim myStr As String
    Dim myDat As Variant
    Dim i     As Long
    myStr = "D 0 1 01A5-1d0-01   Rpdc       53 85 3.20 1 1 53 85 1 812 0 13 "
    While InStr(myStr, "  ") > 0
        myStr = Replace(myStr, "  ", " ")
    Wend
    myDat = Split(myStr, " ")
    For i = LBound(myDat) To UBound(myDat)
        Debug.Print myDat(i)
    Next i
End Sub

投稿時間:2004/12/18(Sat) 17:35
投稿者名:YADORI
Eメール:
URL :
タイトル:
何とか解決できました
E230さん、花ちゃんさん

色々ありがとうございました。
先にダブルクォーテーションを空白にReplaceした後に花ちゃんのサンプルコードで
行いましたら思い通りの結果を得ることが出来ました

>明確なレスがつかず、板が助長になるだけです。

説明不足の私に最後までお付き合い頂きありがとうございましたm(_ _)m