QA@IT
«回答へ戻る

回答を投稿

回答ありがとうございます。
サンプルのコードを元に、1レコード,1フィールドごとに値をセットする形式に修正してみたのですが、結果は同じでした。

    With dstSheet
        .UsedRange.ClearContents
        .Range("A1").CopyFromRecordset objRS
    End With

修正版

    With dstSheet
        .UsedRange.ClearContents
        iFld = 1
        iRow = 1
        While Not objRS.EOF
            iFld = 1
            For Each objFld In objRS.Fields
                If (iRow = 1) Then
                    .Columns(iFld).NumberFormatLocal = "@"
                End If
                .Cells(iRow, iFld).Value = objFld.Value
                iFld = iFld + 1
            Next
            iRow = iRow + 1
            objRS.MoveNext
        Wend
    End With

エラーデータについては念のため再度アップロードしました。
[サンプルデータ] [http://firestorage.jp/]

 尚、現時点ではCSVファイル EXCEL.Workbooks.OpenText で開き、クリップボード経由で目的のワークシートにデータをセットする形で対応しています。

ただ、

  • メモ項目内の改行が正しく扱えない(メモの改行でレコードが分割される)ため、メモの改行コードを変換して読み込む等の手段が必要。
  • OpenText メソッドの FieldInfo パラメーターを設定しておかないと数値コード項目等が勝手に書式設定されてしまう。

このような問題があったため、思ったより面倒な対応となっています。

回答ありがとうございます。
サンプルのコードを元に、1レコード,1フィールドごとに値をセットする形式に修正してみたのですが、結果は同じでした。

旧
```ここに言語を入力
    With dstSheet
        .UsedRange.ClearContents
        .Range("A1").CopyFromRecordset objRS
    End With
```

修正版
```ここに言語を入力
    With dstSheet
        .UsedRange.ClearContents
        iFld = 1
        iRow = 1
        While Not objRS.EOF
            iFld = 1
            For Each objFld In objRS.Fields
                If (iRow = 1) Then
                    .Columns(iFld).NumberFormatLocal = "@"
                End If
                .Cells(iRow, iFld).Value = objFld.Value
                iFld = iFld + 1
            Next
            iRow = iRow + 1
            objRS.MoveNext
        Wend
    End With

```

エラーデータについては念のため再度アップロードしました。
[[サンプルデータ](http://firestorage.jp/download/52307c1da9b5cadaf039c900252ccef9b4b262a8)] [[http://firestorage.jp/](http://firestorage.jp/)]

 尚、現時点ではCSVファイル EXCEL.Workbooks.OpenText で開き、クリップボード経由で目的のワークシートにデータをセットする形で対応しています。

ただ、
- メモ項目内の改行が正しく扱えない(メモの改行でレコードが分割される)ため、メモの改行コードを変換して読み込む等の手段が必要。
- OpenText メソッドの FieldInfo パラメーターを設定しておかないと数値コード項目等が勝手に書式設定されてしまう。

このような問題があったため、思ったより面倒な対応となっています。