このブログで言いたいことは、
PWで保護されたExcelファイルだって、VBAなら、ボタン一発でインポート
目次
散らかったExcelファイルをACCESSに集結
こんにちは。伊川(@naonaoke)です。
今回は、実際、私が実務で利用しているコードを紹介します。
実務では、あるあるですが、いろんなドライブのいろんなフォルダに、
Excelが散らかっています。
このExcelを集計の度に開いて、集計をするなんて、なんて無駄なのでしょう。
こんなことありませんか?
はっきり言って時間の無駄です。
しかも、ExcelはPWで保護されています・・・・・・
たれだ、これを作ったのは!
せめて、フォルダくらい、統一しろ!
こんな気持ちをVBAが解決してくれます。
このブログは、こんな人にお勧め
- ExcelのファイルをACCESSにまとめたい人
- コピペをするのが面倒な人
- Excelを全部開いて、集計するのがイヤな人
解決
自分自身で使っていますが、便利です。しかし、Excelの場所を毎月変更する必要がありますが、
毎回、パスワードを入力するよりマシです。
こんなに便利なVBA
初心者の頃は、パスワードで保護されたExcelを開くことなんてできないと思っていました。
しかし、人間、勉強すればできるものです。
こんなに、カンタンに、散らかったExcelをACCESSに集結できるとは思いませんでした。
Excelから、ACCESSへ転送することは、散々やりまりましたが、
ACCESSで、Excelのデータをインポートすることはやっていませんでした。
結構カンタンなので、みなさんのスキルにしてください。
ACCESSから、Excelデータをインポート 作業手順 その1 データベース確認
このデータベースとなるtest.xlsxを、ACCESSのMT_testに取込をします。
ACCESSから、Excelデータをインポート 作業手順 その2 コードを確認
正直、ACCESSへインポートすることより、Excelのパスワードを解除する方が難しいかもしれません。
DoCmd.TransferSpreadsheet acImport, , “MT_test”, strDocName, True
ACCESSへインポートするコードはたった一行です。
最後のTrueは、Excelの見出しを取り込む場合に必要になります。
見出しが不要なら、Falseになります。
※ACCESSの時間なので、Excelのパスワードロックを解除する説明は、割愛します。
ただ、そのままコードを利用するこができます。
取込む範囲をしてする場合
DoCmd.TransferSpreadsheet acImport, , “MT_test”, strDocName, True, “Sheet1!W4:AF500”
最後に”Sheet1!W4:AF500″、と記載すると、取込む範囲を指定します。
“Sheet1!W4:AF500″を、変数を使って範囲して指定もできます。
ACCESSから、Excelデータをインポート 作業手順 その3 取込むテーブルに主キーを設定する
取込むデータは、色々なものが重複しています。
担当者に、必ず、重複しているキーがあるか確認しましょう。
そして、主キーを設定することで、重複がなくなります。
重複がなくなると、集計が楽になりますので、時間短縮につながります。
ACCESSから、Excelデータをインポート 作業手順 その3 変なアラートをださない
今回は、MT_testの主キーを名前に設定しています。
仮面ライダーは、重複しているので、登録できません。
その際に、下記のようなアラートがでます。
このアラートが出ると全自動になりません。
DoCmd.SetWarnings False ⇒アラートをださない
DoCmd.SetWarnings True ⇒アラートをだす
このコードを挿入することで、全自動にできます。
ここがポイント
実務では、常に生の問題に立ち向かいます。
そこで、必要になるのは、どれだけ、現段階で、自分の脳ミソに汗をかかせたかという事です。
その汗は、経験なのです。
常に新しい知識を身に着け、経験を時に捨てることも重要です。
要するに、臨機応変な対応が必要なのです。
まとめ
今回は、私の実体験の技を紹介しました。
10年以上、勤めていますが、いまだに、集計で悩むときもあります。
これからも、精進したいと思います。
今回も最後まで読んでいただきありがとうございました。
今回のサンプルファイルは、No204です。
※今回のファイルは、Excelがあるフォルダパスを設定しないと作動しません。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。