| 
    
     |  | ▼hana さん: こんばんは。
 
 http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=9123;id=excel
 
 からの流れですね?
 
 ExcelブックをADOで接続してのI/Oは
 色々と制限があるみたいです。
 ADOXを使用してエクスポートブック(私の例でいうExportBK.xls)まで
 作成するようなコードを書かないと数字を数字として登録する事は難しそうです
 (少なくとも私が調べた限りでは)。
 
 しかも、このエクスポートブックをADOで全て操作するようなコードを書かなければ
 なりません(Excelで保存したりすると数値として保存されませんでした)。
 但し、以下のような現象も確認しました。
 
 仮にA列を数値、B列〜V列までは、文字列というエクスポートブック(ExportBK.xls)を考えてみます。
 
 リンクで示したコードを用いて、アクティブシートの
 セルA2が「1」、セルB2列〜V2列にそれぞれ「B」、「C」、・・・「V」が
 入力されていて、これをExportBK.xlsにエクスポートしたとします。
 
 ExportBK.xlsには、上記のデータが追加されると思いますが、
 この時A列の「1」が問題になりますよね。
 文字列の"1"として、登録されています。
 
 これは、書式を触っただけでは、変更されませんでした。
 
 このA列の"1"だけ、
 
 >Sub tesut()
 Dim a As Long
 a = Range("AXX")
 Range("AXX").FormulaR1C1 = a
 >End Sub
 等として、数字の1にしてブックExportBK.xlsを保存してみて下さい。
 
 この状態で再度、エクスポートを行ってみて下さい。
 今度は、A列が数字として登録されているはずです。
 
 結果として、
 直前の行の属性に追加される行が依存しているようなのですが・・・。
 
 後は、既存データの数値化は、エクスポートブック(ExportBK.xls)に対して、
 '=====================================================
 Sub test()
 Set rng = Cells.SpecialCells(xlCellTypeConstants)
 rng.Value = rng.Value
 End Sub
 
 を実行してみて下さい。
 数字として、再登録されると思います。
 
 
 >アクセスからのOutPutで、数値が文字列となってしまっています。
 ↑については、数字が文字になってしまう現象が確認できませんでしたが、
 修正は、上記のコードで可能だと思います。
 
 |  |