• 締切済み

VBAでパスワード付きファイルを開く

Excel VBA で、他のファイルからデータを取得し、集計しています。 集計ファイル(VBA有)とデータファイルは、どちらも同じパスワード(例:XYZ)がかかっています。 Workbooks.Openの引数にPassword:="XYZ"と書けば開けるのですが、VBA中にパスワードを直接記入したくありません。(安全やパスワード変更した場合を考えて) thisworkbook.Passwordプロパティを取得しても"********"になってしまい、パスワードを取得できません。 良い方法はないでしょうか

みんなの回答

  • okgoo3
  • ベストアンサー率74% (20/27)
回答No.1

それらの処理を行う際に InputBox でも表示させ、作業者に入力させたらいいんじゃないの? そいつを変数に格納し、Workbooks.Open の所に突っ込んであげる。

関連するQ&A

  • 【VBA】ファイルを開く→シートをコピー→保存

    VBAを使って、複数ファイルを一気に編集したいです。 あるフォルダ内に、複数のエクセルブックと VBAを登録したブックが入っています。 VBAの内容としては、 (1)フォルダ内のエクセルファイルをすべて開く (2)各ファイル1ページ目のシートを複製(コピー)する (3)上書き保存して閉じる (4)VBAを登録したブックを閉じる です。 下記のように書いてみたのですが、まったく動かないので どこが間違っているかのアドバイスをいただければと思います。 ----------------------------------------------------- Sub test() Dim Myfile, Filepath As String Filepath = ThisWorkbook.Path 'フォルダ名取得 Myfile = Dir(Filepath & "\") 'フォルダ内のファイル名取得 Do While Myfile <> "" Workbooks.Open Filename:=Filepath & "\" & Myfile Workbooks(Myfile).Activate Sheets(1).Select Sheets(1).Copy after:=Sheets(1) Workbooks(Myfile).Close SaveChanges:=True Myfile = Dir() Loop ThisWorkbook.Close SaveChanges:=True End Sub ----------------------------------------------------- よろしくお願いいたします。

  • DBパスワードありVBAアクセスについて

    Access2010を使用しております。 Excel2010からAccessにVBAからSelect文でデータセット取得しようとしております。 接続には以下の記述で接続しようとしてますが、オートメーションエラーになります。 Set con = New ADODB.Connection con.Provider = "Microsoft.Ace.OLEDB.12.0" con.Properties("Jet OLEDB:Database Password") = Password con.Open "C:\\Directory" または con.Provider = "Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Directory;Jet OLEDB:Database Password=Password" con.Open などいろいろ試してますがうまくいきません。 パスワードがなければ以下の記述で開けるのですが。 con.Provider = "Microsoft.Ace.OLEDB.12.0" con.Open "c:\\Directory" アドバイス等お願いします。

  • EXCELのVBAを使用してフォルダー内の複数のデーターの集計処理を

    EXCELのVBAを使用してフォルダー内の複数のデーターの集計処理を 行いたいのですが1個目のデーター処理を行った後集計処理を行った後 集計シートを2個目のデーターに移動させたいのですが方法がわかりません。 下記のように集計表(原紙)を複数のデーターにコーピーはできるのですが Private Sub CommandButton1_Click() '集計表作成 Dim MyPath, MyBook, MyName MyPath = ThisWorkbook.Path & "¥" MyBook = ThisWorkbook.Name MyName = Dir(MyPath & "*.xls") Do While MyName <> "" If MyName <> MyBook Then Workbooks.Open Filename:=MyPath & MyName '一番左に集計表を貼り付ける Workbooks(MyBook).Worksheets(1).Copy Before:=Workbooks(MyName).Sheets(1) '"ここで集計処理後 次のBookへ移動" Workbooks(MyName).Save Workbooks(MyName).Close End If MyName = Dir Loop End Sub Copy部分をMoveにするとエラーメッセージがでてしまい 集計したシートを次々と移動させる方法がわかりません。 どのような方法で実行すれば宜しいでしょうか?

  • エクセルVBAで65536レコードを超えるCSVファイルの読み込み

    エクセル2000です。 現在CSV形式のファイルをもらい、エクセルVBAで1行づつエクセルに取り込み、加工しています。(CODEは、かなり省略していますが下記の通り) データは将来的には何万件におよぶことも考えられます。 ためしに65536を超えるデータを読み込ませたところ65536を超えたところでやはりエラーになりました。Workbooks.Openでエクセル形式で開いているので65536を超える部分は無視されるからだと思います。 このような場合には、どうやってCSVファイルからデータを読み込めばよいのでしょうか?(なお、エクセルは当分2007にはなりそうもありません。アクセスはまったく使えません。) Sub TEST01() Set cf = Workbooks.Open(Filename:=ThisWorkbook.Path & "\test.csv") Set zerro = cf.Sheets(1).Range("A1:AX1") ThisWorkbook.Sheets("Sheet1").Activate Do Until zerro.Cells(1).Value = "" ThisWorkbook.Sheets("Sheet1").Range("A1:AX1").Value = zerro.Value '処理マクロ省略 Set zerro = zerro.Offset(1) Loop End Sub

  • パスワード付きPowerPointファイルの開き方

    読み取りパスワードと書き込みパスワードがかけられたPowerPointファイルを開くプログラムを作成しているのですが、PowerPointのOpenメソッドに、パスワードを設定する引数が無いようなのです。 パスワード付きPowerPointファイルを開く事は不可能なのでしょうか? ちなみに詳しく状況を説明すると、PowerPointVBAではなく、ExcelVBAでCreateObjectを使って開こうとしています。 オブジェクト取得後は、どちらでも同じ様な記述になると思いますが、何か問題があれば、合わせて、ご教授願います。

  • パスワード付のエクセルファイルをアクセスから開く方

    アクセスからエクセルのファイルを開きたいのですがうまくできません。 エクセルにはパスワードがかかっています。 なので Dim xlApp As Object Dim xlWbk As Object Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True Set xlWbk = xlApp.Workbooks.Open("C:\2010.xlsx", , , , Password:="0000") Set xlApp = Nothing としたのですが、エクセルファイルが立ち上がりパスワード入力画面が表示されます。 , , , , Password:="0000" が無視されているようです。 パスワード付のエクセルファイルをアクセスから開く方法をご教授ください。

  • VBAの質問です。

    VBAの質問です。 以下のプログラムで、4列おきにコピーしたい時はどうすればいいでしょうか? 1つのフォルダの中に集約第1期・集約第2期・集約第3期という名前の3つのファイルがあり、 その3つのファイル全てに「結果」というシートがあります。 この「結果」シートのC4:AU37の数値をコピーします。 コピーした数値を、集約第3期のファイルの中にある「集計用シート」のC2から貼り付けしていきたいのですが、 この時に、4列おきにはりつけたいと思っています。 集約第1期ファイル-結果-C4の列→集約第3期ファイル-集計用シート-C2の列から4列おきに 集約第2期ファイル-結果-C4の列→集約第3期ファイル-集計用シート-C3の列から4列おきに 集約第3期ファイル-結果-C4の列→集約第3期ファイル-集計用シート-C4の列から4列おきに といった具合です。 集約第3期ファイル-集計用シート-C5の列は空白し、C6からまた貼り付けます。 どこをどう直せば良いでしょうか? Sub データ抽出() Dim i As Long Dim flg As Boolean Dim myWb As Workbook Dim myWbName As String Application.ScreenUpdating = False ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path ThisWorkbook.Worksheets("集計用シート").Range("C2:EG35").Clear For i = 1 To 3 flg = False myWbName = "集約第" & i & "期.xls" If myWbName <> ThisWorkbook.Name Then For Each myWb In Workbooks If myWb.Name = myWbName Then flg = True Next myWb If flg = False Then Workbooks.Open Filename:=myWbName Else Workbooks(myWbName).Activate MsgBox myWbName & "を閉じてから再実行してください。" Exit Sub End If End If Worksheets("結果").Range("C4:AU37").Copy ThisWorkbook.Worksheets("集計用シート").Range("C2").Offset(, 45 * (i - 1)).PasteSpecial Paste:=xlPasteValues If myWbName <> ThisWorkbook.Name Then Application.DisplayAlerts = False Workbooks(myWbName).Close SaveChanges:=False Application.DisplayAlerts = True End If Next i Application.CutCopyMode = False Application.ScreenUpdating = True End Sub

  • 強制的にマクロを有効にするVBA

    エクセル2010を使っている者です。 マクロの入ったファイルを開くときに、強制的にマクロを有効にするようなVBAは どのように組めば良いか、ご教授願います。 ネットで調べてみると、以下のものが見つかりました。 http://www.saka-en.com/office/vba-open-the-macro-enabled-forcibly/ 1 Option Explicit 2 3'** 4 ' ワークブックオープン 5'** 6 Private Sub Workbook_Open() 7 ThisWorkbook.Unprotect Password:="password" 8 On Error Resume Next 9 If ThisWorkbook.Sheets("編集用").Visible <> True Then ThisWorkbook.Sheets("編集用").Visible = True 10 If ThisWorkbook.Sheets("ダミー").Visible <> False Then ThisWorkbook.Sheets("ダミー").Visible = False 11 ThisWorkbook.Protect Password:="password" 12 'ThisWorkbook.RunAutoMacros Which:=xlAutoOpen 13 On Error GoTo 0 14 Exit Sub 15 End Sub 16 17 '** 18' ワークブックを閉じる前 19 '** 20 Private Sub Workbook_BeforeClose(Cancel As Boolean) 21 Dim Answer As Long 22' 保存されているかチェック 23 If ThisWorkbook.Saved = False Then 24 Answer = MsgBox("Do you want to save the changes to the '" & ThisWorkbook.Name & "' ?", vbExclamation + vbOKCancel, "Microsoft Excel") 25 Select Case Answer 26 Case vbCancel 27 Cancel = True 28 Exit Sub 29 End Select 30 End If 31 ThisWorkbook.Unprotect Password:="password" 32 On Error Resume Next 33 If ThisWorkbook.Sheets("ダミー").Visible <> True Then ThisWorkbook.Sheets("ダミー").Visible = True 34 If ThisWorkbook.Sheets("編集用").Visible <> False Then ThisWorkbook.Sheets("編集用").Visible = False 35 ThisWorkbook.Protect Password:="password" 36 ThisWorkbook.Save 37 End Sub しかし、このコードだと、編集するシートが1枚であれば良いのですが、何枚もある場合や、随時、シートを追加していくようなファイルの場合は修正が必要だと思います。 どのように修正すれば良いのでしょうか。 もしくは、例えば、マクロが有効になっていない場合は、ファイルは開けるものの、注意喚起のメッセージボックスを有効にするまで表示させるような設定にすることは可能でしょうか。 ご教授いただけると幸いです。 よろしくお願いいたします。

  • 自分のExcelを読み取り専用で開くVBAは?

    Excel2003を使っています。 基本的なことで恐縮なのですが、 Excelファイルを手動で開くとき、読み取り専用にするような方法はないでしょうか。 ファイルのプロパティから「読み取り専用」にチェックを入れても NASの性質なのか、チェックが外れてしまいます。 (前提として、ここの変更は考えていません) そこで、「読み取り専用を推奨する」にしたのですが、毎回メッセージボックスが出るため 「読み取り専用にしない」を選択される場合もあります。 そのため、VBAにその指示を書き込む方法を探していました。 たとえば、以下のコードを試してみました。 しかし、開いたファイルに指示しているため、当然ながら以下のメッセージが出ます。 "***.xls は既に開いています。2重に開くと、これまでの変更内容は破棄されます。***.xls を開きますか?" Private Sub Workbook_Open() Dim Filename As String Filename = ThisWorkbook.FullName With Workbooks.Open(Filename, , True) .ActiveSheet.Activate End With End Sub 「読み取り専用を推奨する」をオンにして、Workbook.Openの引数である ignorereadonlyrecommended を設定する…というのも、 やはり上記の点で引っかかります。 何か方法はないものでしょうか。。。

  • Excel VBA の ChangeFileAccess

    Excel(2000 SP-3) VBAの ChangeFileAccessがうまく行きません。 VBAからあるExcelファイルをWorkbooks.Open で開く処理の制御で悩んでいます。 2人で同時にマクロでhoge.xls をOpenすると、どちらも「他のユーザが使用中です」的なメッセージが出ませんでした。 (エクスプローラからクリックしたりして、hoge.xlsを直接開くと、他のユーザが使用中かどうかがわかります) それでは困るので、ChangeFileAccess のNotify:=true をセットしてみたら、2人目は他のユーザが使用中である旨のメッセージが出るようになりました。 しかし、ChangeFileAccess のNotifyはちゃんと設定されているようなのですが、 'ChangeFileAccess'メソッドは失敗しました:'_Workbook'オブジェクト とエラーが出ています。 ChangeFileAccessはどう使うのが正しいのでしょうか? ソースは Workbooks.Open Filename:=ThisWorkbook.Path & "\hoge.xls", updatelinks:=1, Notify:=True ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, Notify:=True って感じなのですが。 Workbooks.Openはちゃんとできています。Workbooks.OpenがコケたらOn Error Goto で拾ってMsgBoxでメッセージを出す、という処理をしているのですが、Workbooks.OpenはOKなのにChangeFileAccessでコケて、On Error Goto に引っかかってしまっています。