Excel VBAを用いて学習ソフトを作る

このQ&Aのポイント
  • Excel VBAを使って学習用のソフトを作成する方法について解説します。
  • Excel VBAを勉強している方におすすめのプロジェクトです。学習用のソフトを作って実践力を身につけましょう。
  • Excelを使ってデータベースを作成し、VBAのマクロを使って検索機能を実装する方法について詳しく解説します。
回答を見る
  • ベストアンサー

Excel VBAを用いて学習ソフトを作る

こんばんは。 Excel VBAを勉強しています。 参考書を一通り目を通して次に何をしようと考えた結果、 VBAや他の言語を勉強するための簡単なソフトを作ることを思いつきました。 自分の案としては参考書や問題集に載っているコマンドやプロパティなどの 解説をあらかじめ疑似的なデータベースに登録しておき、 VBAのマクロを使って入力したワードを検索・表示するというものです。 そこで土台をまずしっかり作りたいのでDBの形式を固めたいのですが、 どのような形式で管理、登録するとよいでしょうか? 例えば現段階では、 別のExcelシート自体をDBとして、 セルごとに、管理番号・所属・名称・説明文・登録日時 の形で管理しようかと思っています。 またはテキストファイルにCSV形式でそのままDB代わりに使う、などです。 データ自体は手入力でコツコツ入れていくつもりなのでレコード数は そこまで増えないと思います。(多くて500行程度?) 別の媒体をDBとして使う案や、追加しておいた方がいい属性などありましたら お金がかからない範囲で教えてもらえるとうれしいです。よろしくお願いします。 ちなみにAccessはPCには入っていません。

noname#198479
noname#198479

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

  • ベストアンサー
  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.3

別にプログラムのロジックなんて特別な存在ではありません。 日常生活で人間がやることをそのままなぞっただけです。 ところがコンピュータはバカだから、人間なら 「そこのドアを開けてきて」と言えばいい所を 「自分の位置を東経135度・北緯35度へ移動して、 右手を25cm前に出して、 右手でドアノブを握って、 右手の手首を右へ70度回転させて、 右手を更に10cm前に出してきて」 と言わないと実行できないというに過ぎません。 ロジックの基本は、「物事の解決手順」です。 それはプログラムの世界とは関係なく、ある程度の 年齢なら、日常生活や学校生活や会社の新人研修 あたりでもう身についていないといけません。 もちろん効率のいい方法やスッキリと片付く方法も ありますが、それはおばあちゃんの知恵袋的な存在 ですよね。あれば助かるけど、無ければ自分の力だけ で泥臭い方法のみで実現できないといけません。 それが「ロジック(物事の解決手順)を考え出す」能力 であり、一番必要とされる能力です。 > その通りですね。ただ今の自分の能力から考えたら > 何を作ったとしても必要性を感じられるプログラムは > できないと思ったのです。今回はとりあえず思いついた > このようなプログラムを組んでみようと思いました。 それはそれで良いのですが、自分でそこまで考えた 上での質問かどうかが鍵です。今の自分の能力さえ 十二分に使ってないという事はありませんか? 質問した時点で考えていたなら、問題点を踏まえた上で、 最初から質問の目的が「実用性」ではなく「自分の能力の 訓練」になっていたはずです。 質問文はもっと変わってこないでしょうか? オブジェクトブラウザと比べて同じような~といった動き を実装したいが出来なかったとか、新しい~な機能を 入れたくて~したが結果~となってしまった。とか 具体的な内容が出てきてもおかしくないです。 少なくとも作った結果どういったものができるかという 青写真はあってしかるべき。そこに必要とか必要じゃないか という観点で、 > 別の媒体をDBとして使う案や、追加しておいた方がいい属性などありましたら という質問が出てくるはず。 要は、日常生活で一般人が出来るあろうレベルで、精査 されてない。自分の脳みそでとことんまで考えていない。 極論を言えば丸投げになる思考パターンが問題なのです。 > 何か別案がありましたら教えてもらえるとうれしいです。 プログラムは学校の勉強ではないので、これといった 唯一の答えはありません。「物事の解決手順」なんて 解決すれば何だっていいのです。そんなものを事前に全部 聞いておこうというのがナンセンス。実際問題、やらなきゃ 覚えないことが私の経験則的にあるのですがどうですか? …自動車の免許等は講義だけで覚えられました? …英語は文法の説明だけで覚えられました? 人間の脳の構造的には、失敗した時に失敗を強く認識する事で その神経経路がリン酸化して次から正しい経路を選択する らしいですよ。(つまり正解ではなく不正解を学習すべき) 結局目的をもっと明確にすべきでは?実用性で言うなら > ただ捨てるのはもったいないので重要な部分や > 忘れやすい部分を残しておきたいと思ったからです。 それがコマンドやプロパティなどの解説だけに収まってる かどうかという点だけで結論は出てしまいます。 役に立たないと思います。 結果として役に立たないだけなら別に構いません。 私は、作ってる途中でどう作るべきか目的を見失う 可能性が高いということを問題と思っています。 目的が達成できないものであり、不明瞭なのですから 当然の結果そうなると思っています。 実用性が目的ではないなら、 > 追加しておいた方がいい属性などありましたら なんてどうでもいいかもしれません。そこに少々穴が あったところで問題になりませんし、むしろそこが なぜ穴となったかを学習すべきです。 > VBAは独学です。 独学というのは特に周りを見る視点を必要とします。 周りを見てますか?プログラムの入門サイトとか Tips 紹介のページの構成を研究しましたか?何が効果的か 更に効果的にするにはどうすればいいか考えましたか? まだまだ他人に質問する前段階で足りてないような気がします。 …とここまで書いた上で何ですが、むしろ 36-jack さんの質問には将来性があります。 > セルごとに、管理番号・所属・名称・説明文・登録日時 具体的な説明を入れようとしている痕跡があちこちに 見えるからです。 他の本当に「丸投げしか出来ない」人の質問はスルーする しかないのですが、この質問に関しては、敢えて時間を掛けて 答えさせて頂きました。「まだ足りない」と。 頑張って下さい。期待してます。

