• ベストアンサー

エクセルVBAからアクセスフォームについて

エクセルVBAでボタンを作成し、そのボタンを押すと、アクセスのフォームが開き、そこでデータを入力したいのですが、どのようにすればよいのでしょうか? 知っている方がいましたらご教授ください。

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

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

これも丸投げの質問。他人を当てにして難しい問題をやろうとしていると思う。コードを貼り付けて動きましたのことではないはず。 なぜエクセルから、ACCESSに入るのをVBAでやるのか。初心者は別ソフトの連携など、相当勉強してからするものだと思うが。 WEBを照会すると、下記ぐらいはコード例が出ている。そういうのを調べたのかな。この先こそ質問になる事項ではないかと思う。疑問続出すると思う。 ーー エクセルのシートにコマンドボタンを1つ貼り付け。 編集モードでダブルクリックして、クリックイベントで Private Sub CommandButton1_Click() End Sub ガ出る。 ーーー そこでコードだが 私の場合ACCESSに、社員2.MDBがある。 そこにはフォームで「フォーム1」と言うフォームを作っていて そこにはテキストボックス2つとコマンドボタンを1つ設けている。 テキスト0 テキスト2 コマンド5 の名前になっている。 コマンド5のクリックイベントは下記のようになっている。 ーーー Private Sub CommandButton1_Click() Dim appAC As Object 'Accessのインスタンスをファイルから作成 Set appAC = CreateObject("Access.Application") 'GetObject("E:/Gabu/M1.mdb") '見えるように appAC.Visible = True appAC.OpenCurrentDatabase CurDir & "\" & "社員2.MDB" 'フォームをモーダル表示 appAC.DoCmd.OpenForm "フォーム1", acNormal, , , acFormEdit, acDialog '終了処理 'appAC.Quit 'Set appAC = Nothing End Sub ーーー Private Sub コマンド5_Click() Me.テキスト0.SetFocus MsgBox Me.テキスト0.Text Me.テキスト2.SetFocus MsgBox Me.テキスト2.Text End Sub エクセルシートのボタンをクリックすると フォーム1が現れ テキスト0 に東京都 テキスト2 に中野区 と入れて、コマンド5をクリックすると 東京都、中野区が表示される。 ここらぐらいは出来たから、コントロール名を質問者の場合に変えて やってみて。

kenta11
質問者

お礼

ご返答ありがとうございました。 只今、会社でアクセスを習得を任されたのですが、未だどのような事ができるのか、手探りでやっております。これを調べるのにも相当悩んでいました。 また、上記のコードを調べて理解できました。 どうもありがとうございました。

その他の回答 (1)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

ほとんど前の方と一緒です。 以下を実行する仕組みは作ってください。 Private Sub test1()   Dim acApp As Object   Set acApp = CreateObject("Access.Application")   acApp.OpenCurrentDatabase "E:\Access\tmp\HogeHoge.mdb"   acApp.Visible = True   acApp.UserControl = True   acApp.DoCmd.OpenForm "フォーム名"   Set acApp = Nothing End Sub mdb オープンで起動されるフォームが設定されていれば、そのフォームは開かれるようなので、 acApp.DoCmd.Close 2, "フォーム名", 2 で閉じてください。 数字の意味合いは、Accessでいう DoCmd.Close acForm, "フォーム名", acSaveNo

kenta11
質問者

お礼

ご返答ありがとうございました。 只今、会社でアクセスを習得を任されたのですが、未だどのような事ができるのか、手探りでやっております。これを調べるのにも相当悩んでいました。 また、上記のコードを調べて理解できました。 どうもありがとうございました。

