Board logo

標題: 日期一到就刪除巨集. [打印本頁]

作者: man65boy    時間: 2011-9-8 18:51     標題: 日期一到就刪除巨集.

如提:日期一到就刪除特定的巨集

Sheet1程式區裡放著程式碼

要如何在指定的日期到期時突破VBAProject屬性密碼保護,自動刪除Sheet1程式區的程式碼,

簡單來說,只要指定的日期一到,不需提醒就自動刪除指定的工作表巨集,

請各位先進老師們,幫忙一下...謝謝!!!
作者: jimmyhk    時間: 2011-9-8 20:22

回復 1# man65boy


可否問一問這樣做的目的是???
作者: GBKEE    時間: 2011-9-8 20:53

回復 1# man65boy
VBAProject屬性有密碼保護  ,就無法刪除Sheet1程式區的程式碼.
作者: man65boy    時間: 2011-9-8 20:54

有時給客戶的資料都為了方便,都會貼心的用一些實用性的巨集,好方便計算材料消耗,查詢,連接各個相關資料,但........好用,不代表會叫貨>"<

客戶說 : 好好..你的excel寫的好,很好用,資料詳細,好計算,好查詢,不錯!!!

我想好用也不是給妳們計算別家的產品用的,

想在自己設計好的檔案裡,安裝日期一到就自動刪除指定的巨集,因為我有設專案屬性密碼,不知有設密碼還會不會執行,單純只為自己的檔案設置,別無搞他人檔案的念頭!
作者: man65boy    時間: 2011-9-8 20:59

假使能日期一到打開活頁簿的同時,能自動解開VBAProject屬性密碼,刪除,在自動鎖密呢?可行嗎?
麻煩老師們給個意見!!!
作者: GBKEE    時間: 2011-9-9 09:47

本帖最後由 GBKEE 於 2011-9-16 07:19 編輯

回復 5# man65boy
VBAProject屬性有密碼保護  ,就無法刪除程式碼.
  1. '活頁簿工作表,插入Excle 4.0巨集表,命名為"4.0"
  2. 'ThisWorkbook 中加入 Workbook_Open
  3. Private Sub Workbook_Open()
  4.     Sheets("4.0").Visible = 2              '工作表深度隱藏
  5.     Dim i As Integer
  6.     If Sheets("4.0").Range("A1") = "" Then '啟動範本
  7.         Sheets("4.0").Range("A1") = Date   '輸入日期
  8.     End If
  9. End Sub
  10. ''''''''SHEET1 的CODE  ''''''''''''
  11. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  12.     If Date - Sheets("4.0").Range("A1") >= 15 Then Exit Sub  '加入此條件
  13. End Sub
  14. '存檔為範本給客戶
複製代碼

作者: jackdream    時間: 2011-9-9 15:18

本帖最後由 jackdream 於 2011-9-9 16:10 編輯
有時給客戶的資料都為了方便,都會貼心的用一些實用性的巨集,好方便計算材料消耗,查詢,連接各個相關資料 ...


如果客戶將檔案設唯讀,或破解vba密碼,取出語法..這樣刪除巨集就沒作用了.
若不擔心上述問題(或者透過文字編輯器這類工具鎖住該檔案的vba編輯功能)
然後,在語法裡面設定一個日期,當日期一到時,即結束程式(或查詢功能失效),
不曉得是否也能達到您的目的?
例如:
Private Sub Workbook_Open()
If Date > "2011/9/8" Then ActiveWindow.Close  '假如日期超過 9/8 即直接關閉檔案
End Sub

不一定要關閉檔案,可以換成無法查詢資料或其他語法.
作者: man65boy    時間: 2011-9-10 00:12

感謝2位老師的回答,尤其是4.0巨集表竟然可如此的使用,真是另令人瞠目結舌阿!厲害~~

雖然不能刪除Sheet1裡的程式碼,不過以讓他自動的無法執行巨集,已經達到90%的目標了,真是太感謝了,

對了,在請教一下,在有4.0巨集表的檔案裡,如果在沒有VBAProject屬性密碼保護下,又不知4.0巨集表的名稱,如何把未知命名的4.0巨集表,從隱藏裡提

出顯現,在次請教老師們提供寶貴的意見。
作者: GBKEE    時間: 2011-9-10 06:35

本帖最後由 GBKEE 於 2011-9-10 06:44 編輯

回復 9# man65boy
  1. Sub Ex()
  2.     For Each sh In ActiveWorkbook.Sheets
  3.         MsgBox sh.Name
  4.     Next
  5. End Sub
複製代碼
HUNGCHILIN兄 要來站位置, 你可以參考他的發帖
作者: man65boy    時間: 2011-9-10 09:03

回復 10# GBKEE


    GBKEE老師,實在太感謝你了,大師級的2招功夫,以讓不才小弟"受用不盡"了,想不倒4.0巨集表如此的好玩,以後一定會常追蹤老師的作品,欽佩!!!
作者: HUNGCHILIN    時間: 2011-9-12 21:31

本帖最後由 HUNGCHILIN 於 2011-9-12 21:43 編輯

GB兄總是能在最快的時間內,提出最佳的答案,是最讓人佩服的
____________________________________________________

而關於這則我想了一陣子:

1.檔案再怎麼寫,只要於原始檔仍在,就會被破解,遇到高手很容易破除沒什麼用,VBP被鎖定後,程式仍是有辦法新增與刪除程式,但會被防毒程式認為是病毒,不是好方法
2. 4.0表,不啟用巨集就關閉檔案的方法在,2007以後版本,會失效
3.VBP鎖定下,只有SHEETA內的程式要刪? 這不就COPY SHEETA內容到新SHEET貼上,然後SHEETA刪除,存檔 就好了
   應該不用破解VBP鎖定.
4. 小方案很多,若用SHEET 的方案,可用下列三種,
A.在AUTOOPEN() 加上一個IF THEN 日期到了就刪除下面範例的SHEET,存檔 就好了[原創] 一個不錯的保護保密思維與構想 保護範例-包裝程式寫在工作表上然後執行程式
B.把程式寫在定義內然後定義隱藏起來.加上一個IF THEN 日期到了就刪除下面範例的定義,存檔 就好了[原創] 一個不錯的保護保密思維與構想 保護範例-包裝程式寫在定義內然後執行程式
C.或者整個檔案自己刪除自己使用一次即自動刪除 AND 使用30天後自動刪除

方法真的很多,但都無法避免,被破解,這是比較遺憾的地方
作者: GBKEE    時間: 2011-9-16 07:31

回復 11# HUNGCHILIN
4.0表,不啟用巨集就關閉檔案的方法在,2007以後版本,會失效
2007以後版本我沒用過(落伍了), 這是我的看法: 雖然不會關閉檔案  但也無法啟用巨集了.可算是達到樓主的目的.
作者: oobird    時間: 2011-9-16 14:32

要如何在指定的日期到期時突破VBAProject屬性密碼保護,自動刪除Sheet1程式區的程式碼
前提是你要知道密碼,這樣依日期判斷並非難事
若不知密碼還須要破解手續,困難度較高,而且也不鼓勵。
作者: brabus    時間: 2011-9-23 08:29

我也想學4.0巨集
可是大大說的都太深了
有沒有淺一點的東西啊




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)