noname#198479
質問者

お礼

こんなに親身になって回答してもらったのは初めてです。 確かにおっしゃるとおりです。文章にも矛盾がありましたね。 始めてもいないのに失敗をめんどくさがって質問するのはよくないですね。 実際にこの回答の中にもわからない単語がいくつかあります。 丸投げと言われない質問ができるようもっと経験してからわからないところは 質問しようと思います。 ありがとうございました。

その他の回答 (2)

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

コマンドやプロパティなどの解説だけで学習できるのかという 疑問が残るのと、オブジェクトブラウザとヘルプ(MSDN)が そのものなので、必要性から言えばほぼ無いと思うのと。 逆に1つのお手本があるのですから、参考にしてみても いいかもしれません。

noname#198479
質問者

お礼

>コマンドやプロパティなどの解説だけで学習できるのかという 疑問が残るのと、 確かにそうですね。これを作ろうと思ったもうひとつのきっかけとして溜まった書籍を処分しようと思っており、ただ捨てるのはもったいないので重要な部分や忘れやすい部分を残しておきたいと思ったからです。VBAの本に関しても今持っている簡単な入門書ではなく、ちゃんとした書籍を1冊持とうと思っていたので。 >オブジェクトブラウザとヘルプ(MSDN)が そのものなので、必要性から言えばほぼ無いと思うのと。 その通りですね。ただ今の自分の能力から考えたら何を作ったとしても必要性を感じられるプログラムはできないと思ったのです。今回はとりあえず思いついたこのようなプログラムを組んでみようと思いました。何か別案がありましたら教えてもらえるとうれしいです。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

