返回列表 上一主題 發帖

[發問] 如何透過 VBA語法 開啟專案的密碼

[發問] 如何透過 VBA語法 開啟專案的密碼

請教各位先進
    如果我想透過 VBA 語法 在開啟 其他Excel檔案時,自動將其 專案的密碼打開
    換句話說,這些 Excel 檔案的 專案密碼 我都清楚,只是懶得一個一個手動輸入....
    不知道 先進們 能否協助提供該語法....
    我在網路上看到的都是要破解的動作,但我不需要破解,因為密碼本來就知道,
    只是想自動打開罷了....

    謝謝

JS

這個是模擬鍵盤的方法:
  1. Sub UnprotectVBProj(ByVal Pwd As String, wb As Workbook)
  2.     Dim vbProj As Object
  3.     Set vbProj = wb.VBProject
  4.     If vbProj.Protection <> 1 Then Exit Sub ' already unprotected
  5.     Set Application.VBE.ActiveVBProject = vbProj
  6.     SendKeys Pwd & "~~"
  7.     Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
  8. End Sub
複製代碼
用法 "ABC" 為密碼, wb為對方活頁簿
CALL UnprotectVBProj("ABC", wb)
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

回復 2# kimbal


    謝謝 kimbal 先進的回覆,很抱歉我實在 試不出來,
    所以我將檔案附上來,當我想要利用附件檔案 開啟某個目錄中的全部檔案
    同時將每個檔案中的 專案密碼(假設是 ABC) 開啟,
    不知道 程式碼 該如何結合在一起?
    煩請 抽空再協助一下,感激不盡

JS 加班單簽核自動開檔程式test.rar (12.21 KB)

TOP

  1. Sub yy()
  2. p = [b1] & "\"
  3.     f = Dir(p & [b2])
  4.    Do While f <> ""
  5.     Workbooks.Open p & f, Password:="abc"
  6.         f = Dir
  7.     Loop
  8. End Sub
複製代碼

TOP

回復 4# oobird


    請教 oobird 先進,您提供的程式碼 是否是開啟 活頁部的密碼?
    我目前要開啟的是 VBA專案中的程式碼 的密碼....
    是否有一樣?煩請解惑....
    謝謝

佳欣

TOP

請教先進
     我在 #3 所附上的例子是否有解?
     我的目的是要用一個 Excel檔案,逐一開啟指定目錄中的所有Excel檔案,
     同時將這些檔案的 VBA專案密碼解開....
     希望有 先進 可以指點一下,感恩
JS

TOP

前面所提的密碼 是已經知道 密碼值,
只是希望透過 另一個程式 來將原本鎖住的 VBA專案密碼 打開
不知道程式碼該如何呈現???

JS

TOP

回復 7# jsleee


    #3的程序就能解除鎖定
  1. Sub 開啟檔案()
  2.     Dim CurrentPath As String   '儲存目前檔案目錄
  3.     Dim OpenFN As String   '讀取到的檔案名稱
  4.     Dim FNExt As String    '檔案副檔名
  5.     Dim MyBook As Workbook
  6.     FN = ActiveWorkbook.Name

  7.     CurrentPath = Range("B1")   '如果有設定以設定為主
  8.     FNExt = Range("b2")   '查詢檔案類型
  9.     If Trim(CurrentPath) = "" Then
  10.        CurrentPath = Excel.ActiveWorkbook.Path
  11.     End If
  12.    
  13.     n = 0
  14.     Sheets("trans").Cells.Delete  '將之前的結果清除
  15.     If Right(CurrentPath, 1) = "\" Then
  16.         OpenFN = Dir(CurrentPath & FNExt, vbDirectory)
  17.         OpenFNTime = CurrentPath
  18.     Else
  19.         OpenFN = Dir(CurrentPath & "\" & FNExt, vbDirectory)
  20.         OpenFNTime = CurrentPath & "\"
  21.     End If
  22.    
  23.     While OpenFN <> ""
  24.         If OpenFN <> ActiveWorkbook.Name Then '這個檔案不要顯示
  25.             If OpenFN <> "." And OpenFN <> ".." Then
  26.                 n = n + 1
  27.                 fs = OpenFNTime & OpenFN
  28.                 Sheets("trans").Cells(n, 7).Value = fs
  29.                 Workbooks.Open(Filename:=OpenFNTime & OpenFN _
  30.        , Password:="msign").RunAutoMacros Which:=xlAutoOpen
  31.        Set MyBook = ActiveWorkbook
  32.        UnprotectVBProj "password", MyBook '請自行修改密碼
  33.             End If
  34.         End If
  35.         OpenFN = Dir() '讀取下一個檔案
  36.     Wend
  37.    
  38.     Workbooks(FN).Close savechanges:=False
  39. End Sub
  40. Sub UnprotectVBProj(ByVal Pwd As String, wb As Workbook)
  41.     Dim vbProj As Object
  42.     Set vbProj = wb.VBProject
  43.     If vbProj.Protection <> 1 Then Exit Sub ' already unprotected
  44.     Set Application.VBE.ActiveVBProject = vbProj
  45.     SendKeys Pwd & "~~"
  46.     Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
  47. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 8# Hsieh

   謝謝 Hsieh 超級版主的協助,我的問題已經全部解決了
   感恩

JS

TOP

回復 8# Hsieh

再請教超級版主兩個延伸的問題:
1. 程式執行完後,會留下附件的圖片畫面,能否讓他自動關閉?
2. 如果一次開啟多個檔案,好像只有一個檔案可以解開專案密碼,
     其他檔案還是沒有解開,不知道哪裡出問題??
再麻煩您協助解惑,謝謝

JS

VBA.JPG (24.72 KB)

VBA.JPG

TOP

        靜思自在 : 我們最大的敵人不是別人.可能是自己。
返回列表 上一主題