- ベストアンサー
ExcelマクロでCSV出力する方法
- Excelマクロを使用して、指定のデータをCSV形式で出力する方法について説明します。
- マクロでは、「データ」シートのA3からO列の最終行までのデータを取得し、指定のパスにCSVファイルとして出力します。
- また、A列が空白である行は無視され、出力されないようにするロジックの追加方法も説明します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
For intRow = 3 To .Range("a" & Rows.Count).End(xlUp).Row 'この行も一部変更しているので注意してください。↑ If Cells(intRow, 1).Value <> "" Then Print #1, .Cells(intRow, 1) & "," & .Cells(intRow, 2) & "," & .Cells(intRow, 3) & "," & .Cells(intRow, 4) & "," & .Cells(intRow, 5) & "," & .Cells(intRow, 6) & "," & .Cells(intRow, 7) & "," & .Cells(intRow, 8) & "," & .Cells(intRow, 9) & "," & .Cells(intRow, 10) & "," & .Cells(intRow, 11) & "," & .Cells(intRow, 12) & "," & .Cells(intRow, 13) & "," & .Cells(intRow, 14) & "," & .Cells(intRow, 15) End If Next intRow にしてみてください。
その他の回答 (3)
- kmetu
- ベストアンサー率41% (562/1346)
ふと思ったのですが 該当コードを With Sheets("データ") と End With の中に入れ込んでますよね
- kmetu
- ベストアンサー率41% (562/1346)
2000でもいけると思ったのですが… For intRow = 3 To .Range("a" & Rows.Count).End(xlUp).Row ↓ For intRow = 3 To .Range("A65535").End(xlUp).Row If Cells(intRow, 1).Value <> "" Then ↓ If Range("A" & intRow).Value <> "" Then に変更したらどうなるでしょう。
- imogasi
- ベストアンサー率27% (4737/17069)
Print #の塊をまたぐ形で、 For intRow ・・・ If セルが空白でなければ Print #1、・・・ End If Next intRow とするだけでは? 質問のコードはどこかを引き写したのかな。 質問のコード内容と釣り合わない質問だな。 1-15列まで途切れないらしいから For j=1 to 15 s=s & Cells(i,j) & "," Next j s=Left(s,Len(s)-1) とネストすれば、読み易くなるのでは。 一々各列を羅列するのは稚拙。 intRowもiにした。
お礼
ご回答ありがとうございました。 全くの初心者で、他のコードを参考に作ったものでして。 一から勉強が必要ですね。
お礼
Excelのバージョンの問題ではありませんでした。 ご回答を参考にマクロを完成させることができました。 本当にありがとうございました。
補足
ご回答ありがとうございます。 教えていただいたとおりに変更してみたのですが、 実行時エラー'1004'; アプリケーション定義またはオブジェクト定義のエラーです。 というエラーメッセージが出てしまいます。 ちなみにExcel2000で実行していますが、問題ありますでしょうか?