• ベストアンサー

マクロを業務で生かしたい!

私はマクロ初心者・・というか、まだ一度もマクロを作成したことがないのですが(入門書のような書籍は購入して読みましたが)、 ・業務で使用したい ・あれば役に立つ という2点から学習したいと思うのですが、 とにかく何かを作成しなくては始まらないと思い、業務に必要な目的を考えたのですが、素人だからなのか、書店で「逆引き辞典」のようなものを見ても目的のものが一向に見つかりません。 作成したい・あれば役に立つマクロというのは以下のようなものなのですが、以下の目的が達成可能な作成方法、または学習に便利で分かりやすい、初心者にオススメの参考書があれば、VBAに詳しい方に教えていただきたいです。 よろしくお願いします。 #マクロでやりたいこと# ・あるデータベースがあり、定期的に更新される ・更新前の既存のデータベースと、更新後の最新のデータを比較し、 ・差異があれば抽出(例えば、最新データのあるブックの別シートに表示される)

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

・あるデータベースがあり、定期的に更新される ・更新前の既存のデータベースと、更新後の最新のデータを比較し、 ・差異があれば抽出(例えば、最新データのあるブックの別シートに表示される) 少し簡単方法です。(全てをVBAで行うにはかなり難しく長いVBAになります ) 1 エクセルシートで データー>外部データの取り込み    で更新したいデータをシートに取り込んでおきます。 2 フォームを表示して適当にボタンでも作成 マクロの記録を開始 3 取り込んだデータのシート全てを選択 別シートにコピイ&貼り付け 4 取り込んだデータのシートに戻って取り込んだデータを選択   データー>データの更新 を実行  マクロの記録を終わり 5 別シートに=IF(最初のシート!A1=コピイしたシート!A1,"",最初のシート!A1) 入れてシートいっぱいにコピイしておく。  ボタンを押すと 更新前のシートを別シートにコピイした後にデータを更新されます。  別のシートにはコピイした更新前のシートと新しく更新したシートの違いがある部分が表示されると思います。 一般機能+関数+VBAの組み合わせ技ですね。 ・業務で使用したい ・あれば役に立つ という2点から学習したいと思うのですが、 であれば  日ごろ入力の作業を簡単に入力にする方法(入力画面の作成) 日ごろ操作しているエクセルをマクロの記録で記述してみる などが入門としては ベターではないかなと思います。 データベースでの作業は 1 入力(手入力のほか別のデータから追加する場合も)   もしかしたら今回やりたいことはこれかな?とも思いましたが。 2 検索 3 表示 4 集計 5 印刷 などに分けて考えると簡単ではないでしょうか。

HAUNTED38
質問者

お礼

