• ベストアンサー

ExcelVBAからAccess へ乗せ替える

ExcelVBAで作成した見積受注のシステムが、諸事情により同じ事をACCESSを使って行うことになりました。 (リンクではなくて完全にACCESSに乗せ替え) そこで質問ですが、UserForm、VBAのコードなどはどの程度流用できるのでしょうか? または今あるExcelを最大限うまく活用する方法があれば教えてください。 具体的には 新規見積フォーム→No採番→Noを基に見積(修正)書・受注書・請求書発行 が基本で、新規見積のときに同じ顧客の過去の実績を参照してその中から選択することができます。 説明がうまくできずにすみませんが、 どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • yomo3
  • ベストアンサー率32% (88/269)
回答No.1

ExcelVBAとAccessでは、相当、全然と言ってよいくらい違います。 何がどう違うのか、説明するのも億劫なくらいです。 シートは流用できます。 フォームの考え方自体は変わらないし、VBAも基本的には同じ言語ですが、オブジェクトの階層だとか、集計の仕方だとかが、全く異なります。 とりわけ、結構面倒な処理をしているようなので、最初から組み直す方が結局近道だと思います。 Accessは膨大なツールを持っているので、ジョブの内容を細かくチェックして、テーブルやクエリの構造を決めておけば、かなりの部分VBにたよらなくても実現できます。 Accessの本来の機能を使った方が、安全ですし、処理も速いです。

tamatsu_13
質問者

お礼

ご回答ありがとうございます。 テーブル構造の設計から、一からやり直したほうがいいということですね。 無理かなと思いつつ、もしかしたらフォームやモジュールはインポートできるかも、Officeどうしだし、と思って質問してみたのですが、まったく見当違いだったようです。 Accessで頑張ってやってみます。 ありがとうございました。

