エクセルはある程度操作ができるようになりました。現在、アクセスを勉強していますがアクセスがエクセルより優れている点が今一つ実感できません。そこで、アクセス派の方に質問です。
「この点は、アクセスの方が絶対優れているよ。」という使用例がありましたら教えてください。使わないと忘れてしまいますし、どんどん利用していきたいものですからよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

Excel(に代表される表計算ソフト)とAccess(に代表されるデータベースソフト)の違いを一言で言うと,



「同一のものを同一のものとして識別できるかどうか」

ということになるかと思います。

 これだけじゃわかりにくいと思いますので,例を挙げてみます。

 例えば「職場連絡先一覧」という表と,「プロジェクト進行度管理」という表と,「プロジェクト予算管理」という表があったときに,「職場連絡先一覧」表に載っている山田太郎さんは,「プロジェクト進行管理」表のプロジェクトAとBの担当として記されている山田(太)さんと同じ人物である,あるいは「プロジェクト進行管理」表のプロジェクトAというのは「プロジェクト予算管理」表のproject-Aと同じものである,ということを,データベースソフトは意識することができるのです。

 ですから,例えば「プロジェクト予算管理」表からproject-Aを検索し,それを使って「プロジェクト進行管理」表から現在の担当者である山田(太)さんを検索し,さらにそれを使って「職場連絡先一覧」表から山田太郎さんの連絡先を(複数)取り出し,同時に「スケジュール管理」表から山田太郎さんが今日は出張であるという検索結果を得て,その結果プロジェクトAの現在の進行状況に対する問い合わせを山田太郎さんの携帯電話に対して行う,という様な処理を自動化できるようになるわけです。

 これが表計算ソフトだと,例えば「プロジェクト進行管理」表の山田(太)さんと「職場連絡先一覧」表の山田太郎さんが,同一人物なのか似た名前の別人なのかを,確実に弁別することは非常に困難です。

 もちろん,すごく手間をかければ表計算ソフトでも同様のことはできますが,上記のように複数の表を連携させる処理を行う場合,例えば同姓同名の人がいることを想定してプログラムを書かなければいけないなど,データベースソフトに比べるとどうしても処理が煩雑になります。

 また,なにをどれくらい同一のものとして扱うのかということも,データベースソフトでは細かく制御できます。例えば,「鉛筆」を単に「ボールペン」と区別できればいいのか,それとも「三菱の鉛筆」と「トンボの鉛筆」を区別したいのか,それとも「1月20日に納品された三菱の鉛筆」と「2月8日に納品された三菱の鉛筆」を区別したいのかに応じて,その識別の粒度を変えることも,データベースソフトなら可能になります。

 もちろん,こうしたデータベースの能力を活用するためには,十分注意を払ってデータベースを設計する必要があり,したがって事前の準備にかかるコストは表計算ソフトより大きくなります。

 ですから「同一のものを同一のものとして識別する」必要があるような,柔軟で複雑な処理を頻繁に行う場合はデータベースソフトを,単にあるデータを表として整理するだけのシンプルな用途には表計算ソフトを,というように使い分けるものではないかと思います。
    • good
    • 32

元々、出自の違うカテゴリのソフトだけに優れているかどうかという比較自体があまり意味が無いとは思いますが・・・。


あえて、比較するなら使用する場面の問題でしょうね。
表計算とデータベース。
これが、全てを表していると思います。
マトリクス化されたデータを何がしかの式を使って計算するというのが、Excel(というか表計算)の本来の仕事です。
式をセルに埋め込んでおく事によって、データが変わっても、勝手に再計算してくれる。
これは、データ構造があまり複雑でない場合には、非常に有効に機能します。

データベースの場合で同じ事をやろうとすると、かえって手順が複雑になるばかりか、入力用インターフェース・出力用インターフェース等を作るのが非常に面倒になったりします。
データベースの良い点はいくつかあります。
複数の密接に関連するが、管理は別々にしたいようなデータを別々に作成し、簡単に連携したデータを作れる事です。非常に項目数の多いテーブルから、行う処理に必要な項目だけを取り出して、リストにしたり、関連する複数のテーブルから、やはり必要な項目のみを取り出す事も簡単にできます。
極論すれば、まさにこのデータの取り出し(検索と言ってもいい)こそが、リレーショナルデータベースの最大の利点です。
Accessでいうクエリー、データベース一般の用語ではビューといいますが、これを一つ作るとテーブルを新たに作らなくても、テーブルのようにデータを扱えるわけです。