わざわざ私の文章から引用して説明していただいて、 とてもわかりやすいです! 関数は少し使ったことがあり、解かったつもりでいたのですが、 今回の目的でも利用できるとは思いませんでした。 まだまだ勉強不足ですね(^-^; 質問文では記述していなかったのですが、 元のデータベースは結構デ-タが多いので関数では動作が 重くなるような気もしますが、 とりあえずやってみようと思います! ありがとうございました(^O^)

その他の回答 (3)

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.4

まず、一度も作成した事がないなら、エクセルを使っているなら 何は無くとも『マクロの記憶』ですよ エクセル自体の操作を自動化できなければ、外部のファイルを開いてデータを吸い出して、用事が済んだら別の外部ファイルに書き出すような操作はキビシイでしょうね なので、まずは同一Book上にある二つのシート内容を自動で比較するマクロを作れるようになる事です コレが出来たら、次は複数シートを次々と比較するロジックに実行させるように拡張します そうしたら、別Book同士の比較にさらに拡張します ここまできたら、別Bookへの書き出しはすぐ出来ると思います マクロの記憶と適当な参考書(スパテクみたいなの)1冊あれば、この位はすぐできますよ あとは、マクロの記憶はかなり冗長な書き方をしますので、それを調整、またActiveBook.ActiveSheetって記述がされている事が多いので、それを、ActiveではないシートやBookを扱う方法に変えれば、もう素人脱出です お気に入りのサイトを見つけるのも、学習には役立ちますよ って気付くといつも同じサイトに助けられてるのに、後で気付くんですけど^^; ファイルの更新の確認は、色々やり方がありますが、前回の更新日付を取っておいて、ファイルのプロパティで日付が更新されていれば、比較ロジック実行 なんて、差分チェックの必要があるかをマクロに判断させる方法もありますね コレはさすがにマクロの記憶が出来ないのでヒント Scripting.FileSystemObject 先は長いけど楽しいよ がんばって!

HAUNTED38
質問者

お礼

段階をおってのご説明、非常にわかりやすいし励みになります! 文の最後の「Scripting.FileSystemObject」というのは まだ何のことかもわかりませんが、 解かるように勉強していきます!! ありがとうございましたヽ(^◇^*)/

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

ANo.1です。 私もVBAの最初のものはmdbファイルからDAOでの抽出と、 ユーザーフォームの作成でした。 当時はサイトも殆ど知らず、手にしている参考書とネット検索で 試行錯誤しました。 結局自分がやりたいことがまるまる書いてある方が少なく、結構 つぎはぎで作っていました。 そしてファイリングを始めていって、わからない部分は自分で調べて つけ足していきました。 まずはいじってみることかな。 (細かい理屈等は後回しにしちゃいましたけど)

HAUNTED38
質問者

お礼

ありがとうございます! まだまだ難しい単語がありよくわからないですが、 私も色々情報を集めて勉強しようとおもいます!

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

VBAとはAccessVBAの事ですか? 私はサイトの質問コーナーでのやり取りに、首をつっこみながら ExcelVBAをいじってます。 いろんな方の回答を見ていて、同じ事でも色々な方法があるのも 知りました。 そして自分で質問者さんと同じ条件を作成して、コードの動き方も 確認し、ファイリングしてます。

HAUNTED38
質問者

お礼

EXCELです! 質問にあるデータベースとはEXCELですので・・・ 私も色んなVBAのサイトやこの教えてgooなどでも探してみたのですが、「これだ!」というものがなかなか見つからなくて・・・ でもとりあえずいじってみないとダメですかね(^-^;

関連するQ&A

  • エクセル2000マクロについて

    シートにデータベースの表を作っています。 このデータベースを元にピボットで5つの作られたシートがあります。 データーベースのシートの中のデータが更新されたら、自動的に 5つの作られたシートもデータを自動更新したいマクロを作る場合は どうすればいいのか教えてください。 5つのシートをそれぞれ選んでピボットのデータ更新ボタンを押さないと 5つのシートのデータが更新されない。 これをマクロで自動で5つのシートのデータを更新したい。 よろしくお願いします。

  • マクロをデザインビューで表示するとエラーが出る

    こんにちは。 Access勉強中の身です。 Access2016で作成したデータベースがAccess2013だと「読み取れない」とでます。 両方win10で作成しました。 Access2013でも、マクロボタンを押すと問題なく動作しますが、 「マクロをデザインビューで表示する」を選択し、閉じた後、マクロボタンを押すと以下がポップアップされます。(追加・削除等、内容を更新しなくても、表示するだけで、その後以下がポップアップされる) 「Microsoft Access データベースエンジンでは Aテーブルのデータを読み取ることができません。このデータを読み取るには、バージョン16.0.7124.1000以降が必要です」 ↓ マクロのシングルステップ エラー番号2950 こちらの表示後は、Aテーブルでも同様にポップアップされ、閲覧・更新できなくなります。 テーブル、フォーム、クエリ、リレーションシップは「マクロをデザインビューで表示する」前までは問題なく動作し、追加、訂正等もできます。 マクロも問題なく動作します。 「マクロをデザインビューで表示する」と、上記ポップアップが出てきて、閲覧・更新不可となります。 マクロの内容を更新したいのにできなくて困ってます。 対処法が分かる方いらっしゃいますか。

  • Accessのマクロの最適化

    Accessでマクロを1つ新規作成します。 作成したマクロのアクションに、「コマンドの実行」を選択し、 画面下のコマンドには、「データべースの最適化」を選択します。 しかし、「マクロまたは、VisualBasicコード実行中に開いているデータベースを最適化することはできません。」とメッセージが出ます。 メッセージの意味はわかりますが、そもそも、なぜ、マクロに、 「データベースの最適化」を選択することができるのでしょうか? できないんじゃ意味ないんじゃないですか?

  • エクセルのマクロで教えてください

    すみません。もし教えていただける方がいらっしゃればお願いいたします。以下のようなエクセルのデータがあるとします。 この中で,同じ担当者の最新の日付の行のみを抽出したデータのシートを作りたいのです。以下のデータであれば,2,3,5,6,8,9行目を削除するマクロを作成したいのですが,どのようなマクロを作成ればよいのでしょうか。 A     B    C 1  担当者   日付   金額 2 たなか   8/1   10,000 3 たなか   8/10   15,000 4 たなか   8/21   20,000 5 さとう    8/2    8,000 6 さとう    8/12   12,000 7 さとう    8/22   15,000 8 やまだ   8/1     9,000   9 やまだ   8/7    12,000 10やまだ   8/15   18,000

  • Access、マクロの最後に最適化を入れられる?

    Access2003を使用しています。 マクロの最後に最適化を組み込むことは可能でしょうか? マクロの内容は、 1、昨日のデータ抽出に使用した作業用テーブル内のデータを削除する 2、本日のデータをインポートしてくる 3、1で空にしたテーブルに、2のデータを追加クエリで流し込む 4、2でインポートしてきたデータ(テーブル)を削除する です。 この後、「5、データベースを最適化する」を入れてマクロを終わらせたいのです。 インポートしてくるテーブルは8個あり、1テーブルに20万を超すデータが入っているため、インポート、追加をやっているうちに、データベースの大きさが1,126,528KBにもなってしまいます。 この後、この大容量のテーブルを使って、大容量のテーブルを作成しているうちに・・・・データベースは更に大きくなってしまい困っています。 マクロの最後に「ここで一旦最適化」を入れられないでしょうか? このデータベースを使用するのは自分で使用するものでないため、「マクロ終了後ツールボタンで最適化する」ということが出来ません。 また、VBAはわからないので・・・出来ればマクロなどで対応できると助かります。 どなたか詳しい方、教えてください!

  • マクロの組み方

    初めまして。Excel2003のマクロについて質問です。売上のデータベースがあって、各データには製品コードが付されています。コードのままだと直感的にどの製品か分かりづらいので、例えば”100”というコードは”A製品””200”というコードは”B製品”というようにマクロにより自動的にデータベースを変換、若しくは列に”製品名”を自動で追加するようなことが行いたいのですが、全くの初心者であるためどうやればよいか分かりません。 どなたかプログラムの方法を教えていただけないでしょうか?

  • マクロで更新日表示。。。

    エクセルで今日の日付を自動で入れるときは、「=now()」もしくは「=today()」でできますが、開いたシートのデータを更新したときだけ、任意のセルに今日の日付(更新日)が自動で入るようにしたいと思います。(シートを開いてもそのシートを修正しなかったら日付は変わらないようにしたいです) マクロを作成しないとできないと思いますが、なにせマクロ初心者なものでよく分かりません。 シートのどこかのセルが修正されたら、日付を入れたいセルに「ctrl+;」で更新日が入るようなマクロを作ればよいと思うのですが、具体的にどうすれば、このようなマクロが作成できるのでしょうか????

  • マクロによるインポート

    アクセス初心者です。仕事でデータベースを作っているのですが、簡単な物がようやく完成しそうなのですが・・・。だた1つ、マクロを使ったインポートが上手く作動しません。エクセルからアクセスのテーブルにインポートさせたいのですが、マクロでワークシート変換→エクセルからアクセスへの指示を入力し、パス自体も間違えてはいない様なのですが、インポート元のエクセルシートを開いた状態でしかテーブルが更新されません。閉じた状態でマクロを動かしても、エラーメッセージは出て来ないのですが、いざテーブルを開いてみても、インポートされていないのです。更新する前にデータが重ならない様に、テーブルを削除してから、新たにインポートさせる指示にはしてあります。エクセルを閉じた状態でインポートさせるにはどうしたら良いのでしょうか?分かりにい文章で申し訳ありません。どうかお願いします。

  • 『エクセルマクロ 修正のシート反映方法』

    マクロ初心者なので説明不足になっていましたらすみません。 ”エクセル1(大元).xls" と”エクセル2(データ別)”の2つのエクセルがあります。エクセル1(大元)の名称を変えると、エクセル2(データ別)の名称も変わるようにマクロを組みたいのですが。。 例 <大元のエクセル> No.  名称    コード  コード2  納期  1 エクセル学習  1066   WB   4/30  2 ワード学習   1066   WC   5/1  3 エクセル自習  1496   WA   5/3  4 ワード自習   1496   WW   4/30  5 マクロ学習   1785   QW   5/1  6 マクロ自習   1785   CA   5/3  ・・・ <エクセル2(データ別)>*反映させたいエクセルにはコード毎にシートが作成されています。 <1066シート> No.  コード2    名称    コード     1   WB   エクセル学習   1066   2   WC   ワード学習    1066   ・・・・ 大元の名称を ”エクセル学習”→”エクセル学習09”に変えた場合、 <エクセル2(データ別)>の同じコードシート、コード2の一致箇所の名称が 自動的に変わるマクロを作成したい。(修正するのは名称のみです。) これをマクロ化することは可能でしょうか? また、<大元のエクセル>にはデータが800行あります。 大元の名称を修正することにより、コード別のシートも検索して変えられるようなマクロの組み方は可能なのでしょうか?? どうかご指導お願いいたします

  • EXCELのマクロについて

    マクロについて質問させてください。 商品コード、商品名、ケース入数、ロケーション、WMS在庫数、実在庫数、在庫差異 の順でAからHまでデータがあります。 商品コード毎で1行ずつで全部で6000行程あります。 実在庫数と在庫差異以外は既にデータが入力されており棚卸を実施した後に実在庫数へ入力、関数を入れて在庫に差異があれば表示されるというようなものです。 但し、かなりのデータ量で1人での入力は時間が掛かりますので4名で入力業務を行うことになりました。 元のファイルをコピーし4名で入力し始めたのは良いのですが、入力し穴だらけになったらファイルを元のファイルに合算する方法がわかりません。 手作業では骨の折れる作業ですし、正確性に欠けます。 そこでマクロを使ってそれぞれの入力したファイルから元のファイルにデータが自動で移行するようにしたいのです。 以前、マクロを少しかじりましたが私の知識では作ることが出来ませんでした。 どなたかお力添え頂けると助かります。 宜しくお願い致します。

専門家に質問してみよう