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です。なお、元の『実行管理表』シートについては、テーブルを用いて、列ごとに関数や文字が入っています。
以上の事を踏まえ、修正点をご教授頂けると幸いです。



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)の記事
> エラー値が混ざってるからではないでしょうか?


本当だ…。データ量が多くて見落としていました。ありがとうございます!!

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2026-04-05 11:32:52 )
タイトルとURLをコピーしました