エクセルVBAの勉強をかねてなら、データはそのVBAを入れたブックのシートに記録するのが普通でしょう。 >テキストファイルにCSV形式でそのままDB代わりに使う、などです は、VBAでも初等・中級解説本の範疇になってますが、メインの話題ではない。ただし難しいものではない。 他の構造のDBなども読み込み書き込みはVBAから(VB6機能というかCOMというか、ライブラリをそろえれば)使えたりしますが、エクセルVBAの本来の話題ではない。エクセルVBAでも覚える(「そんなの在ったな」程度を含めて)・習得することはいっぱいありますよ。 解説本や講義を受けて特に疑問を持たないのかもしれませんが、自分でプログラムを作るには、経験を積んで、適当なロジックを習得することのほうが大切だと私は思う。 また多様性という意味では、この質問コーナーのVBAの質問でも1ヶ月眺めてみて、どういう感想を持つか。例えば特殊案件で、自分には関係ない、手も足も出ない、解説本読書以外の経験が必要だな、自分でも回答できる、など。 >テキストファイルにCSV形式でそのままDB代わりに使う、などです 出来るというか1行(数行)のコードの実行で終わりますが、ニーズーー>メソッド・プロパティの整理が工夫がいると思う。 オブジェクトから行くかメッソッドなどから行くか、使い勝手の良いほうをよく考えてから。 しかしこれも経験を積んだ後に自分なりの良いと思うものが決ることで、始はあれこれ手を付けて、失敗も経験しないと現実には進まないでしょう。 例 罫線(対象物)   引く     VBAではXXXX 以下この部分の記述略 消す 点線にする 色を着ける ーー 削除(作用) 罫線を・・・ シートを・・ 行番号部表示を・・(非表示) セルを・・ 中核は解説本の索引が参考になる。各々の項目1つずつは、WEBには解説は必ずといって良いほど見つかるでしょう。 自作しないで、メソッド・プロパティの辞典(ABC順)があると便利だが市販本は現在では見かけない。

noname#198479
質問者

お礼

回答ありがとうございます。 >解説本や講義を受けて特に疑問を持たないのかもしれませんが、自分でプログラムを作るには、経験を積んで、適当なロジックを習得することのほうが大切だと私は思う。 VBAは独学です。経験を積むつもりで今回このようなプログラムを組んでみようかと思ったのですがこれを組んだところでロジックは身につきにくいということでしょうか? >しかしこれも経験を積んだ後に自分なりの良いと思うものが決ることで、始はあれこれ手を付けて、失敗も経験しないと現実には進まないでしょう。 わかりました。ありがとうございます。

