• ベストアンサー

Access-Runtimeについて

Access2000でデータベースパスワード付きのmdb(DB_A.mdb)を起動するためのDB(DB_B.mde)を作成しました。 DB_B.mdeからDB_A.mdbを起動させるために"CreateObject"を使っていますが、RuntimeではCreateObjectを受け付けてくれません。 CreateObject("Access.Application")に相当するものをご存知の方、ご教授いただけませんか? よろしくお願い致しますm(_ _)m

  • an_na
  • お礼率54% (6/11)

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

  • ベストアンサー
  • skikichi
  • ベストアンサー率65% (45/69)
回答No.2

ん?どういうことでしょうか? ワークグループ管理をすればan_naさんの希望が一石二鳥で実現されるように思われるのですが!? ワークグループ管理とは言ってもユーザーはダミーでひとりです。ワークグループ管理していることは誰も意識しません。しかもIDもパスワードもすべて非公開です。 DB_B.mde(Shell起動)を具体的に記述しますと・・・ ret_value = Shell("C:\Program Files\Microsoft Office\office11\msaccess.EXE " & "DB_A.mdb /user 一般ユーザー /pwd himitsu /nostartup /wrkgrp Z:\Security\system.mdw", 1) ※ご存知だと思いますが、system.mdwは社内共通のフォルダー(例・・・Z:\Security)に置いてくださいね。 したがって、DB_B.mdeを起動する人はIDやパスワードをまったく意識することなく普通にDBを起動しているように感じます。 しかしながら、DB_A.mdbに設定した「一般ユーザー」の権限は特定のフォームやテーブルを見る権限しか与えていませんので実際にDB_A.mdb上では制限された環境下での操作をさせることが可能となります。 また、他からDB_A.mdbのテーブルに対してリンクやインポートをしようと思ってもパスワードは公開されていませんので誰もできません。 もちろん、事前に「管理者」の権限はすべて剥奪しておいてください。同時にオーナー(an_naさん)用に「supervisor」というユーザーを作成しておいて全権を与えておいてください。 これでsupervisorのパスワードを知っているオーナーだけが自由にDBを操作することが可能となるのです。 一石二鳥と言ったのは、フォーム等のアクセス制限ができると同時に他からのリンクも不可能となるからです。

an_na
質問者

お礼

skikichiさん、ご回答ありがとうございました。 アドバイスどおり、ワークグループ管理・shell起動を試してみた結果、Runtimeでも正常に起動させることが出来ました。 本当に勉強になりました、ありがとうございました(^^)v

その他の回答 (1)

  • skikichi
  • ベストアンサー率65% (45/69)
回答No.1

そうですか。Runtimeでは動きませんか。 それでは、ワークグループ管理にして、DB_A.mdbの「管理者」の権限をすべて剥奪し、「superuser」に全権を与えて、DB_B.mdeからパスワード付きで起動してみるしか方法がないかも!?しれませんね。 これであれば、Shell起動が使用できますのでRuntimeでも動きそうです。

an_na
質問者

お礼

skikichiさん、アドバイスありがとうございました。 インポート禁止の件でも、大変お世話になりました。 skikichiさんの過去のワークグループ管理の回答等、参考にさせていただきましたが、DB_A.mdbを閲覧できる人が頻繁に変わるため、ワークグループ管理では管理するのに手間がかかりそうです・・・。 Access2003ではOpenDatabaseでパスワードが設定できるようですが、Access2000のRuntimeを使ってDB_A.mdbを閲覧している人にAccess2003のRuntimeを入れてもらい、Access2003でDB_C.mde(DB_A.mdb起動用)を作成すれば、CreateObjectを使わずに、DB_A.mdbを起動することは可能でしょうか??

