アプリ版:「スタンプのみでお礼する」機能のリリースについて

ExcelのVBAでODBCを使用してiSeriesのデータを取り込み、
シートに貼り付ける作業を行いました。
VB関連は素人ですが、↓を参考にして何とか作成しました。
http://firebird.skr.jp/wiki/Excel%20VBA%A5%B5%A5 …

ところが、iSeriesの中では全角の数字として入っているデータが、
Excelで受信すると表示形式が日付に勝手に変更されてしまいます。
後で書式設定を標準に変えると半角のデータとなってしまいます。
何か解決法はありませんでしょうか?

Windows XP Professional SP3
Excel 2003
iSeries v5.4 / v5.2
iSeries Access for Windows v5.2 SI23978

A 回答 (3件)

データをシートに展開する前に、文字列としたい列は事前に書式を


”文字列”に変更しておけばいいのでは?
変更の仕方はマクロの自動記録でわかりますよ。

違っていたらすいません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

予め文字列にしておくと勝手に日付に変更されることはありませんでした。

お礼日時:2008/07/30 17:29

書式を文字列に変更しても半角になってしまう場合、


文字列を全角にするコードを書く。

Range(範囲) = strconv(文字列, vbWide)
で代入しなおしてあげる。

ただ、1セルの中に全角と半角を混在させたい場合は
少々面倒なことになります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

どうも標準のままだと日付に変更されますが、
予め文字列にしておくと変わらないみたいでした。

お礼日時:2008/07/30 17:28

サンプル通りに作ったので有れば、ちょっと変更してみてください。


レコード件数が多くても処理が速くなります。(少ない時は、あまり関係ないかも)

> 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

たぶん、これで治るかと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

その方法を使ってみましたら劇的に速度が速くなり感動しています。
書式も勝手に変わることもなく大変助かりました。

お礼日時:2008/07/30 17:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています