Access

EXCEL「数値が文字列として保存されています」をVBAで一気に数値変換する方法

私の場合、よくAccessからExcelにデータ出力をします。

AccessからExcelへ
AccessからVBAでEXCELへ帳票出力するVBAでAccessからExcelにデータ出力する方法は、エクスポートする方法とレコードセットをEXCELファイルにコピーする方法があります。コピーする際も新規ファイルに出力する・テンプレートに出力する方法があります。また1行ずつデータを加工しながら出力する方法もあります。...

何らかの事情で数値が格納されているフィールドの型が文字列だったりすると

Excelに出力した際、「このセルにある数値が、テキスト形式か、またはアポストロフィで始まっています。」という警告が表示されます。

↓↓セルの左上に緑マークが表示されています↓↓

カーソルをあてると「数値が文字列として保存されています」という警告が表示されます。

エラーではないにしてもその後の処理に影響するのでこのままにはしておきたくありません。そこでこの警告を一気に数字に変換する方法をご紹介します。

参考プログラムは自己責任でご利用お願いします。ご利用の前に元データのバックアップを強くおすすめします!

手動で変換する

手動で警告を解除するためには警告が表示されている該当のセルを範囲指定して選択し、

警告マークをクリックして「数値に変換する」でOKです。

ただし、範囲指定する際警告が表示されている最初のセル(範囲の左上)から指定する必要があります。

目視で確認しながら手動で行う場合は問題ないですね!

マクロで変換する

データが可変でどのセルから最初に警告が表示されるか不明な場合(目視で確認せずに一気に処理したい場合)はマクロで一気に処理したいですね。

実は警告アイコンから処理する以外に列を選んで「区切り位置」を設定する方法もあります。

これを手動で実行する場合、以下の手順となります。

  1. 対象の列を選択
  2. データタブの【区切り位置】をクリック
  3. 完了ボタンをクリック(諸々の設定は不要)

この方法は複数列を指定することができないので列数が多い場合は面倒です。

複数列を指定すると、「一度に変換できるのは1列だけです。範囲には複数の行を選択できますが、列は1列しか選択できません。1列だけのセル範囲を選択し、再度実行してください。」とエラーが表示されます。

そこで、一気にマクロでやってしまいます。

サンプルコードをコピペでご利用くださいね。

 

このマクロを実行すると、文字列として格納された数値列をすべて数値に変換することができます。

尚、途中に文字列のセルがあっても問題ないです。

この方法は列を選んで区切り位置を設定しているだけです。

【cells(〇,〇).value = cells(〇,〇).value】のように

値をセットしなおすという方法でも解決できますがとても遅いのでおすすめできません。

Accessから変換する

この方法を利用して、AccessからExcelにデータ出力した直後にAccess側から処理を実行してしまうと、Excelのマクロも使わず処理を完了できます。

Excelのマクロとほとんど変わりないコードですが参考までにサンプルを掲載しておきます。

※列幅自動調整はおまけです(^▽^)/

▼▼以下の記事でも利用しています▼▼

【ACCESS VBA】Excelファイルを取り込んで必要な項目のみに整形したExcelファイルを出力する今回は『ベースとなるExcelファイル(列項目可変)を加工して必要なフィールドだけに整形して新しいExcelファイルを作成する方法』をご...

 

ABOUT ME
アズビーパートナーズ
アズビーパートナーズ
プログラマーと社内SEとしての経験を活かして、 情報システム部門のご相談を承ります。 得意な分野はAccessによる短納期開発、 BIツール(QlikSense/QlikView)の開発です。 現在はCMSを利用したホームページの作成にも力を入れています。
中小企業にこそ必要なセキュリティ対策

日々巧妙化する悪意ある攻撃。狙われるのは大企業だけではありません。

セキュリティ対策が追い付いていない中小企業は犯罪者の恰好の餌食です。

情報セキュリティ部門がない、詳しい人がいない…。

そんな時は全部まとめて外部委託して安心を手に入れる方法がベストです!

\セキュリティ対策をまとめて全部NTT西日本にお任せ!/


資料請求はこちらから