• 締切済み

ロックをかけたファイルにリンクしてあるファイルを開きたい

Excelで簡易データベースを作成しています。入り口はひとつにしようと思い、メニューのブック以外にはロックをかけ、メニュー上のコマンドボタンから各ファイルを開こうと思っていますが、そのメニュー以外のファイルは互いにリンクしていて、リンクの更新時にもPass要求のBoxが開いてしまいます。リンク先のPassもVBAから入力できるようにならないでしょうか? Sub FILEAopen() Dim FILENAME As Variant FILENAME = "C:\A.xls" Const PSW As String = "APASS" With Workbooks.Open(Filename:=FILENAME, updatelinks:=3, Password:=PSW, writerespassword:=PSW) .Unprotect (PSW) End With End Sub これで”A.xls"は開けるのですが、リンク先の”B.xls”もブックの保護をかけているため、パス要求のダイアログが開いてしまいます。Aのリンク先の”B.xls”も自動で開きたいのです。 どなたか宜しくお願い致します。

みんなの回答

回答No.1

対処療法ですが、A.xlsを開く前にB.xlsを開いておくというのはどうでしょうか? Sub openBook(file As String, pw As String) Application.ScreenUpdating = False Workbooks.Open Filename:=file, updatelinks:=3, Password:=pw, writerespassword:=pw 'オープン Windows(file).WindowState = xlMinimized '最小化 Application.ScreenUpdating = True Workbooks(file).Sheets("Sheet1").Protect UserInterfaceOnly:=True 'Sheet1はvbaから変更可能へ End Sub Sub closeBook(file As String) Workbooks(file).Close SaveChanges:=True End Sub というのを標準モジュールに用意していおて、Aを開く時に前もってA.xlsを開く。 openBook "B.xls", "pw" openBook "A.xls", "pw" 閉じる時は順番は関係ない。 closeBook "A.xls" closeBook "B.xls" ちなみに、UserInterfaceOnlyは、手動では変更ができないが、vbaからは変更できるというオプションです。 ただし、Excel2000では、シート単位でしか設定できなかったので、上ではSheet1を指定していますが、他のバージョンはわかりません。

itashin
質問者

お礼

fumufumu_2006さん、どうもありがとうございます。発想の転換ですね!先に開いておけばリンク更新の表示が出ない事がすっかり抜けていました。やはりやりたい事ばかり考えていると考え方が狭まってしまいますね。ちなみに、次のようにコードを書きました。 Sub FILEAopen() Application.ScreenUpdating = False Dim FILENAMEA,FILENAMEB As Variant FILENAMEA = "C:\A.xls"      '編集したいファイル FILENAMEB = "C:\B.xls"       'Aのセルに関数でリンクしているファイル Const PSW As String = "ABPASS" With Workbooks.Open(Filename:=FILENAMEB, updatelinks:=3, Password:=PSW, writerespassword:=PSW) .Unprotect (PSW) End With With Workbooks.Open(Filename:=FILENAMEA, updatelinks:=3, Password:=PSW, writerespassword:=PSW) .Unprotect (PSW) End With Workbooks("B.xls").Close False  'リンク元のファイルのみ閉じる(編集はしない) Application.ScreenUpdating = True End Sub B.xlsはあくまでもA.xlsとセル単位でリンクしているだけで、Bのデータが更新された後に、Aを開いて時にそれが反映されれば良いので、更新さえできれば閉じてしまいます。 おかげで出来ました。本当にありがとうございました。

関連するQ&A

専門家に質問してみよう