こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

VBAという言葉を初めて知ったばかりの初心者です。
現在エクセルで顧客名簿、顧客別売上帳、請求書用紙を作っています。
今までは手書きをPCに代えただけで、エクセルを使っている意味といえば、ナンバー登録している顧客名簿からVLOOKUPを使って請求書に顧客名、住所を自動で移す作業位です。

今回、売上が上がると売上帳、請求書に同時に転記できるようなソフトを自分で作ろうと思ったのですが、早くも行き詰まっています。

構想としては、
(1)ユーザーフォームで顧客NO.を入力すると氏名・住所データが確認のため出る。
(2)合っていれば、何月何日締、品名、数量、金額等を入力をする。
(3)登録ボタンで、別シート(ブック)に顧客別の売上帳を用意して、フォームに書き込んだ内容を転記する。
(4)請求書ボタンで、フォームの内容が既存の請求書用紙に転記される。

顧客数は900件ほどで年間稼働している顧客は70件程度です。
果たしてエクセルVBAで作ることは可能でしょうか?
またそのために参考にできるサイトがあれば教えていただけないでしょうか?

いくつかサイトを見た結果、シート内でマクロの登録をさせる方法は何となく理解できるのですが、上記のような方法になると全くお手上げです。

コードの意味などを書いてあるサイトはないでしょうか?
参考にしたいと思っても、アルファベットの羅列の内容が理解できないため、自分で理解できません。

どなたかよい勉強方法を教えてください。
宜しくお願いします。

投稿日時 - 2008-10-20 17:11:57

QNo.4415988

困ってます

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

いきなりフォーム作成してVBAでは、ちょっと敷居が高いかもしれません。
以下は、アドバイスです。
>現在エクセルで顧客名簿、顧客別売上帳、請求書用紙を作っています。
ひとつのファイルに、顧客名簿、売上台帳、請求書フォーマット作成します。
顧客別売上帳ではダメです。一枚のシートに縦方向にデータが蓄積されるようにします。
売上台帳
 入力日付 顧客No 品名 数量 単価 締日・・などでしょう。

追加で、商品名一覧表
 登録番号 品名 単価 在庫 仕入先などでしょう。
更に、入力作業用のシートも準備します。

(1)、(2)ですが、入力作業用のシートで
セルに 顧客No(入力規則は設定します)いれるとVlookup関数で他表示。
他セルに 商品の登録番号入れると品名、単価がVlookup関数で表示。
数量など入力して ボタンを押すと
(3)になりますが
シートのセルの内容が売上台帳の末尾の行に追加される(VBA)

(4)は、請求書のシートに、顧客番号と締日いれると、条件にあった
一覧表が請求書のフォーマットにあったセルに表示される。
関数でも可能ですし、VBAで抽出しても出来ます。

取合えず、ここまで準備して、(3)についてシートの構成など例をあげて、再度質問
(4)についても同様に別途質問 と言った手順で質問しなおしてみてください。
色々とアドバイス出ると思います。
そこで得たコードをフォームの上に応用する事は、次のステップで宜しいのでは。

投稿日時 - 2008-10-20 18:40:58

お礼

アドバイスありがとうございます。
なるほど、そういう方向で考えれば作れそうです。
私の能力だと大変時間はかかるでしょうが・・・。

ただ顧客別売上帳に関しては、売掛管理なども兼ねているので、
あきらめることができません。
何とかよい方法を探してみたいと思います。

投稿日時 - 2008-10-21 10:37:38

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

>ただ顧客別売上帳に関しては、売掛管理なども兼ねているので、あきらめることができません。
顧客別に売掛金のデータを抽出するシートを作成すれば良いだけです。
或いは、オートフィルターで、特定の顧客にフィルターかければ顧客別のデータになります。
データをシートやファイルに分けてはいけません。
一枚のシートから必要なデータを抽出する事は簡単にできても、
複数のシートやファイルからデータを結合することは一般機能では、大変難儀なことです。
パソコンにはパソコンにあった管理の方法があります。
従来のやり方から脱皮しないと効果が得られません。

投稿日時 - 2008-10-21 11:34:17

お礼

データの抽出を使えば、顧客別の売り上げを見ることもできるんですね!
教えてもらうまで思いつきませんでした。

