VB6で、タブ区切りのデータをファイルに貼り付ける方法

解決


VB6初初心者  2005-10-31 18:00:54  No: 127155  IP: [192.*.*.*]

2回目の投稿をさせて頂きます。

ご教授の程、宜しくお願いいたします。

①  VB6にて、テキストファイルをEXCELにてOPEN

②  VB6内のstring変数にタブ区切りの文字列を作成

③  ②で作成した変数を①でOPENしたファイルに貼り付け

④  ①のファイルをEXCELでクローズ

上記処理において、クローズしたファイルをEXCELで開いた時に
EXCELが正常にタブ区切りデータを各セル毎に表示する為には
③の処理をどのように行なえばよいでしょうか?

色々試したのですが、ひとつのセルの中にタブ区切りのデータが全て
入力されてしまいます・・・

宜しくお願いいたします。

編集 削除
ガッ  2005-10-31 18:17:16  No: 127156  IP: [192.*.*.*]

「タブ区切りデータを貼り付ける」のは面倒かもしれませんが、
「一つ一つのセルに値を入れていく」のは簡単ではありませんか?
私なら後者を考えると思います。

編集 削除
VB6初初心者  2005-10-31 18:19:25  No: 127157  IP: [192.*.*.*]

ご返答ありがとう御座います。
今回、プログラムの修正を行なっています。
既存処理は既に、変数にタブ区切りのデータを作っている為
その部分を修正するのは、作業ボリュームがかかってしまう問題が
あり、今回のような質問を提出させていただきました。

編集 削除
いな  2005-10-31 18:21:19  No: 127158  IP: [192.*.*.*]

>2回目の投稿をさせて頂きます。

1回目の投稿で指摘されなかったかもしれませんが、○数字は
機種依存文字ですので、インターネット上での使用は控えましょう。

>クローズしたファイルをEXCELで開いた時
開くのは、プログラム?それともユーザの操作?

編集 削除
VB6初初心者  2005-10-31 18:27:16  No: 127159  IP: [192.*.*.*]

ご返信、ありがとう御座います。

>1回目の投稿で指摘されなかったかもしれませんが、○数字は
>機種依存文字ですので、インターネット上での使用は控えましょう。

ご指摘ありがとう御座います。
今後、気を付けます。

>開くのは、プログラム?それともユーザの操作?

開く操作は、プログラムで行ないます。

編集 削除
ガッ  2005-10-31 18:39:53  No: 127160  IP: [192.*.*.*]

うーん…例えば、こんなことが出来ます。

s=<タブ区切りの文字列>
for each v in split(s,vbtab)
    debug.? v 'このvをセルに書いて行ったり。
next

後、たしかExcelでタブ区切りのファイル(tsv)を開くことが出来た気がするので…
タブ区切りファイルとして読み込ませるとか…?

編集 削除
ガッ  2005-10-31 18:43:52  No: 127161  IP: [192.*.*.*]

追記です。

タブ区切りデータをテキストファイルに保存して、
拡張子をxlsにしてみたところ、
Excel(Excel97)で普通に表示されてしまいました…
あんまり信用は出来ませんが、とりあえず(ぇ

編集 削除
VB6初初心者  2005-10-31 18:54:54  No: 127162  IP: [192.*.*.*]

ガッ さん回答ありがとう御座います。

>s=<タブ区切りの文字列>
>for each v in split(s,vbtab)
>    debug.? v 'このvをセルに書いて行ったり。
>next

これは、一度作成したタブ区切りデータを1つ1つ切り出す
と言う事ですね?

この場合、シートを選択する上で、列(A,B,C)を指定する場合
列の指定を数字で指定する事が可能でしょうか?

タブ区切りデータの数は動的ですので
ソース上に、A,B・・と指定するのはかなり辛いかと
思いまして・・・

編集 削除
ガッ  2005-10-31 19:13:54  No: 127163  IP: [192.*.*.*]

えーと例えば、

Option Explicit
'Microsoft Excel ?? Object Library を使います
Private xlsApp              As Excel.Application

Private Sub Form_Load()
    Dim i                   As Long
    Dim k                   As Long
    Dim xlsWorkBook         As Excel.Workbook
    
    Set xlsApp = New Excel.Application
    xlsApp.Visible = True
    Set xlsWorkBook = xlsApp.Workbooks.Add
    With xlsWorkBook
        .Sheets.Add
        With .Sheets(1)
            For i = 1 To 10
                For k = 1 To 10
                    .Cells(i, k) = "i*k=" & i * k
                Next
            Next
        End With
    End With
    
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    xlsApp.DisplayAlerts = False
    Call xlsApp.Quit
    Set xlsApp = Nothing
End Sub

の様に…ですか?
すみません、なんか誤爆してる気がします。

編集 削除
ガッ  2005-10-31 19:15:54  No: 127164  IP: [192.*.*.*]

あ、後オートメーションは手違いを起こすとメモリ上に操作対象のアプリケーションが延々残る可能性がありますので、
花ちゃんさんのサイトなどで色々お調べ下さいませ。
VBレスキュー(花ちゃん):
http://www.bcap.co.jp/hanafusa/index.html

※多分私のは間違っている…気がします。

編集 削除
VB6初初心者  2005-11-01 15:30:24  No: 127165  IP: [192.*.*.*]

ガッ さん度々のご回答ありがとう御座いました。

結局、セルの先頭にタブ区切り文字列を貼り付け
最後に、区切り位置の変更を行う事で、ループを回し
セル一つ一つに貼り付ける方法を回避する事が出来ました。

度々のご教授ありがとう御座いました。

編集 削除