2008-12-15 68 views
1

我有一個Excel文件,其中包含一堆VBA和宏代碼。當我在Excel中打開該文件時,我可以選擇不「啓用」它們 - 因此這些字段中的值都保持原樣,這與上次保存時的值一樣。我需要操作上次保存的值 - 所以我不想讓宏(它們查看當前日期並相應更新值)運行。在不執行文件宏的情況下操作代碼中的文件(VB.NET)

當我通過我們的點net代碼打開它:

Dim oxlRep As Excel.Application 
Dim oWBRep As Excel.Workbook 
Dim oSheetRep As Excel.Worksheet 
Dim oRngRep As Excel.Range 
oxlRep.Open(path) 

VB代碼運行 - 擺脫的值。我一直在尋找一種不用宏來打開它的方式,或者在沒有運行宏的'安全'模式下。如果我只需雙擊該文件並且不選擇啓用宏,那麼所有值都是我想要的。

通常我們在創建文件的月份內運行此代碼,所以我們在它已經工作的3年或4年內沒有看到這個問題。現在我需要回到一些舊文件並運行一些檔案代碼...

任何人都有建議嗎?

回答

4
Application.AutomationSecurity = msoAutomationSecurity.msoAutomationSecurityForceDisable 

嘗試在此聲明後打開工作簿。 我認爲,這將禁用應用程序級別的宏(不在工作簿級別)

希望有所幫助。

+0

完美!非常感謝! – aSkywalker 2008-12-15 21:50:16

2

ADO對你有用嗎?我只能舉一個腳本例子,我很害怕。

strLinkFile = "C:\Docs\LTD.xls" 

Set cn = CreateObject("ADODB.Connection") 
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
     "Data Source=" & strLinkFile & ";" & _ 
     "Extended Properties=""Excel 8.0;HDR=YES;""" 

Set rs = CreateObject("ADODB.Recordset") 
rs.Open "Select * from [Sheet1$A1:B5]", cn, adOpenStatic 
+0

感謝您的好建議,但實際上我們將這一切從ADO中移除了。 ADO在實驗室工作會很好,隨着時間的推移給我們帶來很多問題。當試圖弄清楚爲什麼它不起作用時,這些錯誤消息本質上是無用的,所以我們轉而採用較慢但更爲詳細的方式 – aSkywalker 2008-12-15 21:53:13

相關問題