Excel的VBA腳本如下
ThisWorkbook.SaveAs
ActiveWorkbook.SaveAs
為作業簿保存。
移除作業簿中的模塊.Remove .Item后,
作業簿VBA腳本如何對模塊保存起作用?
uj5u.com熱心網友回復:
什么意思?沒看明白。uj5u.com熱心網友回復:
移除模塊后運行
ThisWorkbook.SaveAs 或
ActiveWorkbook.SaveAs 腳本
在關閉檔案時還需要確認一次保存或取消按鈕。
uj5u.com熱心網友回復:
移除模塊后設定thisworkbook.saved=true,然后退出作業簿就不會出現保存的對話框了......uj5u.com熱心網友回復:
代碼如下:
SUB 6()
'
ActiveWorkbook.Sheets("6").Select
Range("A1:A1").Select
With Application.VBE.ActiveVBProject.VBComponents
.Remove .Item("6")
End With
ThisWorkbook.Saved = True
ThisWorkbook.SaveAs ("C:\6.xls")
'
End Sub
運行結果仍然出現保存的對話框,按保存移除模塊,按不保存不移除模塊。
uj5u.com熱心網友回復:
SUB 6()--------------------------------
這程序名稱第一個字符能用數字嗎??!!!改改吧
而且這種情況應該無需:ThisWorkbook.Saved = True
uj5u.com熱心網友回復:
程序名不重要,問題還沒解決。
uj5u.com熱心網友回復:
參考一下下面的代碼:Sub Test()
'''如果不設定DisplayAlerts=false,則saveas時,如果存在會提示是否覆寫
Application.DisplayAlerts = False
Dim VBC
With Application.VBE.ActiveVBProject
For Each VBC In .VBComponents
If VBC.Name = "模塊1" Then
.VBComponents.Remove VBC ''僅僅洗掉 模塊1
End If
Next
End With
ThisWorkbook.SaveAs ("d:\6.xls")
Application.DisplayAlerts = True
End Sub
uj5u.com熱心網友回復:
采用VBA變數后運行正常,設定Application.DisplayAlerts引數為False后同名檔案覆寫保存提示消失,
但是關閉檔案仍然彈選擇框,如果選擇不保存就會發現模塊還是沒有被移除,只有選擇再保存按鈕才能移除模塊。
uj5u.com熱心網友回復:
作業簿關閉時如果不保存修改可以這樣:thisworkbook.Close false關閉時要同時保存修改可以這樣:thisworkbook.Close true
------------------------------------------------------------
你還是弄段完整的代碼,貼上來看看問題出在哪里(說清楚需要的效果)
uj5u.com熱心網友回復:
不管thisworkbook.Close true還是false,檔案是關閉了,但模塊仍然沒有被移除。
<code>
Sub my_6()
Range("A1:A1").Select
With Application.VBE.ActiveVBProject.VBComponents
.Remove .Item("my_6")
End With
ThisWorkbook.SaveAs ("D:\6.xls")
End Sub
</code>
該段代碼的作用是移除xls檔案中的my_6模塊,并另存為不含有該模塊的xls檔案。
uj5u.com熱心網友回復:
終于弄清楚了!!!不容易啊。“my_6模塊” 只是一個程序名稱,而不是模塊名稱!!!上面所有的代碼都無效!!
uj5u.com熱心網友回復:
my_6既是模塊名,也是洗掉這個模塊的程序名。
uj5u.com熱心網友回復:
參考下面的代碼:Sub test()
''這個例子洗掉“模塊1”模塊中的pro_5程序
''要參考:Microsot Visual Basic For Applications Extensibility 5.3
Dim VBC As VBComponent, iStart As Long, k As Long
Set VBC = ThisWorkbook.VBProject.VBComponents("模塊1")
k = VBC.CodeModule.ProcCountLines("pro_5", vbext_pk_Proc) ''該程序所占用的總行數
iStart = VBC.CodeModule.ProcStartLine("pro_5", vbext_pk_Proc)
VBC.CodeModule.DeleteLines iStart, k ''洗掉該程序
End Sub
uj5u.com熱心網友回復:
這個方法我試過,不錯。洗掉程序的行后保存留下個空模塊。
問題是否能夠把整個模塊移除,然后保存不需要確認。
uj5u.com熱心網友回復:
哦,還是要洗掉整個模塊呀,代碼上面不都有了嗎?........
好吧,再貼一個吧:
Sub Test()
'''將這個程序放在VBComponents("sheet1")里,
'''并添加一個模塊,其名稱為"模塊1"并保存退出。
'''重新打開這個作業簿發現有"模塊1",好了開始運行這個代碼
'''作業簿會自動關閉,重新打開后會發現"模塊1"沒有了!
Dim VBC As VBComponent
With ThisWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Name = "模塊1" Then
.VBComponents.Remove VBC ''僅僅洗掉 模塊1
End If
Next
End With
'''如果在執行下面陳述句時不希望出現提示,請恢復下面注釋的部分
'''Application.DisplayAlerts = False '''屏蔽提示
ThisWorkbook.SaveAs "d:\6.xls"
'''Application.DisplayAlerts = True '''恢復提示
ThisWorkbook.Close True
End Sub
uj5u.com熱心網友回復:
作業簿會自動關閉不錯,但是重新打開后會發現"模塊1"還在,這就是上面代碼測驗的結果。
uj5u.com熱心網友回復:
我想我幫不了你啦!建議你找蓋茨說理去:為什么在我這兒不管是2003,還是2007都沒問題,到你那就不行了呢?
uj5u.com熱心網友回復:
我想我幫不了你啦!建議你找蓋茨說理去:為什么在我這兒不管是2003,還是2007都沒問題,到你那就不行了呢?
重新安裝了Microsoft Office Excel 2003(11.5612.5606)版本,測驗結果沒變,不知你的2003為何版本。
uj5u.com熱心網友回復:
這種保護都是自欺欺人,沒用的,要么移植到VB6,要么換成VSTO.uj5u.com熱心網友回復:
這種保護都是自欺欺人,沒用的,要么移植到VB6,要么換成VSTO.
請問這種保護指的是哪種功能?
uj5u.com熱心網友回復:
重新安裝了Microsoft Office Excel 2003(11.5612.5606)版本,測驗結果沒變,不知你的2003為何版本。
我的office2003打過sp3,版本號:11.8404.8405
uj5u.com熱心網友回復:
安裝Office2003SP3-KB923618-FullFile-CHS.exe補丁后,測驗結果沒有改變。補丁安裝后版本號顯示如下:
uj5u.com熱心網友回復:
我的office2003打過sp3,版本號:11.8404.8405
比爾-蓋茨退休了,該問誰去討說法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/113927.html
標籤:VBA
上一篇:VB中如何宣告union結構?
下一篇:如何實作圖片切換?
