• 締切済み

VB6.0でパスワードのかかったAccsessを開く

VB6.0を使って簡単なプログラムを作成しているのですが、 アクセスのレポートをプログラムから使用したいため下の関数を作りました。ところが、今扱いたいDBがパスワードがかかっているため、毎回パスワードを聞かれてしまいます。どうにかパスワードをプログラムから引き渡せないでしょうか? Public Function usrAccessRpt(strRptName As String, intMode As Integer) As Integer On Local Error GoTo usrAccessRpt_Err Dim AccessAp As New Access.Application 'データベースファイルのOPEN AccessAp.OpenCurrentDatabase App.Path & "\db1.mdb", False 'レポート出力 If intMode = acViewNormal Then AccessAp.DoCmd.OpenReport strRptName, acViewNormal AccessAp.CloseCurrentDatabase Else AccessAp.DoCmd.Maximize AccessAp.DoCmd.OpenReport strRptName, acViewPreview AccessAp.Visible = True End If Exit Function usrAccessRpt_Err: usrAccessRpt = 1 End Function

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

以下の所に情報があるようです 保護された Access データベースを開く場合に GetObject 関数を使用する例は、Office 2000 Developer CD-ROM の ODETools\V9\Samples\OPG\Samples\CH04 サブフォルダに含まれる Automating&IDE.doc の modSetObjVariable モジュールにあります。 http://www.microsoft.com/JAPAN/developer/library/odeopg/deconcreatingobjectvariabletoautomateanotherofficeapplication.htm

hide_ud
質問者

補足

回答ありがとうございます。 Office2000がプロフェッショナル版のため、サンプルモジュールを見ることは出来ませんでしたが、ここでの表記内容に関してはりかいできましたm(__)m ところが、今回のセキュリティーで扱っているパスワードはデータベースパスワードなのですが、起動時オプションで指定できるパスワードがどうやらアカウントパスワードのみのようでした(><;) ご回答いただいたのにまことに申し訳ありませんが、データベースパスワードという条件で何かよい解決さくはございませんでしょうか・・・(T▽T)