Excelで複数のシートをデータベースの変わりに作り、それらを連携する形で新たなデータの見せ方をするというのは、できない事も無いでしょうが、非常に面倒な作業になるでしょう。

もう一つは、扱えるデータ量(件数)の限界です。
Excelは、縦に約65000、横に600弱程度のデータしか扱えません。
データベースの限界はもっともっと先です。

例えば、営業でも物流でも顧客のデータは必要でしょう。
しかし、営業部と物流部が別々にデータを管理していた場合、顧客に関するデータを同じ社内で二重管理される事になり、無駄が多くなり、データの管理コストも増えます。
しかし、顧客マスタと言う形で共通して管理していれば、そのデータのみをきちんと管理していれば、問題ありません。また、例えば広報部が現在の顧客あてに何か案内を出したいと思ったら、同じデータベースから顧客データを引っ張って来れるわけですよね。
また、特定の顧客に対する今期の売上が知りたい等の要件にも、恐らく別にあるであろう営業の成績管理データベースと、顧客マスタのデータをもとにサクッと引っ張って来れるわけです。

ちょっと、話が大きすぎたかもしれませんが、Accessといわず、データベースとはそんな風に使ってこそ利点が見えます。
単なる台帳で終わる用件なら、Excelの方がはるかに効率的です。
私は、この両者の使い分けは次のような判断を元にしています。
つまり、データの再利用性です。
汎用性を持ったデータ構造を考えておけば、後でいろいろ便利そうだと思うと、Accessに入れます。
その場だけのデータ(例えばある顧客向けの見積もりとかですね)そういった物は、迷わずExcelです。
部下が増えて、勤務表の管理が辛くなった時に、それまでExcelに入力させてた物を、タイムカードアプリをAccessとASPで作成し、その中に部下のメンバマスタ(人事マスタもどきですね)も作ったら、月次の勤怠のレポートは楽になったし、他の要件でもそのマスタが役にたちました。

とまあ、なんだか脈絡なかったでしょうか。
参考になれば幸いです。
    • good
    • 10

Visual Basic(VB)やACCESSでプログラムを組んでいるものです。

一応ACCESS派としておきましょう。
初期のころのACCESSでは、画面入力系のプログラムは使いものになりませんでした。また、ちょっと凝ったものを作ろうとするとACCESSのメリットであるノンプログラミングでシステム構築ができずVBAでゴリゴリ書かなくてはなりませんでした。そんな訳でACCESS嫌いだったのですがどうしても一つだけ捨て難い面があり今でも使用している次第です。それはレポート機能です。以前は、VBでレポートのプログラムを作成するのは非常にやっかいで、それをビジュアルインターフェースで簡単に作成できるACCESSで作成していました。そういう事があり今でもレポートはACCESSを使っています。(今は、VBでもよいツールが出てきてますが...)
それともう一つデータベースを使うならACCESSは便利です。今、ORACLEというデータベースを使って仕事をしていますが、データのチェック用にACCESSのクエリーを使っています。テーブルの項目を選択して条件を設定するだけで必要なデータが、EXCELのリストのように表示、参照できこれは重宝しています。SQL文も自動生成してくれます。(使い方を誤るととんでもない複雑怪奇なものができる場合もありますが...)

私の場合、EXCELはあまり使用したことが無いのでEXCELよりも優れている点についてよくわかりませんが、複数の関係するソースデータを扱う場合は、ACCESSは優れているかと思います。これを足がかりにデータベース、SQLについて学ぶのもいいかなと思います。ACCESSはちょっととっつきにくいですが、テーブル、クエリー、フォーム、レポート、マクロ、モジュール等の関係がわかってくるとおもしろくなると思います。あまり参考にならないと思いますがちょっと書いてみました。
    • good
    • 6

公務員じゃないすけど



大概の仕事ではエクセルとアクセスってのは
やることが違うんで(2つをからめてってのもありますが…)