関連するQ&A

  • Accessで自動採番の方法がわかりません。

    今月より弊社工場で、私が生産管理システムの構築を担当することになりました。 Accessでの構築です。また、Accessは初心者です。 質問は、受注登録時に受注登録フォーム(F_受注登録)で管理番号を自動採番したいのですが、やり方がわかりません。また、管理番号の自動採番実現のためにテーブルの手直し等ありましたらご教授願います。 管理番号の構成 MSSF-10001-1 MSSF→自社番号です。T_自社にMSSFとMSSTを登録しています。 10001→顧客番号と部署番号を結合しています。上3ケタが顧客番号、下2ケタが部署番号です。また、部署番号は顧客の部署になります。 1→枝番号です。1から順にカウントしていきます。例)MSSF-10001-1、MSSF-10001-2、MSSF-10002-1、MSSF-20001-1、MSST-30001-1 質問部分のフローと現在の進捗状況を記載します。 フロー F_受注登録を開く→受注内容を入力→受注内容登録時、管理番号を自動採番し、登録を完了する 現在作成済のテーブル、フォーム T_顧客、T_自社、T_ 受注一覧、T_部署、F_顧客登録、F_受注登録、F_受注一覧 T_顧客→顧客番号、顧客名 T_自社→自社番号、自社名 T_受注一覧→管理番号、顧客名、部署名、担当者、状態、工番、No、品番(図番)、品名、数量、納期、確定納期、出荷日、送り状番号、加工先、材料、材質、備考 T_部署→部署番号、部署名 F_顧客登録→T_顧客へ登録ができます。 F_受注登録→T_受注一覧へ登録ができます。 F_受注一覧→T_受注一覧の閲覧ができます。 ご不明な点等ありましたら、ご連絡ください。 よろしくお願いします。

  • Accessのフォームで思った順番でレコードが表示されない

    こんにちは Accessのフォームで受注管理を作成しています。 メインフォームには ・伝票番号 ・顧客番号、顧客名 ・担当部署、担当者名 サブフォームに ・明細番号、商品ID、商品名、単価、個数、金額 としていますがフォームを開くと伝票番号順にレコードが並ぶのが希望なのですが顧客番号順に並びます。 例)希望 伝票No 1  顧客番号 001 ・・・・・ 伝票No 2  顧客番号 010 ・・・・・ 伝票No 3  顧客番号 009 ・・・・・ 伝票No 4  顧客番号 001 ・・・・・ 現状 伝票No 1  顧客番号 001 ・・・・・ 伝票No 4  顧客番号 001 ・・・・・ 伝票No 3  顧客番号 009 ・・・・・ 伝票No 2  顧客番号 010 ・・・・・ 伝票番号順にしたい場合どこを確認すればよいかご存知の方がおられましたらご教示いただけますようお願いいたします。

  • access SQLを基にしてフォームは作成できるか

    access で、VBAにSQLを記述し、 その抽出結果を基にしてフォームは作成できるのでしょうか? また、SQLを基にテーブルを作成し、テーブルを基にフォームを作成できるのでしょうか? いわゆる「検索」に利用できればと考えています。 よろしくお願いします。

  • access2007マクロの作成について

    access2007初心者です。 現在、access2007にて顧客管理をしております。 顧客テーブルなるものがあり、別に入力フォームとして新規作成や修正などができるフォーム(単票)を作成してあります。 そこで、顧客テーブルで行(レコード)を選択すると、その行に対応した入力フォームが開くという設定にするには、どのようなマクロを作成すればよろしいでしょうか?マクロでできるのかどうかもわかりません。 どなたか教えていただけないでしょうか?

  • Accessレポートの質問です。

    Access2010のレポートで複数レコードのデータを1行に出力しようとしています。 具体的には各レコードに顧客名と金額がはいっており、 それを以下のように印刷したいと考えてます。   顧客1 10,000   顧客2 20,000 顧客3 30,000 顧客4 40,000  顧客5 50,000 合計 5件 150,000 VBAを使って処理すれば、できるのかもしれませんが、VBAでレポートを作成した ことがないので止まっています。(フォーム内でのデータ処理でVBAを使ったこと はありますが) どなたか知恵をお貸しいただければ幸いです。 宜しくお願いいます。

  • アクセス(ACCESS)のリストボックスについて

    アクセスでフォームにテキストボックスとリストボックスを配置して、 テキストボックスに入力した文字列により、リストボックスに表示される データを変えたいのですが(フィルタをかけるというのでしょうか??) そこで、vbaを用い、リストボックスのプロパティの値集合ソースに SELECT * FROM aaa where aaa.bbb like "*あ*"; 'あ と言う文字のあいまい検索のつもり ”あ”はテキストボックス    に入力されている。 と入るような事を考えたのですが、ここで、aaaの部分がテーブルを基にした 場合は、該当するデータすべてが表示されますが、クエリーを基にすると 先頭のデータしか表示しないのです。 たぶん、素人の考えなのでしょうが、どうしてそうなるのかが分かりません。 教えていただけないでしょうか? できたら、クエリーを基にしても、該当データが表示できる方法も 教えてください。お願いします。 VBAは(?)かなりの初心者です。上記の方法も本に書いてあった物を やっと流用しました。猿にも解るくらいでお願いします。 ちなみに、アクセスは2000を使用しています。

  • Access、同じテーブルの2つの項目対他のテーブルで1つの項目のリレーションは可能?

    Accessで販売管理をしています。 以下のテーブルを作成し(*は主キーです)、 [売上T]  [商品M]  [顧客M]  [受注T] *売上NO  *商品ID  *顧客ID1  *受注NO 商品ID   商品名    *顧客ID2  商品ID 日付    顧客ID1     顧客名    受注日 金額    顧客ID2            受注金額        受注先1        受注先2 参照整合性にチェックを入れリレーションでつないでいます。 リレーションシップは下記のとおりです。 [売上T]商品ID―[商品M]商品ID―[受注T]商品ID [商品M]顧客ID1及び2―[顧客M]顧客ID1及び2―[商品M]受注先1及び2 ここで顧客と受注先が重複することもあるので、顧客Mから顧客ID及び受注先IDの2つのテーブルにリレーションシップを設定しているのですが、 クエリで  [受注T]受注NO及び受注金額、[顧客M]顧客名で抽出したところ、 5000件以上[受注T]にデータがあるはずのものが、1200件ほどしか抽出できませんでした。 ちなみに[顧客M]と[受注用顧客M]というまったく別のテーブルを作成し、 [商品M]受注先1及び2―[受注用顧客M]顧客ID1及び2 とリレーションを作成し、クエリで抽出するとうまくいきました。 しかしこの方法だと、[顧客M]と[受注用顧客M]という2つのテーブルを管理しなければならなくなるので面倒です。 そこで質問です。 同じテーブルの2つの項目対他のテーブルの1つの項目とでは、うまくリレーションが設定できないのでしょうか。 もし出来ない場合、[顧客M]と[受注用顧客M]の2つのテーブルを管理しなければならない訳ですが、 なんとか簡単に管理できる方法(ひとつのテーブルを変更すると簡単にもうひとつが変更できる設定)はないでしょうか。 非常にわかりにくく長い文章で申し訳ありません。 VBA等はさっぱりわかりませんので、普通の設定の範囲内で、できるかどうかよろしくお願いします。

  • MS Access 入力フォーム:自動採番

    Access2013での自動採番に関して2パターン教えて下さい。 質問(1):"顧客番号"の自動採番 【テーブル名】 顧客情報 【フィールド】 "顧客番号"、"顧客名"、"顧客名かな"、"顧客住所"、"電話番号"、"担当者"、"メール"・・・ <"顧客番号"の採番方法> 顧客名の頭文字を五十音順の「あかさたな」で行ごとに連番をつけて管理している。 例)) 「ABC商事」→エービーシーしょうじ→「あ‐01」 「東京印刷」→とうきょういんさつ→「た-01」 《やりたい事!》 入力フォームに新規で、「東西工業」を入力する際に "顧客名かな"を入力したら、"顧客番号"が自動的に採番されるようにしたい。 顧客名:東西工業 顧客名かな:とうざいこうぎょう 顧客番号:た-02 ←ココを自動採番にしたい ------------------------------------------------ 質問(2)"取引番号"の自動採番 【テーブル名】 取引情報 【フィールド】 "顧客番号"、"取引番号"、"顧客名"、"顧客名かな"、"住所"、"電話番号"、"担当者"、"メール"・・・ <"取引番号"の採番方法> 取引が発生した順で、"顧客番号"ごとに枝番をつけて管理している。 例)) 「ABC商事」→1/10の取引→"顧客番号":あ‐01、"取引番号":01 「ABC商事」→1/31の取引→"顧客番号":あ‐01、"取引番号":02 《やりたい事!》 入力フォームに新規で、「ABC商事」の2/15の取引情報を入力する際に "顧客番号"を入力したら、"取引番号"が自動的に採番されるようにしたい。 顧客名:ABC商事 顧客番号:あ‐01 取引日:2016/02/15 取引番号:03 ←ココを自動採番にしたい 説明がうまくできず、分かりにくいかとは思いますが 何とかお知恵をお借り出来れば助かります。 よろしくお願い致しますm(__)m

  • accessのSQL

    accessのフォーム上において、サブクエリを元データとして使用し 顧客別に受注合計、入金合計を出させ、売掛金残高を表示させました。次に受注ID毎の売掛金残高を、顧客別に集計させて売掛金残高合計を出したいのです。 元データはどこから引っ張ってくればよいのでしょうか? ちなみに受注合計の計算式には売上数量毎に割引率が異なります。 ご教示のほどよろしくお願い申し上げます。

  • ACCESS のサブフォーム表示について

    ACCESS のサブフォーム表示について 環境 ACCESS2003 テーブルが2つあります 1、 TBL顧客情報 2、 TBL購入品 TBL顧客情報をメインにTBL購入品をサブフォーム にして受注フォームを作りたいと思います 以下3つのことを望んでいます 1、サブフォームに購入品を加えてたいのですが 追加できる行を3行までと制限を掛けたい。 2、受注フォームを開いたときサブフォームには 空の3行が表示されている 3、ですのでTBL購入品には記入した購入品がのみが 追加され、空の行は無視される。 どなたかお知恵を拝借させてください。

専門家に質問してみよう