- ベストアンサー
[Excel VBA] ODBCによる外部データ取込で書式が変わる。
ExcelのVBAでODBCを使用してiSeriesのデータを取り込み、 シートに貼り付ける作業を行いました。 VB関連は素人ですが、↓を参考にして何とか作成しました。 http://firebird.skr.jp/wiki/Excel%20VBA%A5%B5%A5%F3%A5%D7%A5%EB(ADO%A1%A2ODBC) ところが、iSeriesの中では全角の数字として入っているデータが、 Excelで受信すると表示形式が日付に勝手に変更されてしまいます。 後で書式設定を標準に変えると半角のデータとなってしまいます。 何か解決法はありませんでしょうか? Windows XP Professional SP3 Excel 2003 iSeries v5.4 / v5.2 iSeries Access for Windows v5.2 SI23978
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
サンプル通りに作ったので有れば、ちょっと変更してみてください。 レコード件数が多くても処理が速くなります。(少ない時は、あまり関係ないかも) > row = 2 > While (Not recordSet.EOF) And row < 60000 > For col = 0 To recordSet.Fields.Count - 1 > outPutSheet.Cells(row, col + 1).Value = recordSet.Fields(col).Value 'データ > Next col > recordSet.MoveNext > row = row + 1 > Wend outPutSheet.Range("A2").CopyFromRecordset recordSet, 60000 '列幅を自動調整 必要なければコメントに・・・ outPutSheet.Columns("A:AZ").EntireColumn.AutoFit たぶん、これで治るかと思います。
その他の回答 (2)
- kenpon24
- ベストアンサー率64% (66/102)
書式を文字列に変更しても半角になってしまう場合、 文字列を全角にするコードを書く。 Range(範囲) = strconv(文字列, vbWide) で代入しなおしてあげる。 ただ、1セルの中に全角と半角を混在させたい場合は 少々面倒なことになります。
お礼
回答ありがとうございます。 どうも標準のままだと日付に変更されますが、 予め文字列にしておくと変わらないみたいでした。
- n-jun
- ベストアンサー率33% (959/2873)
データをシートに展開する前に、文字列としたい列は事前に書式を ”文字列”に変更しておけばいいのでは? 変更の仕方はマクロの自動記録でわかりますよ。 違っていたらすいません。
お礼
回答ありがとうございます。 予め文字列にしておくと勝手に日付に変更されることはありませんでした。
お礼
回答ありがとうございます。 その方法を使ってみましたら劇的に速度が速くなり感動しています。 書式も勝手に変わることもなく大変助かりました。