• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAにてテキスト出力がうまくいきません)

エクセルVBAでテキストファイルへの出力がうまくいかない

このQ&Aのポイント
  • エクセルVBAを使ってテキストファイルにデータを出力する際に問題が発生しています。行ごとに処理を行い、指定された行から次の指定行までのデータを取得し、ファイルに出力するプログラムを作成していますが、うまく動作していないようです。
  • 具体的には、指定された行と次の指定行までのデータを取得する処理が正しく行われていないため、テキストファイルに出力されるデータが正しくない状態になっています。また、ファイルの出力も1つのファイルしか書き込まれないという問題もあります。
  • 改善点としては、ループ処理の条件式やカウンタの増加方法、ファイルのオープンとクローズのタイミングなどを見直す必要があります。また、データの取得方法や出力方法も確認し、適切な処理を行うように修正する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

1回しか回らない理由 > If i > 70 Then >   Exit Sub > End If Exit Sub では無くて、Exit Forでしょう。 せっかくForループで廻しているのに、jでDoループ作るのは??? Do While Cells(i + j, 1) <> "-" の外(前)側でファイルオープンしないと、同じファイル上書きしますぞ。

tenjotakai
質問者

お礼

回答ありがとうございます。 Exit For ですね。ちゃんと回るようになりました。 >せっかくForループで廻しているのに、jでDoループ作るのは??? 1,Cells(i,1)が"-"かどうかを判定 2,もし"-"ならi+2番目をファイル名にする 3,Cells(i+j,1)が"-"じゃない間、2のファイル名のファイルに1行ずつプリントしていく(j++) 4,Cells(i + j,1)が"-"だったらループを抜けて、i = i + j番目からまた1の判定をしていく というアルゴリズムでやろうと思ったのですが… 的外れなことをやってるんでしょうか… ファイルのオープンとFileNumberの代入式をループの外に出したら、Print の#FileNumberが不正だと言われました。 がんばってみます。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

Option Explicit '' 変数の宣言をチェックしてくれるキーワード Sub tepa()  Dim strFilename As String  Dim FileNumber As Integer  Dim strREC As String    Dim i as long  For i = 1 To 70   '' 7行でワンセット×10セットの狙い撃ち   If Cells(i, 1) = "-" Then    i = i + 2    strFilename = Cells(i, 1) & ".txt"    FileNumber = FreeFile    Open strFilename For Output As FileNumber   Elseif Cells(i, 1) = "" Then   '' スペース行判定がちょっとちがうかも。    close   Else    Print #FileNumber, Cells(i, 1)   End If  Next End Sub

関連するQ&A