Excel VBA 質問スレッド №1292 (解決済)
csvの出力をしたいのですが、型の不一致にハマりました…。
投稿者 : 猫猫猫 投稿日時 : 2023/02/24(Fri) 23:28:40 OS : Windows 11 EXCEL : Excel 2021
テーブルに入力した任意の表(見出:A10~BG10、11行目以下は無制限とする。)をCSVに出力しようとしています。しかし、47行目『csvVal = """" & outputAry(i, j) & """"』にて型の不一致により詰まりました。実行時エラー13です。なお、元の『実行管理表』シートについては、テーブルを用いて、列ごとに関数や文字が入っています。
以上の事を踏まえ、修正点をご教授頂けると幸いです。
テーブルに入力した任意の表(見出:A10~BG10、11行目以下は無制限とする。)をCSVに出力しようとしています。しかし、47行目『csvVal = """" & outputAry(i, j) & """"』にて型の不一致により詰まりました。実行時エラー13です。なお、元の『実行管理表』シートについては、テーブルを用いて、列ごとに関数や文字が入っています。
以上の事を踏まえ、修正点をご教授頂けると幸いです。
Private Sub CSV_OUTPUT_Click()
'出力対象シートを定義
Dim csvSh As Worksheet
Set csvSh = ThisWorkbook.Worksheets("実行管理表")
'対象シートの1列目の最終行を取得
Dim csvLastRow As Long
csvLastRow = csvSh.Cells(csvSh.Rows.Count, 1).End(xlUp).Row
'1列目から100列目の1行目から最終行までを定義
Dim csvRng As Range
Set csvRng = csvSh.Range(csvSh.Cells(10, 1), csvSh.Cells(csvLastRow, 100))
'対象範囲の値を配列に格納
Dim outputAry As Variant
outputAry = csvRng.Value
'保存ファイル名を定義
Dim outputFile As String
Dim myDay As Long
Dim myTime As Long
myDay = Format(Date, "yyyymmdd")
myTime = Format(Time, "hhmmss")
'outputFile = "C:\work\CSV出力\outputSample.csv"
outputFile = Application.GetSaveAsFilename(myDay + myTime, "CSV(*.csv),*.csv", , "ファイル出力")
'空番号を取得
Dim csvNum As Long
csvNum = FreeFile
'書き込みのためにファイルを開く(ファイルがなければ作成される)
Open outputFile For Output As #csvNum
Dim i As Long
Dim j As Long
Dim csvVal As String
csvVal = ""
'行方向の要素数分ループ
For i = LBound(outputAry, 1) To UBound(outputAry, 1)
'列方向の要素数分ループ
For j = LBound(outputAry, 2) To UBound(outputAry, 2)
'シートの値を配列から定義
csvVal = """" & outputAry(i, j) & """"
'値をファイルに書き込み
If j = UBound(outputAry, 2) Then
'最終列なら、「;」をつけない(デフォルトで改行コードが付与される)
Print #csvNum, csvVal
Else
'最終列でなければ、値の後に「","」をつける必要がある。そして末尾に「";"」を付与し改行なしで書き込む
Print #csvNum, csvVal & ",";
End If
Next
Next
Close #csvNum
MsgBox ("CSVが出力されました。")
End Sub
スポンサーリンク
[返信 1] Re : csvの出力をしたいのですが、型の不一致にハマりました…。
投稿者 : packt 投稿日時 : 2023/02/25(Sat) 07:45:14
エラー値が混ざってるからではないでしょうか?
エラー値が混ざってるからではないでしょうか?
[返信 2] Re : csvの出力をしたいのですが、型の不一致にハマりました…。
投稿者 : 猫猫猫 投稿日時 : 2023/02/25(Sat) 09:32:52
■[返信 1] packtさん(2023-02-25 07:45:14)の記事
> エラー値が混ざってるからではないでしょうか?
本当だ…。データ量が多くて見落としていました。ありがとうございます!!
■[返信 1] packtさん(2023-02-25 07:45:14)の記事
> エラー値が混ざってるからではないでしょうか?
本当だ…。データ量が多くて見落としていました。ありがとうございます!!
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2026-04-05 11:32:52 )