でも公務員でも人のデータを記憶して行くなら
アクセスなんかだと入力フォームをつくって、記入して
みたいなことできますよ☆

あとは、普通の使い方では
エクセルで入力→アクセスにて読み込み
なんてのできますし、まぁ別物と考えていただければ♪
    • good
    • 3

エクセルとアクセス


http://oshiete1.goo.ne.jp/kotaeru.php3?q=221839
アクセスについて
http://oshiete1.goo.ne.jp/kotaeru.php3?q=210885
アクセスの使い道
http://oshiete1.goo.ne.jp/kotaeru.php3?q=198653
等ここの質問検索で『エクセル アクセス』で検索すると沢山出てきます。

ここからは、私の意見
 在庫管理などのデータベースを使用する物をアクセスに軍配が上がります

参考になれば幸いです
    • good
    • 5
この回答へのお礼

早速、回答いただきましてありがとうございました。
十分な、質問検索してなくて「教えてgoo」ユーザーの方々申し訳ありません。(反省)
仕事がら在庫管理はありません。できれば、公務員関係の仕事で使っている方に利用例を教えていただくと有難いのですが。

お礼日時:2002/03/15 17:46

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qアクセスの使い道

例えば、小さな通信販売のお客さんの台帳を作る場合、アクセスというソフトだと何がよいのでしょうか?エクセルよりも使いやすいのでしょうか?
また、操作はガイドをみれば理解できますか?

Aベストアンサー

通信販売の業務について良く知りませんので、一般的な話として述べさせてもらいます。
単に名簿を管理する程度のことなら、エクセルでも検索や並べ替えの機能ぐらいは持っておりますし、マクロ(VBA)を活用すればそれなりの自動処理も可能ですので、十分対応できると思います。
ただし、エクセルではお客さんそれぞれの情報を単票として表示したり印刷したりするような使い方には向いていません。このような場合にはデータベースソフトが有用です。
ところで、一口にデータベースソフトと言ってもその中にはかなり簡単な処理しかできないもの(その分とっつきやすく、操作の習得も楽)から、アクセスのように相当の作り込みまでできるようなもの(その分ハードルが高い?)があります。単票処理だけが目的ならば、アクセスよりも(私は使ったことがないので、本当のところは良くわかりませんが)ファイルメーカーのようなカード型データベースの方が使いやすいと思います。場合によっては、たとえば年賀状の宛名ソフトなんかを活用しても、それなりのことはできるのではないでしょうか。
それでは、どんな場合にアクセス(のようなリレーショナルデータベース)が有用なのでしょうか。結論から申し上げますと、『複数のテーブル(表)を関連付けてデータベースを構築する』時に有用となります。
これだけではわかりにくいと思いますので、例をあげてみます。たとえば、お客さんの名前、住所、電話番号などの顧客情報の一覧表があり、別に注文ごとの顧客番号、受注日、商品番号などの受注一覧がある場合、アクセスならこれらの表を関連付けて、たとえばあるお客さんの過去の購入履歴を簡単に表示させたり、あるいは新たな注文がきた時に顧客番号を入力するだけで住所や電話番号が記入された発送伝票を印刷したりすることができます。(エクセルで同じ情報を管理しようとすると、表を一つにまとめることが必要ですので、注文ごとに顧客の名前、住所、電話番号などのデータも入れることになり、表が巨大になって、管理が非効率的です。)
また、品目とその在庫状況のテーブルと仕入元データのテーブルを用意してこれらを関連付ければ、(発送伝票の発行で在庫数を減ずるような細工をすることで)在庫がある数量以下になった時点で自動的に発注伝票を印刷するといったことも可能です。
さらにマクロやVBAを使えば、独自のアプリケーションを比較的容易に(とはいってもプログラミング未経験の人には多少敷居が高いか?)組むことができるのも魅力です。
さて、アクセス習得の難易度ですが、完璧に使いこなそうと思うと相当奥が深いといえます。一方で、とりあえず簡単なデータ管理ということでしたら、ひるむことはないと思います。
そうは言っても、これまでまったくデータベースソフトを使ったことがない方でしたら、データ操作のイメージをつかむために、とりあえず簡単な入門書を購入されることをオススメします。その後はオンラインヘルプ(これが基本)やk_ebaさんがご紹介されているようなサイト(探してみるとけっこうたくさんあります)を利用すれば、独学で十分習得可能だと思います。
アクセスはこの価格帯のデータベースソフトとしては特異的なぐらい高機能で、かなり複雑なアプリケーション開発が可能です。(一方でけっこうバグがあり、動作も多少不安定だったりもしますが、少なくともスタンドアロンで使う場合、十分実用的だと思います。)もしもリレーショナルデータベースが業務に有用と思われたなら、アクセスは個人レベルで使う場合、他に選択肢がないと言えるぐらいお勧めです。