今までのエクセルの使い方はただの表作りくらいでしか使っていなかったことをすごく残念に思います。
これからはもっと勉強してせっかくの機能を無駄にしないようにしたいと思います。

投稿日時 - 2008-10-21 15:15:12

ANo.3

(1)-(4)をやろうとすると、VBAの中の上ぐらいの技量が要ると思う。だからすぐには出来ないと思う。しかし質問で言っていることをするための、要素技術(課題を砕くと何をしたらよいか、つまるところはプログラムのコード)は、解説書やWEBに載っているので、探せばよい。
ーー
私は、VBA素人でも、近いことが出来るよう、過去に数回回答している。それらは、
「imogasi 請求書」および「imogasi 見積書」でGoogle照会すれば、出てくる。そこでは、関数を出来るだけ使いつつ、VBAは印刷などに留めたやり方の折衷方法にしている。
(1)(2)はエクセルが予想するやり方でなく、アクセスなどのやり方です。エクセルではシートを見ればわかるじゃないかといったことです。
>顧客別の売上帳を用意して
はもちろん便利な面はあるが、エクセルではシートを顧客別に分けるのは、何かと処理に困難を伴う。必要なときに売上帳を作るというのが、データベース的発想だと思う。
エクセルはつまるところ表計算ソフトで、関数ぐらいが取り柄で便利だが、データーベース的な使い方は、エクセルを逸脱したVBAなどの機能にどうしても頼らざるを得ないことになってしまう。
ーーー
指導者(学校の先生も含め)が居ないと、独学では、非常に難しいと覚悟してください。VBAのオブジェクト、プロパティ、メソッドは沢山ある。
ただこのコーナーの質問者を見ても、割合短期間に、WEBなどのコード例から、自分のニーズに引き寄せて、曲りなりに応用修正し解決している人もいる。なんか適性みたいなものがあるのじゃないかと思うが。
>コードの意味などを書いてあるサイトはないでしょうか?
とりあえず、コードをVBE画面に貼り付け、その言葉の中を指してF1キーを押して出てくるヘルプを読むのが一番詳しい情報でしょう。
でもVBAがだいぶん判ってこそ判る、という面はありますから、質問者の発想は、ほとんどの場合ハズレです。
例えば専門外の論文を、用語辞典とともに渡されて、判るでしょうと言われても、といった感じです。
ーー
詰まるところ、VBAを使う場数をあたり、色んな(小さい)ニーズに慣れる(そのコードを覚える)ほかないものと思います。
それにある課題に対し、どう処理するかに色々なコードの書き方があるので、その修練も難しい。
(例)例えば、合計を出すにも
   セルを1つ1つ足して行くやり方。
   VBAでSUM関数を使うやり方。
   ピヴォットテーブルを使うやり方。

投稿日時 - 2008-10-20 18:35:29

お礼

imogasiさんのおっしゃるとおり、合計を出す方法ひとつにしても、
いくつものやり方があり、コードを教えてくださいというのは
無茶な質問でした・・・。

>とりあえず、コードをVBE画面に貼り付け、その言葉の中を指してF1キーを押して出てくるヘルプを読むのが一番詳しい情報でしょう。

こういう方法があったんですね!
知りませんでした。
早速ヘルプを出して勉強していきます。

投稿日時 - 2008-10-21 10:32:25

ANo.2

コードの意味を詳しく書いていると言うのは、その詳しさが良いか否かを判断するのはその人によりますし。

取り敢えずコードを実行して手を加えて、それでどのように変えられるのかを確認する。
この事の繰り返しから始まる。(と言うか始めました)

投稿日時 - 2008-10-20 18:23:04

お礼

時間はかかるけれど、その方法が一番力になりそうですね。
地道に一つずつ試してみます。

投稿日時 - 2008-10-21 10:24:50

ANo.1

VBAの入門書を1冊購入し、じっくり勉強してみてください。
VBAは自分で作り上げていくものです。
時間は掛かると思いますが、自分の作りたいものが出来ると
思います。
頑張ってください。

投稿日時 - 2008-10-20 18:03:04

お礼

何かお勧めの本はあるでしょうか?
いくつか見てみましたが、どれもよく理解できず、迷っています。
もしあれば教えてください。

投稿日時 - 2008-10-21 10:22:30

あなたにオススメの質問