Excel и VBA: обновить защищенные поля при нажатии кнопки - PullRequest
0 голосов
/ 18 марта 2011

У меня есть документ Excel, который запрашивает базу данных SQL при нажатии кнопки. Документ должен быть только для чтения. В настоящее время при заблокированных полях при нажатии кнопки я получаю следующую ошибку времени выполнения:

Run-time error '1004':

The cell or chart that you are trying to change is protected and therefore read-only.

Я провел некоторый поиск и могу найти несколько способов открыть файлы, доступные только для чтения / защищенные паролем, но не как применить изменения к защищенным строкам, пока файл доступен только для чтения.

Это код, который у меня есть в начале модуля:

Sub Update()
Application.Calculation = xlCalculationManual


Dim Cnn As Object
Dim rstTmp As Object
  Dim appExcel As Excel.Application
  Dim wbkReport As Excel.Workbook
  Dim wksReport As Excel.Worksheet

Set Cnn = CreateObject("ADODB.Connection")
Set rstTmp = CreateObject("ADODB.Recordset")


Cnn.Open "Driver={SQL Server};Server=IPHERE;;UID=NOPE;PWD=ALMOST;DATABASE=DB;Trusted_Connection=No"

Я пытаюсь "перепроектировать" эту функциональность в текущий Excel. У меня мало опыта, поэтому я просто с головой прыгаю в глубокий конец.

Если потребуется какая-либо дополнительная информация, я буду рад ее добавить.

Заранее спасибо!

1 Ответ

2 голосов
/ 18 марта 2011

Используйте следующее:

Private Sub Workbook_Open()
    Dim wSheet As Worksheet
    For Each wSheet In Worksheets
        wSheet.Protect UserInterFaceOnly:=True
    Next wSheet
End Sub

Это заблокирует все листы в пользовательском интерфейсе, но позволит сценариям изменять что-либо.Вы должны поместить его в скрипт загрузки книги, потому что закрытие программы и ее повторное открытие приведет к тому, что защита снова вернется к полной защите.Поэтому он должен запускаться при каждом открытии файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...