関連するQ&A

  • VisualBasic2008とMS-Access

    はじめまして。ご存じの方いらしたらご教授下さい。 VisualBasic2008 ExpressEditionからAccess2000(mdb)を起動する方法が分かりません。 Excelの場合は、 Dim obj as object obj = CreateObject("Excel.Application") Shell(obj.path & "\excel.exe " & "hoge.xls", 1) で起動できましたが、Accessを起動しようと同様に Dim obj as object obj = CreateObject("Access.Application.9") Shell(obj.path & "\msaccess.exe " & "hoge.mdb", 1) としたところ「公開メンバ 'path' は型 'Application' に見つかりませんでした。」 とShell命令で中断します。 宜しくお願い致します。

  • Excel と Access または、Access と Excel との連携処理

    (1)(初期処理として)、Excel(1.xls)よりアイテムセットしたパラメータ(起動するAccessのパス名)でAccess(A.mdb)を起動する。 (2)Access(A.mdb)の自動処理が終わると、次に起動させるAccess(B.mdb)のパスパラメータをExcel(1.xls)に渡し、Access(A.mdb)を終了する。 (3)パラメータを受け取ったExcel(1.xls)は、Access(B.mdb)を起動し、処理をする。 (1)より開始して、(2)(3)の繰り返し出来る方法を教えてください。 よろしくお願いします。

  • アクセスのセキュリティの警告の非表示

    現在、VBSでアクセスのマクロを起動させているのですが、 起動時にセキュリティの警告を聞いてこないようにしたいのですが、 なにか方法はあるのでしょうか? ちなみに現在のプログラムは '' データベース名・・・db.mdb(デスクトップにある場合) マクロ名・・・macro Dim AcApp Set AcApp = CreateObject("Access.Application") AcApp.visible = true AcApp.OpenCurrentDatabase "C:\Documents and Settings\×××\デスクトップ\db.mdb" AcApp.DoCmd.RunMacro "macro" AcApp.CloseCurrentDatabase AcApp.Quit Set AcApp = Nothing です。 よろしくお願い致します。

  • Access:mdeファイルが作成できない

    お世話になっております。 AccessのメニューからMDEファイルを作成しようとしました ところ、 "MDEファイルを作成できませんでした" といったメッセージが表示されます。 Accessのバージョンは2000 VBAのコードはコンパイル済みです。 MDEファイルを作成しようとしているドライブの空き容量は約550M 作成元となるMDBファイルのサイズは13.8Mとなっております。 MDBファイルが破損しているということでしょうか? ご教授をよろしくお願いいたします。

  • ACCESSレポートの起動のさせて方に関して

    VB2008の環境からACCESSのレポートを起動させたいと考えて います。 いろいろ検索しました結果、以下のような記述をしてみましたが、正しく起動 してくれません。。。 どのように記述するのが正しいのでしょうか??? 教えて下さい。 環境 : VB2008/ACCESS2000 《記述内容》 ※ Microsoft Access 9.0 Object Libraryを追加 Dim accApp As Access.Application 'Access の新しいインスタンスを作成 accApp = CreateObject("Access.Application") 'データベースを Access ウィンドウで開く accApp.OpenCurrentDatabase("c:\sample1.mdb") '印刷 accApp.DoCmd.OpenReport("R_sanple") '現在開いているデータベースを閉じる accApp.CloseCurrentDatabase() 'インスタンス破棄 accApp = Nothing

  • ランタイムなしで動くソフトを作るには

    現在Accessで業務アプリケーションを作っています 通常、Accessで作成したmdb/mdeは違うパソコンで利用するためには そのパソコンにAccessランタイムをインストールしなければ なりません。 データベース(SQLサ-バ/MSDE)を利用したアプリケーションで クライアント側にランタイムを必要としない操作プログラム(Access で言うフロントエンドのmdb/mde)を作るにはどうすればいいのでしょうか Visual Basicでもランタイムが必要だったとおもうのですが…

  • Access&VB

    2つほど質問があるのですが、 1.VBからDAOでパスワードがかかっているACCESSに接続する場合に引数はどのように設定したらよいのでしょうか? 2.ACCESSでクエリーを作成し、そのクエリーの結果をエクセルにエクスポートするという処理をやります。 このときクエリーはパラメータを要求します。どこかのタイミングでパラメータをわたせないでしょうか? 具体的にはこんな感じです。 Dim objDb As Object Dim appAccess As Object Set appAccess = CreateObject("Access.Application") appAccess.OpenCurrentDatabase "パス名\Memo.mdb" appAccess.DoCmd.TransferSpreadsheet 1, 8,"クエリー名","パス名.xls", False,"" もしくは、 appAccess.DoCmd.RunMacro "マクロ名" (マクロの中身は「TransferSpreadsheet」) 分りにくい説明ですが、よろしくお願いします。

  • mdeをaccessなしの環境で起動する方法

    作成したmdeをaccessなしの環境で起動する方法はありますでしょうか? やはり、accessランタイムが必要でしょうか? MDACで試したところできませんでした。 何か、accessなし環境でできたという事例がありましたら、ご教授願います。

  • Access画面を非表示にする方法

    http://www.nurs.or.jp/~ppoy/access/access/acEt008.html ↑ここを見て「Access画面を非表示にする方法」をやってみたんですが、ショートカット(最小化)からの起動は成功したものの、直接mdbファイルを起動した場合には一瞬Access画面が表示されてしまいます。 直接mdbファイルを起動した場合にもAccess画面を表示させない方法はあるのでしょうか?

  • Accessのmdeファイルについて

    お世話になります。 Access2000で作成しています。 Access2000で作成したmdbファイルから、mdeを作成。 access2000のRuntimeが入っているパソコンで開いたところ、 フォームが表示されず、何も実行できないウィンドウが 開くような状態なのです。 mdbからの書き出し時に、どのように設定すれば、mdeのフォームなどが 開いた状態になるのでしょうか? お手数ですが宜しくお願いします。