VBからExcelに出力するには??

解決


uky  2004-06-29 19:52:16  No: 84265

VBのtextに入力された文字をExcelに出力したいのですが、どうしても同じセルに書き込んでしまいます。どなたかセルを1つずつ表示させる形式で出力できる方法をご存じないでしょうか?


nanashi  2004-06-29 19:56:05  No: 84266

現在Excelにはどのように書き込んでいるのでしょうか?
ソースを掲示されてる方が回答しやすいんですが。


uky  2004-06-29 20:02:52  No: 84267

えっと、以下のようにプログラムしています。

Private Sub Command1_Click()
 Dim sei(50) As Integer
 Dim jidai(20), toti(20), koto(20), hito(20) As String
      Open "C:\hyou\his.csv" For Output As #1
        i = i + 1
        jidai(i) = Text1
        sei(i) = Text2
        toti(i) = Text3
        koto(i) = Text4
        hito(i) = Text5
        Print #1, jidai(i), ",", sei(i), ",", toti(i), ","
                  ,koto(i), ",", hito(i)
      Close #1
End Sub


nanashi  2004-06-29 20:32:12  No: 84268

どこから突っ込んでイイやら……f^_^;

まず、これはExcel形式ではなくCSV形式(カンマ区切りのテキストファイル)です。

> Dim jidai(20), toti(20), koto(20), hito(20) As String
これはhito()以外は全てVariant型の配列になってます。

> jidai(i) = Text1
省略するのはバグの元になります。

    jidai(i) = Text1.Text

とした方が良いです。

> Print #1, jidai(i), ",", sei(i), ",", toti(i), ",",koto(i), ",", hito(i)
カンマで区切ると無駄なスペースが入ります。

    Print #1, jidai(i) & "," & CStr(sei(i)) & "," & toti(i) & "," & koto(i) & "," & hito(i)

変数iはどこで指定しているのでしょうか?
まァ、どこで指定していたとしてもこのプロシージャ内での
> Dim sei(50) As Integer
> Dim jidai(20), toti(20), koto(20), hito(20) As String
この宣言自体、配列にしている意味が全くありませんが……。

で、質問の同じセルに書き込むと言うのは、
> Open "C:\hyou\his.csv" For Output As #1
ここでテキストファイルを上書きしているからです。
テキストファイルに追加するなら

    Open "C:\hyou\his.csv" For Append As #1

として下さい。


uky  2004-06-29 20:43:40  No: 84269

わかりました。nanashiさんアドバイスありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加