関連するQ&A

  • VB6からアクセスのレポートをプレビューするには?

    おはようございます。またまた躓いたのでお助け下さい<(_ _)>VB6で、アクセス2000にパーツ名を読み書きしています。アクセスの方でレポートを作ってあるのですが、印刷はいけそうなのですが、これを印刷前にプレビューしたいのですが、 Set accApp = CreateObject("Access.Application") accApp.OpenCurrentDatabase "C:\part-name.mdb" accApp.DoCmd.OpenReport "パーツ情報", acViewNormal 印刷について参考にさせていただいたソースです。DoCmd.OpenReport が印刷ですよね?ここを変更するのでしょうか?よろしくお願いします<(_ _)>

  • VB2005を用いてのレポート作成

    いつも見て参考にさせて頂いています。 XPを使用し新しくVB2005を最近使い始めた初心者ですが、いきなりつまずいてしまいました。といいますのも、Access2003で作成したレポートを印刷することはできたのですが、印刷レビューの作成方法がわかりません。 Dim objAccess As Object If MessageBox.Show("印刷します。よろしいですか?", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.OK Then Try objAccess = CreateObject("Access.Application") With objAccess .OpenCurrentDatabase("\\172.30.100.45\技術部個人\加藤\VEManager.mdb") .DoCmd.OpenReport("Publishers") .closeCurrentDatabase() .Quit() End With Catch ex As Exception MessageBox.Show("EXP.Message") Finally objAccess = Nothing GC.Collect() GC.WaitForPendingFinalizers() End Try End If 上記の方法で実際に印刷はできました。自分なりに調べた結果、 .DoCmd.OpenReport("Publishers") の箇所を変更すると印刷プレビューを表示できるようなのですが・・・僕にはわかりませんでした。 返事が遅れるかもしれませんが、わかる方がいればご教授の程よろしくおねがいします。

  • レポートが開けない。

    作成済みのレポートうまく開くことが出来ません。 エラーの内容としては、 イベントプロパティに指定した式:開く時でエラーが発生しました。 指定した式にあいまいな名前が含まれています。 といった表示が出ます。 特にレポートを修正したことは無いのですが、 システムに取り込むファイルを1つ追加しました。 それと、新しく取り込んだファイルから抽出条件を変えて 2種類のデータを作成しているのですが、これが問題ありですか? もっと違うことでしょうか? レポートを開く処理までは、何のエラーにもなりません。 DoCmd.OpenReportからエラーに飛んでしまいます。 何かご教示いただけると助かります。 よろしくお願いします。 レポートを開く時のコード↓ If MsgBox("はい :印刷" & vbCr & "いいえ:プレビュー", vbYesNo + vbInformation, "出力処理メニュー", "", 0) = vbYes Then DoCmd.OpenReport "R_帳票一覧", acViewNormal Else DoCmd.OpenReport "R_帳票一覧", acViewPreview End If '処理終了メッセージ MsgBox "処理が正常に終了しました。", vbInformation, " " 帳票一覧作成 = True On Error GoTo 0 Exit Function Err: 帳票一覧作成 = False MsgBox Err.Description イベントプロパティに指定してある式↓ 開く時:=Report_Maximize()

  • VBA「レポートを開く、なおかつ印刷はしない」

    アクセス2007です。 レポート1を作って保存し閉じました。 標準モジュールに Sub test() DoCmd.OpenReport "レポート1", acViewNormal End Sub と記載して実行したら、レポートが印刷されてしまいます。 私は開きたいだけなので、 VBAで「レポートを開く、なおかつ印刷はしない」と言うコードををしえてください。 ご回答よろしくお願いします。

  • VBからのACCESSの起動に関して

    開発環境:Visual Basic 2008/ACCESS 2000 VB2008よりACCESSを更新したり、ACCESSのレポートを使用したりする プログラムを作成しています。 その際に、1つのACCESSに複数のレポートを作成している事から、複数のプログラム からACCESSを起動させようとするとエラーとなってしまいます。 ACCESSをそれぞれ分けてしまえば問題ないですが、、、、 そもそも1つのACCESSファイルを複数からアクセス(複数のVBプログラム)するという事が 不可能なのでしょうか? あるいは、下記の記述にあるように、データベースを開こうとするかエラーである為、 開いているか確認の記述をし、既に開いているようだったら、その処理をとばすような事 をすれば問題ないのでしょうか??? 教えて頂きたいと思います。 よろしくお願いします。 《記述内容》 Dim ac As Object ac = CreateObject("Access.Application") With ac 'アプリケーションを表示する ac.Visible = True 'データベースを開く ac.OpenCurrentDatabase("C:\sample.mdb") '名前を指定してレポートを開く ac.DoCmd.OpenReport("R_一覧表", 2) 'acViewPreview 'レポートの最大化 .DoCmd.Maximize() 'オブジェクトの解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(ac) End With ac = Nothing

  • Accessのレポート印刷について

    Access2007を使用しています。 DoCmd.OpenReport "レポート名", acViewNormal, , Me.Filter で絞り込みをした内容のレポートで1枚目だけが印刷されるようにしたいのですが、 どうしたら良いですか? 2枚目・3枚目は印刷したくないので、1枚目だけが印刷されるようにしたいです。 よろしくお願いします。

  • 入力時のパスワードを「*」などにして見えないようにするには?

    レポートを開く際に下記のコードを使ってパスワードを入力を促しています。 Private Sub Report_Open(Cancel As Integer) If InputBox("パスワードを入力して下さい") <> "password" Then MsgBox "社員コードが間違っています。" Cancel = True End If End Sub このままだとパスワードを入力している最中に、passwordといれているのがバレバレです。 そこで入力時に表示しないようにしたいのですが可能でしょうか?

  • VB .NetのDLL参照について

    名前付パイプの処理をしているのですが、DLLが参照できません。 Public Class ClsJi01   Public Declare Function MakePipe Lib "\DLL\Point.DLL" (ByVal pipe_name As String, ByVal buf_size As Integer, ByVal max_instances As Short, ByVal hpipe As Integer, ByVal err_code As Integer) As Integer  Public Sub M_Pipe()   Dim r As Integer   Dim rpipe As Integer   Dim err_code As Integer   r = MakePipe("\\.\pipe\RS04", 255, 16, rpipe, err_code)  End Sub End Class Point.DLLは以前VB6.0の時に使用していたDLLで自作です。 これで実行すると「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と出ます。 どうしたら良いのでしょうか?

  • VBのReturnの使い方

    Excel2007のVBで以下のfunctionを定義すると、Returnのところでコンパイルエラーになります。 -------------------------------------- Public Function IsTen(lNumber As Integer) As Boolean If lNumber = 10 Then Return True Else Return False End If End Function -------------------------------------- ググってみるとReturn True とか Return False とかができるように思えるのですが、何が不味いのでしょうか? VBの知識はあまりなく、低レベルな質問かもしれませんが、よろしくお願いします。

  • VB2005で、Structureの配列を返すプログラムを以下のように書きたい

    VB2005で、Structureの配列を返すプログラムを以下のように書きたいのですが、そもそもVB6しか使ったことが無いもので、以下のような素数の結果を返すこのプログラムの書き方はVB2005らしいでしょうか? Module Module1 Public Structure SosuuStatus Public num As Integer Public status As String End Structure Class Sosuu Function SosuuCheck(ByVal st As Integer, ByVal ed As Integer) As SosuuStatus() Dim i As Integer, j As Integer Dim sosuu(0 To ed - st) As SosuuStatus Dim cnt As Integer = 0 For i = st To ed sosuu(cnt).num = i sosuu(cnt).status = "" '初期化 If 1 = i Then sosuu(cnt).status = "素数ではない" ElseIf 0 = (i Mod 2) Then sosuu(cnt).status = "素数ではない" Else For j = 3 To Math.Sqrt(ed) If 0 = (i / j) Then sosuu(cnt).status = "素数ではない" End If Next j End If If sosuu(cnt).status = "" Then sosuu(cnt).status = "素数である" End If cnt = cnt + 1 Next i SosuuCheck = sosuu End Function End Class End Module

専門家に質問してみよう