通信販売の業務について良く知りませんので、一般的な話として述べさせてもらいます。
単に名簿を管理する程度のことなら、エクセルでも検索や並べ替えの機能ぐらいは持っておりますし、マクロ(VBA)を活用すればそれなりの自動処理も可能ですので、十分対応できると思います。
ただし、エクセルではお客さんそれぞれの情報を単票として表示したり印刷したりするような使い方には向いていません。このような場合にはデータベースソフトが有用です。
ところで、一口にデータベースソフトと言ってもその中にはかな...続きを読む

Qaccessの勉強ができるサイトは?

access初心者です。
データベースを作ろうとしているのですが、
基本がしっかりと身についていないので、
なかなか作れません。
本をみながら勉強してはいるのですが、
チュートリアル本ではないので、(田舎なので売ってない)
基本がよくわかりません。
お薦めのサイトがありましたら、教えてください。

Aベストアンサー

これなら、
魔法使いの開発工房が有名です!
非常に内容がしっかり出来ていて、これだけあれば充分な知識は身につけられます。

http://www.mahoutsukaino.com/

ちなみに、これで学習すれば本はいらないと思う。

参考URL:http://www.mahoutsukaino.com/

Qエクセルとアクセス

エクセルもアクセスも初心者の私ですが、
両方とも関数をつかいますよね。
どちらのほうが一般的に頻度が高いでしょうか?
関数辞典を購入しようと思ったのですが、両方一度には料金がかかってしまうのでどちらかにしたいと思っています。
また、辞典を買わなくても、ネットで関数の辞典みたいなので分かりやすいものがあったら是非教えていただきたいです
よろしくお願いいたしまーす

Aベストアンサー

これから勉強してマスターするのですか?それとも仕事で使うので勉強
するのでしょうか?

何れにしても皆さんが指摘している様にExcelをマスターした後に
Accessを勉強した方がいいです。

両者の違いを一口で言うと目に見える範囲で処理されるのがExcelで
目に見えない部分が多いのがAccessです。(Excelでマクロを
組むと見えないところの処理が出てきますが)

Accessは一応RDB(Relational Data Base)なので敷居は高いです。
他のRDBを使った経験があるのでしたら、検索機能は関数よりもSQLを
駆使した方がより完成度の高いものが出来ます。

verybeeさんの他のソフト知識レベルが判らないの失礼なことを言って
いましたら申訳ありません。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QAccessでvlookupみたいなことはできますか。

Accessで、2つのテーブルがあります。

touroku_m テーブル……ID、登録No、氏名、携帯メール
keitai_m テーブル……ID、登録No、携帯メール

keitai_mの方には、携帯メールフィールドに、アドレスが入力されています。
touroku_mテーブルの携帯メールフィールドは空なので、登録Noを比較して、共通だったらkeitai_mに入力してある携帯メールアドレスをtouroku_mに一気に入れたいのです。

こんなことは可能でしょうか。

Aベストアンサー

レス遅くなってすみません。
えっと、追加クエリはテーブル名を見て追加しますので、追加クエリが実行されるときにtouroku_mの名前のテーブルに追加されます。
なので最初touroku_mという名前のテーブルが名前を変えると、それには追加されませんが、またtouroku_mに戻せば追加されるようになりますよ。
要は追加クエリを実行したいテーブルの名前をtouroku_mにしとけば大丈夫です。

QACCESSに同時アクセス(編集)をしたい

