- ベストアンサー
マクロを業務で生かしたい!
私はマクロ初心者・・というか、まだ一度もマクロを作成したことがないのですが(入門書のような書籍は購入して読みましたが)、 ・業務で使用したい ・あれば役に立つ という2点から学習したいと思うのですが、 とにかく何かを作成しなくては始まらないと思い、業務に必要な目的を考えたのですが、素人だからなのか、書店で「逆引き辞典」のようなものを見ても目的のものが一向に見つかりません。 作成したい・あれば役に立つマクロというのは以下のようなものなのですが、以下の目的が達成可能な作成方法、または学習に便利で分かりやすい、初心者にオススメの参考書があれば、VBAに詳しい方に教えていただきたいです。 よろしくお願いします。 #マクロでやりたいこと# ・あるデータベースがあり、定期的に更新される ・更新前の既存のデータベースと、更新後の最新のデータを比較し、 ・差異があれば抽出(例えば、最新データのあるブックの別シートに表示される)
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
・あるデータベースがあり、定期的に更新される ・更新前の既存のデータベースと、更新後の最新のデータを比較し、 ・差異があれば抽出(例えば、最新データのあるブックの別シートに表示される) 少し簡単方法です。(全てをVBAで行うにはかなり難しく長いVBAになります ) 1 エクセルシートで データー>外部データの取り込み で更新したいデータをシートに取り込んでおきます。 2 フォームを表示して適当にボタンでも作成 マクロの記録を開始 3 取り込んだデータのシート全てを選択 別シートにコピイ&貼り付け 4 取り込んだデータのシートに戻って取り込んだデータを選択 データー>データの更新 を実行 マクロの記録を終わり 5 別シートに=IF(最初のシート!A1=コピイしたシート!A1,"",最初のシート!A1) 入れてシートいっぱいにコピイしておく。 ボタンを押すと 更新前のシートを別シートにコピイした後にデータを更新されます。 別のシートにはコピイした更新前のシートと新しく更新したシートの違いがある部分が表示されると思います。 一般機能+関数+VBAの組み合わせ技ですね。 ・業務で使用したい ・あれば役に立つ という2点から学習したいと思うのですが、 であれば 日ごろ入力の作業を簡単に入力にする方法(入力画面の作成) 日ごろ操作しているエクセルをマクロの記録で記述してみる などが入門としては ベターではないかなと思います。 データベースでの作業は 1 入力(手入力のほか別のデータから追加する場合も) もしかしたら今回やりたいことはこれかな?とも思いましたが。 2 検索 3 表示 4 集計 5 印刷 などに分けて考えると簡単ではないでしょうか。
その他の回答 (3)
- pulsa
- ベストアンサー率57% (34/59)
まず、一度も作成した事がないなら、エクセルを使っているなら 何は無くとも『マクロの記憶』ですよ エクセル自体の操作を自動化できなければ、外部のファイルを開いてデータを吸い出して、用事が済んだら別の外部ファイルに書き出すような操作はキビシイでしょうね なので、まずは同一Book上にある二つのシート内容を自動で比較するマクロを作れるようになる事です コレが出来たら、次は複数シートを次々と比較するロジックに実行させるように拡張します そうしたら、別Book同士の比較にさらに拡張します ここまできたら、別Bookへの書き出しはすぐ出来ると思います マクロの記憶と適当な参考書(スパテクみたいなの)1冊あれば、この位はすぐできますよ あとは、マクロの記憶はかなり冗長な書き方をしますので、それを調整、またActiveBook.ActiveSheetって記述がされている事が多いので、それを、ActiveではないシートやBookを扱う方法に変えれば、もう素人脱出です お気に入りのサイトを見つけるのも、学習には役立ちますよ って気付くといつも同じサイトに助けられてるのに、後で気付くんですけど^^; ファイルの更新の確認は、色々やり方がありますが、前回の更新日付を取っておいて、ファイルのプロパティで日付が更新されていれば、比較ロジック実行 なんて、差分チェックの必要があるかをマクロに判断させる方法もありますね コレはさすがにマクロの記憶が出来ないのでヒント Scripting.FileSystemObject 先は長いけど楽しいよ がんばって!
お礼
段階をおってのご説明、非常にわかりやすいし励みになります! 文の最後の「Scripting.FileSystemObject」というのは まだ何のことかもわかりませんが、 解かるように勉強していきます!! ありがとうございましたヽ(^◇^*)/
- n-jun
- ベストアンサー率33% (959/2873)
ANo.1です。 私もVBAの最初のものはmdbファイルからDAOでの抽出と、 ユーザーフォームの作成でした。 当時はサイトも殆ど知らず、手にしている参考書とネット検索で 試行錯誤しました。 結局自分がやりたいことがまるまる書いてある方が少なく、結構 つぎはぎで作っていました。 そしてファイリングを始めていって、わからない部分は自分で調べて つけ足していきました。 まずはいじってみることかな。 (細かい理屈等は後回しにしちゃいましたけど)
お礼
ありがとうございます! まだまだ難しい単語がありよくわからないですが、 私も色々情報を集めて勉強しようとおもいます!
- n-jun
- ベストアンサー率33% (959/2873)
VBAとはAccessVBAの事ですか? 私はサイトの質問コーナーでのやり取りに、首をつっこみながら ExcelVBAをいじってます。 いろんな方の回答を見ていて、同じ事でも色々な方法があるのも 知りました。 そして自分で質問者さんと同じ条件を作成して、コードの動き方も 確認し、ファイリングしてます。
お礼
EXCELです! 質問にあるデータベースとはEXCELですので・・・ 私も色んなVBAのサイトやこの教えてgooなどでも探してみたのですが、「これだ!」というものがなかなか見つからなくて・・・ でもとりあえずいじってみないとダメですかね(^-^;
お礼
わざわざ私の文章から引用して説明していただいて、 とてもわかりやすいです! 関数は少し使ったことがあり、解かったつもりでいたのですが、 今回の目的でも利用できるとは思いませんでした。 まだまだ勉強不足ですね(^-^; 質問文では記述していなかったのですが、 元のデータベースは結構デ-タが多いので関数では動作が 重くなるような気もしますが、 とりあえずやってみようと思います! ありがとうございました(^O^)