• ベストアンサー

ACCESSでのエキスポート

ACCESS2000からEXCEL2000にエキスポートすると、セルの内容に'がついてしまいます。 EXCEL側でこれを消そうとして、RIGHT関数や['] →[ ](クォーテーションからスペースへの置換)を使っても消すことができません。 おかげでvlookup関数にうまくこの列がマッチングされないのですが、何か良い方法はないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
noname#7749
noname#7749
回答No.1

> EXCEL側でこれを消そうとして、RIGHT関数や['] > →[ ](クォーテーションからスペースへの置換)を使っても消すことができません。 このシングルクォートは文字列の一部ではなく、制御コードなので、値 (Valueプロパティ) として認識されないのです。 対症療法的な回避手段になりますが、FormulaR1C1プロパティにValueプロパティを代入すれば、一応シングルクォートは消せます。 ただし、以下の2点に注意する必要があります。 (1) 数式が埋め込まれたセルは除外して処理する。 → 数式の有無は、Formulaプロパティ <> Valueプロパティ で判断できます。 (2) 文字列として扱うべき項目が数値に変換されないよう留意する。(例: 電話番号の先頭のゼロが消失する) → 事前に NumberFormatLocal = "@" とすれば回避できます。 以上の処理を全データに対して実施するとなると、データ量が多い (10,000件以上のオーダー) 場合、それなりの時間が掛かります。 小手先の対症療法的な手段で対処するより、抜本的な解決策を施したほうが賢明といえます。 具体的には、CopyFromRecordsetメソッドでExcelに出力すれば、シングルクォートは付加されませんし、スループットも悪くありません。

murachan
質問者

お礼

詳しいご説明感謝いたします。 やはりVBAで出力を行わないといけないのですか。 VBAに限らず、ACCESSの初歩から勉強できる良い教材はありますか? 経験者の方からは、日経BPの本が良いという話は聞くのですが。