教えてください。
ACCESSのDBに複数のユーザが同時にアクセスして、
データを追加・編集したいのですが、
やはり、不可能でしょうか?

Aベストアンサー

マイクロソフトのアクセスに同時に複数のユーザが同時にアクセスして
データベースを操作することは可能です。いくつかの方法がありますが、
昔私が簡便に行なっていた方法は「テーブルのリンク」です。

あるコンピュータにアクセスでdb1という名前のデータベースを作って
ここにデータを格納しておきます。

他方で別のコンピュータに、アクセスでdb2という名前のデータベースを作ります。

このdb2というデータベースのメニューで

「ファイル」->「外部データの取り込み」->「テーブルのリンク」

というのがありますから、最初に作ったdb1をたどり、リンクしたいテーブルを
選択します。

こうすることにより、db2にdb1のテーブルがリンクされ(リンクテーブルと
呼ばれます。アイコンが通常のテーブルと違います。)、db1に格納された
データをdb2で編集することができます。

db2で、db1からのリンクテーブルを元にクエリーを作成することもできます。
リンクテーブルに対してできないことはテーブル構造の変更くらいで
他のことはだいたいできると思っていいかと思います。

このような形をとれば、ローカルエリアネットワーク内の複数のコンピュータ
から同時に同じアクセスデータベースにアクセスすることは可能かと思います。

このやり方にはおそらく問題もあるだろうと思うのですが、昔私がやって
いた頃は、特段支障もなく業務を行なうことができました。問題は、これを
読んだ他の誰かが指摘してくださるかと思います。

同じレコードに複数ユーザが同じタイミングでアクセスするとややこしい
ことになります。これを回避するためには、db2にワークテーブルを備えておき、
リンクテーブルからレコードを一度db2に格納し、編集を終了したのちに
リンクテーブルのレコードを削除し、ワークテーブルで編集したレコードを
リンクテーブルに追加する、などのルーティンをマクロやVBAで構築するのが
よいかと思います。私はそのようにしていました。

他に、ADOを使う方法などもあります。方法はいくつかありますから、
少し研究してみるといいですよ。(^-^)

マイクロソフトのアクセスに同時に複数のユーザが同時にアクセスして
データベースを操作することは可能です。いくつかの方法がありますが、
昔私が簡便に行なっていた方法は「テーブルのリンク」です。

あるコンピュータにアクセスでdb1という名前のデータベースを作って
ここにデータを格納しておきます。

他方で別のコンピュータに、アクセスでdb2という名前のデータベースを作ります。

このdb2というデータベースのメニューで

「ファイル」->「外部データの取り込み」->「テーブルのリンク」
...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

QSub ***( ) と Private Sub ***( ) の違い

初歩的な質問で申し訳ありませんが・・・

自分でコードを書いていても、イベントが発生したりした時の処理で、コードのウィンドウで上のドロップダウンリストで選択できる時の処理などは自動的に[Private Sub Command1_Click( )]などと出てくるのでそのまま使っています。自分で別途プロシージャーを作成する時は[Sub ****( )]としています。
ですがその違いを理解しないまま、自分で作成する時は[Private Sub]ではなくて[Sub]を使っています。

Sub ***( ) と Private Sub ***( ) の違いは何なんでしょうか?
どなたか説明頂けませんか?
よろしくお願いします。

Aベストアンサー

「Sub」の部分にカーソルを置いて[F1]を押せばヘルプが起動します。
「指定項目」のところに「Public」と「Private」の説明がありますよ。
省略して「Sub hogehoge()」とした場合は「Public」とみなされます。

Publicは「すべてのモジュールから呼び出せるプロシージャ」ということになります。
Privateとすると「同じモジュールの中からしか呼び出せないプロシージャ」となります。

もしExcelをお持ちでしたらExcelのVBEで標準モジュールを追加し、「Sub Test1()」と「Private Sub Test2()」を作成してみてください。
そしてExcelの[ツール]-[マクロ]-[マクロ(Alt+F8)]でマクロ実行のダイアログを表示させてみるとわかります。
ここには実行できるプロシージャの一覧が表示されますが、Test1は表示されているけれどTest2は表示されません。
Test1はPublicで、Test2はPrivateだからです。

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング