Управлять файлом в коде (VB.NET), не выполняя макросы файла - PullRequest
1 голос
/ 15 декабря 2008

У меня есть файл Excel, в котором есть набор VBA и код макроса. Когда я открываю файл в Excel, я могу не включать их - поэтому значения в полях остаются такими же, какими они были во время последнего сохранения. Мне нужно манипулировать значениями в том виде, в котором они были сохранены в последний раз, поэтому я не хочу запускать макросы (которые смотрят текущую дату и обновляют значения соответственно).

Когда я открываю его с помощью нашего точечного сетевого кода:

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 лет, когда он работал. Теперь мне нужно вернуться к некоторым старым файлам и запустить некоторый архивный код ...

У кого-нибудь есть предложение?

Ответы [ 2 ]

4 голосов
/ 15 декабря 2008
Application.AutomationSecurity = msoAutomationSecurity.msoAutomationSecurityForceDisable

Попробуйте открыть книгу после этого утверждения. Я думаю, это отключит макросы на уровне приложения (не на уровне книги)

Надеюсь, это поможет.

2 голосов
/ 15 декабря 2008

Вам полезен 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...