関連するQ&A

  • エクセルVBAでのvlookup関数の使い方

    エクセルでvlook up関数を用いたVBAを書こうと思っているのですが上手くいきません。 詳しい方がいらっしゃいましたら教えて頂けませんでしょうか。 使用しているエクセルは2010です。 いろいろ調べながら書いてみたのですが、繰り返しの処理かエラー処理が悪いようでVBAを実行することが出来ませんでした。 シート1にあるコマンドボタンを押すことで別シート(シート2、3)に入力されている値をもってくるというVBAを考えています。 Sheet1(取扱商品)にはA列に商品番号、B列に商品名、C列に管理者が入力されています。 D~H列には属性1~5というヘッダーだけがあり、コマンドボタンを押すことで、別シートから商品の属性が入ります。 Sheet1(取扱商品) 商品番号 商品名 管理者 属性1 属性2 属性3 属性4 属性5 001  桜   安部 002  薔薇  安部 002  薔薇  伊藤 004  梅   上田 007  水仙  伊藤 010  牡丹  榎本 ...(以下続く) Sheet2(データベース1) 商品番号 属性1 属性4 001  A1  A4 002      B4 004  D1     008  H1  H4 ...(以下続く) Sheet3(データベース2) 商品番号 属性2 属性3 属性5 001  A2      A5 003  C1  C3  C5 004      D3 011  K1  K3 ...(以下続く) 各シートの商品番号は1対1で対応していません。 Sheet1は商品番号が重複する場合があります。Sheet2、3は重複しません。 コマンド実行後のイメージは下記のような形です。 対応する商品番号、属性がない場合はnull入るようにしたいと思っています。 Sheet1(取扱商品) 商品番号 商品名 管理者 属性1 属性2 属性3 属性4 属性5 001  桜   安部  A1  A2      A4  A5 002  薔薇  安部              B4     002  薔薇  伊藤              B4     004  梅   上田  D1      D3         007  水仙  伊藤                     010  牡丹  榎本                     ...(以下続く) 要領が得ないところがあるかと思いますが、皆様のお知恵を拝借致したく、教えて頂ければ幸いです。 どうかよろしくお願い致します。

  • エクセル この場合のVBAの書き方教えてください。

    顧客情報がsheet2にデータベース化されていて、そのシートのR列に管理上、属性によって顧客を分類する番号が1から8までそれぞれ入力されています。 教えていただきたいのは、シート1上でその分類の数字を入力すれば、別シート、例えばsheet3にそれに該当する顧客だけをsheet2と同じ書式で自動でコピーしてくれるマクロを作りたいのですが、詳しい方いましたらご面倒でしょうがVBAのコードをそのままコピーできるように書いていただけないでしょうか? 情報が不足でしたら補足させていただきますので宜しくお願いします。

  • エクセルVBAで困ってます。

    私は今、エクセルVBAで困ってます。 内容はデータを入力したエクセルのシート上で、別のファイル(CSV形式)を開いてある特定の行に入力したデータを参照し、完全に一致した際には、別のファイルの内容をシートに反映させるといったようなことは可能でしょうか? 襲えて下さい。 回答お待ちしています。

  • エクセルvbaでHTML操作

    エクセルvbaでHTML操作 vba,HTML初級者です。asp,javaScriptはほとんどわかりません。 社内の管理システム(ウェブアプリケーション)にエクセルの数値を転記すると いう作業がめんどくさいので、エクセルVBAで自動化できないかと考えています。 会社の管理システムはASP+JavaScriptで作成されていて、よくわからないので 手動で入力する手順をそのままvbaで組もうかと思っています。 ログイン → リンクリスト表示 → リンククリック → データを入力 → 登録 という流れなのですが、リンクをクリックしてデータ入力画面まではいけたのですが その後のプログラムがわかりません。 <データ入力画面の構成> ---------------------------- |  CODE  |  案件名  |  内容  | ---------------------------- |  CODE  |  案件名  |  内容  | ---------------------------- |  CODE  |  案件名  |  内容  | ---------------------------- |  CODE  |  案件名  |  内容  | ---------------------------- |  CODE  |  案件名  |  内容  | ----------------------------  [登録ボタン] CODE、案件名、内容、の部分はテーブルになっています。 このような構成の画面にCODE、案件名、内容を入力して登録ボタンをクリックしたいのですが、 テキストボックスのネーム属性がどの行も同じで(txtCode,txtName,txtJobの3種類) どうやって指定して入力すればいいのかわかりません。 画面のhtmlをここに載せられるといいのですが、情報漏えいなどに触れそうなので ちょっと載せられません。 非常に少ない情報なので、申し訳ないのですが解決のヒントをいただけたらと思います。 よろしくお願いします。

  • エクセルVBAについて悩んでいます。

    私はエクセルを一年前に仕事の関係上初めて操作いたしました。 エクセル自体は業務に差し支えなく操作できるようにはなりました。 最近はその延長線上でVBAなども勉強しておりましたが、実業務には到底役に立たないほどの基本的なスキルしか持っておりません。仕事内容はエクセルVBAを使用することが多く、周囲からも頼まれることが多いのですが全くお役に立つことが出来なく悔しい思いをいたしております。私なりに過去の経験から数多くの参考書に手を出すより一つの教材を繰り返し勉強することが効果的だと考え、「できるシリーズ」を何度も繰り返し勉強いたしましたが、実業務に通用するような勉強方法又は 教材がございましたら教えて下さい。お願いします。

  • エクセルVBAを使って請求書作成ソフトを作りたい

    VBAという言葉を初めて知ったばかりの初心者です。 現在エクセルで顧客名簿、顧客別売上帳、請求書用紙を作っています。 今までは手書きをPCに代えただけで、エクセルを使っている意味といえば、ナンバー登録している顧客名簿からVLOOKUPを使って請求書に顧客名、住所を自動で移す作業位です。 今回、売上が上がると売上帳、請求書に同時に転記できるようなソフトを自分で作ろうと思ったのですが、早くも行き詰まっています。 構想としては、 (1)ユーザーフォームで顧客NO.を入力すると氏名・住所データが確認のため出る。 (2)合っていれば、何月何日締、品名、数量、金額等を入力をする。 (3)登録ボタンで、別シート(ブック)に顧客別の売上帳を用意して、フォームに書き込んだ内容を転記する。 (4)請求書ボタンで、フォームの内容が既存の請求書用紙に転記される。 顧客数は900件ほどで年間稼働している顧客は70件程度です。 果たしてエクセルVBAで作ることは可能でしょうか? またそのために参考にできるサイトがあれば教えていただけないでしょうか? いくつかサイトを見た結果、シート内でマクロの登録をさせる方法は何となく理解できるのですが、上記のような方法になると全くお手上げです。 コードの意味などを書いてあるサイトはないでしょうか? 参考にしたいと思っても、アルファベットの羅列の内容が理解できないため、自分で理解できません。 どなたかよい勉強方法を教えてください。 宜しくお願いします。

  • エクセル(VBA)について

    現在契約社員でデータ入力をしています。 同じ会社に5年程勤めているのですが、 業務内容はシステムの人が作ったデータベースに、私がエクセル上で 入力し、その後はアクセスを使いそのデータを社員の人が管理するという内容です。 今更ですが、私は入力のみで全くエクセルを使えないので VBAやプログラミングについても勉強したいと思いました。 我流で勉強した方も多いようですが、簡単にマスター出来るものなのでしょうか? 専門学校等に通うべきなのでしょうか? ちなみに私は理系の頭ではなく文系です・・・。 本屋さんでもテキストを探したのですが、とても種類が多く どれがいいのか全く分からないので、お勧めの本等もありましたら教えてください。 よろしくお願いします。

  • エクセル vba アウトルックで自動メール送信

    vba勉強中です。 初心者のため質問の仕方に不備ありましたらご了承ください。 在庫管理をエクセルで行っています。 使用した日に使用数を入力し当月在庫を管理しているシートがあります。 I列の当月在庫がH列の管理値を下回ったらアウトルックで自動メール送信を考えています。 在庫管理したい品目は40個ほどあります(添付しているファイルは5個としています。) こちらのサイト(https://fastclassinfo.com/entry/vba_outlook_sendmail/)を参考にしていますが、管理値を下回ったらという部分が勉強不足で作成できません。 お手数をおかけしますがお分かりになられる方、よろしくお願い致します

  • エクセルのVBA初心者です。教えてください。

    エクセルVBAの勉強を始めたばかりのものです。無知を自覚しながら質問させていただきます。 宜しくお願い致します。 下のようにエクセルの表があります。 B列の中から例えば5月13日が今日だとして本日の日付のものを探し、見つけたらその隣の列の A列の通番を参照しピックアップしたら、別のシートに作ってある番号ばかりのシート表の中のその通番のセルを塗りつぶすという一連の作業のVBAを作りたいのですがどうしたらいいのでしょうか? 問題の説明不足で意味が通じるかが心配なのですが、本日の日付をB列から見つけてその通番 をピックアップするVBAを教えて頂けたらとおもい、質問しました。 ちなみに日付は5/13の形式で入力しています。 A B 1 5月13日 2 3 4 5 5月13日 6 6

  • エクセルのVBAでOutlook Expressの操作

    エクセルのVBAでOutlook Expressの操作 顧客情報を管理する上で、メールアドレスの登録が非常に面倒です。 そこで、Outlook Expressで受信したメールアドレスを自動でエクセルに落としたいのですが、 やり方を教えて下さい。出来れば、VBAを使ってやりたいです… イメージしているのは、 (1)件名に「メールアドレス登録」と入力し、本文に名前を入力したものを送る。 (2)メッセージルールで自動振り分けをして、「メールアドレス登録」という件名のメールは1つのフォルダにまとめる。(これは出来ました) (3)エクセルのA列に名前、B列にアドレスをOutlook Expressから自動で入力する。(ここをVBAを使って自動で行いたい) こんな感じなのですが、宜しくお願いします。

専門家に質問してみよう