関連するQ&A

  • VBAエクセルのフォームについて

    お世話になっております。 VBAエクセルのフォームについて教えていただきたいのです。 VBAで入力のフォームを作ったのですが(TEXT BOXが4つ、コマンドボタン1つ、コマンドボタンを押したときに登録される用にしたい) 各シートの集計にしたい為、各シート(31のシートがあります)に入力フォームがあります、その各シートでの入力結果を1つのシートに 集計したいのですが、どの様なコードにしたらようか判りません。 素人のためお手数ですが、なるべく判りやすくお願いします。 よろしくお願いします。

  • アクセスのフォームをエクセルでも

    エクセルでデータ入力フォームを作ろうとしています。 現在アクセスに入力用フォームがあり、それに近いフォームをエクセルにできるだけ簡単に移行できないでしょうか? データ>フォームではフィールド数がオーバーします。よろしくお願いします。

  • エクセル ユーザーフォームの住所録

    エクセルVBAのユーザーフォームサンプルとして、住所録を見かけますが、 1.一方的に入力するだけでなく、既に入力したデータがあるかないかを検索し、ユーザーフォームに呼び出し、上書き、もしくは、新しいデータ(列)として追加することは可能でしょうか? 2.1.が無理な場合、入力したデータ側は触らずして、他に方法はないでしょうか?(エクセルにて) 3.2.が難しい場合、アクセスなら可能なのでしょうか? 住所録より少し複雑なデータ入力をユーザーフォームで作成しようと検討中です。宜しくお願いします。

  • EXCEL VBAでユーザーフォームを使ってデータを入力したい。

    EXCEL VBAでユーザーフォームを使ってデータを入力したいと思っています。(ユーザーフォームはできています。) 入力項目が4項目あります。 名前 作業コード 開始時間 終了時間 上記4項目と登録ボタンです。 sheet1にユーザーフォームを表示し sheet2の A1に名前 B1に作業コード C1に開始時間 D1に終了時間が 登録ボタンを押すごとに どんどんデータを記録していきたいのです。 VBA初心者ですのでコードがよくわかりません。 ご教授ください。よろしくお願いいたします。

  • Excelで入力フォームの作成方法

    Excelについて質問です。 住所管理ファイルを作っています。 入力できやすいように、コマンドボタンを押すと入力フォームが表示されて入力できるように設定したいと思っています。 Accessでは簡単に作成できますがExcelではVBAなどのコードを記述しなければできないのでしょうか? 何か良い方法はありますでしょうか?

  • エクセルVBAのユーザーフォーム

    こんばんは、エクセルVBAでユーザーフォームを作成しました。 そこに入力したものがブックに反映するわけですが、フォームに0(ゼロ)を入力した場合、ブック上のセルを選択すると0と入っているのですが、表示されません。なぜでしょう???? これができないとせっかく時間をかけて作ったのに、使えません。どなたかご存知の方よろしくお願いします!!!!

  • Excelのフォームを閉じる方法

    ExcelのVBA を勉強し始めた初心者です。 Excelでシートにデータを入力していく為に、フォームを作りました。 そこで、コマンドボタンをクリックして、フォームを閉じるようにするには、どういった記述をすればいいのでしょう? バージョンは2002です。 お願いします。

  • AccessのフォームをExcelに出力

    いつもお世話になっております。 現在、Access2003でDBを作成中です。 "テーブル1"をパラメータクエリで抽出します。"クエリ1"。 そのクエリを基にフォームを作成しています。"フォーム1"。これは抽出して印刷したり、Excelに出力するために作成しました。レポートではなく、フォームにした理由は、コマンドボタン等を配置できることからです。 Excelに出力する際のVBAでつまづいてしまいました。 DoCmd.OutputTo acOutputForm, "フォーム1", acSpreadsheetTypeExcel9 これで問題なく出力できています。が、、、 Access2007の一部のPCでこれを実行するとエラーが出ます。 原因は"OutputTo"が含まれているとエラーになるようです。 ちなみにエラーは「現在出力しようとしているオブジェクトの形式は無効です。」 「2007 Office スイート Service Pack 2」こちらをインストールすると良いそうなのですが、だめでした。 WindowsXP、Office2007はこのVBAだとエラーになります。 WindowsVista、Office2007は正常に使えました。 PCの何か設定?と考えたりもしたのですが、はっきりとした原因がわからないのでは、他の人にDBを使っていただけないので、エラーにならないVBAでいきたいです。 もうひとつ、 mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "フォーム1", mFileName こちらのVBAはクエリの出力だとうまくいくのですが、フォームだとだめでした。 クエリから抽出して保存すれば良いのですが、理想はこの形です。 1.フォーム1を開くと「担当者を入力」とパラメータクエリが働き、抽出結果をフォーム1に表示される。 2.[出力]ボタンを押すと、ダイアログボックスが開いてファイル名を指定して保存する。または、ダイアログボックスが開かなくても名前を指定できれば良いです。最悪、指定できなくても良いですが、原因となる、"OutputTo"を避けたVBAでいきたい。 3.mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "クエリ1", mFileName これだと、1.でパラメータクエリで抽出結果をフォームに表示させて、2.で[出力]ボタンを押すと、また、パラメータクエリで抽出しなければならなくなるのでできれば避けたいです。 こちらの条件でご教授お願い致します。 また、WindowsXP、Office2007でエラーが出ましたので、これを解決する方法でも良いです。 よろしくお願い致します。

  • アクセスのフォームで

    アクセスのフォームで、ボタンを作成し、新規データ入力に際にそのボタンをクリックすると入力したデータが確定となり、次のレコード(新規データ)の入力になる様にするにはどうしたいいですか? 逆に言えば、そのボタンをクリックしない限り、次の新規レコード入力へ行けない様にしたいです。又、ボタンをクリックしても空白の項目があれば次へ行けない様にしたいです。 教えて下さい。よろしくお願いします。

  • エクセルVBAとsqlserverについて

    ご教授ください エクセル2010を使用しています。 OSはWin7です。 エクセルVBAでユーザーフォームを作成し そこに入力した値からSQLを発行して データを取るようにしたいのですが どのようにすればいいのでしょうか。 select day from AAA where day = ******************** ※ *にユーザーフォームから入力した値を渡したいのです。    *はyyyymmdd形式で入力します。 以上、よろしくお願いします。

専門家に質問してみよう