[リストへもどる]
一括表示

投稿時間:2003/04/27(Sun) 20:18
投稿者名:レイナ
URL :
タイトル:
テキストファイルのマージ
AファイルとBファイルがあったとして、
これらのファイルを1つにする方法を教えて下さい。
たとえば、名簿の氏名などだとして、AにもBにも存在するものは
重複削除するやり方もお願いします。

投稿時間:2003/04/27(Sun) 20:25
投稿者名:nobu
Eメール:
URL :
タイトル:
Re: テキストファイルのマージ
> AファイルとBファイルがあったとして、
> これらのファイルを1つにする方法を教えて下さい。

Aファイルを読み込みCファイルに書き出す。
Bファイルを読み込みCファイルに書き出す。
プログラム以前に自分なりに手法(アルゴリズム)を考えましょう。
紙に手書きでやる時の事と同じ様なものです。

> たとえば、名簿の氏名などだとして、AにもBにも存在するものは
> 重複削除するやり方もお願いします。

これも同様にまずは手法(アルゴリズム)を考えましょう。
Aに「イ」があればBを最初から最後まで読み込み、1件ずつチェックして
「イ」ならBから削除する
(重複しないものはCに書き出すなら「イ」は書き出さない)
これをAの最初から最後まで繰り返す。

投稿時間:2003/04/27(Sun) 23:27
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: テキストファイルのマージ
チョット変ったやり方を

Private Sub Command1_Click()
    Dim strTextLine As String
    Dim intFileNo   As Integer
    Dim CFileLen    As Long
    'AファイルとBファイルを1つにマージしてCファイルを作成
    Shell "command.com /c copy e:\AFile.txt + e:\BFile.txt e:\CFile.txt", 0
    Do While CFileLen < 1 'コピーされるまで待つ
        CFileLen = Len(Dir$("e:\CFile.txt"))
        DoEvents
    Loop
    '別途プロパティで設定
    'List1.Sorted = True
    intFileNo = FreeFile
    '一つにまとめたCFileを読込ListBoxにソートして表示
    Open "e:\CFile.txt" For Input As #intFileNo
    Do While Not EOF(intFileNo)
        Line Input #intFileNo, strTextLine
        '空白行を除く
        If Len(Trim$(strTextLine)) > 0 Then
            List1.AddItem strTextLine
        End If
    Loop
    Close #intFileNo

    '後はリストボックス内を検索して同じ物があれば削除する
    'ここの逆引きヘルプの
    'リストボックス内を先頭一致検索・完全一致検索(APIを使って)
    'を使ってもいいし、ソートしているので隣り合ったものが同じか
    '同かを調べ、同じなら削除する
End Sub

因みに、上記方法は、CSVファイルでも同様に操作できます。

投稿時間:2003/04/28(Mon) 02:45
投稿者名:Say
Eメール:
URL :
タイトル:
Re: テキストファイルのマージ
> AファイルとBファイルがあったとして、
> これらのファイルを1つにする方法を教えて下さい。
> たとえば、名簿の氏名などだとして、AにもBにも存在するものは
> 重複削除するやり方もお願いします。

csvなら、テキストDBとして開いてUNIONする、という方法もあります。