Blog of Khlebalin Dmitriy

(Дорогу осилит идущий…)

Excel and VBA.

Некоторое время назад, получил задачу из бухгалтерии: Сделать файл екселя, таким, чтоб один человек в головном офисе мог редактировать весь файл введя свой пароль, а все остальные филиалы могли видеть и редактировать только свой лист.

Ничего другого, как реализовать это с помощью макроса мне в голову не пришло. В далеком 2003 я что-то простенькое делал на Vba, но было это уже давно и на данный момент я уже практически все забыл, пришлось озадачиться и вспомнить.

В итоге делаем следующее:

Создаем некую форму для пароля

И «прикручиваем» к ней следующий код:

Option Compare Text 

Private Sub CommandButton1_Click()

Select Case TextBox1.Value

Case «password»: AppVisible «Лист1»

Case » password «: AppVisible «Лист2»

Case » password «: AppVisible «Лист3»

Case » password «: AppVisible «Лист4»

Case » passwordX»: AppVisibleBoss

Case Else: Unload UserForm1

End Select

End Sub

Private Sub CheckBox1_Click()

TextBox1.PasswordChar = IIf(CheckBox1.Value = True, «*», «»)

TextBox1.SetFocus

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

If CloseMode = vbFormControlMenu Then Cancel = True

End Sub

Private Sub UserForm_Terminate()

With Application

     If .Workbooks.Count <> 1 Then

        .Visible = True

        .ThisWorkbook.Close

     Else

        .Quit

     End If

End With

End Sub

Private Sub AppVisible(iList)

With Application

     .Worksheets(iList).Visible = True

     .Worksheets(«Глава»).Visible = False

     .Visible = True

End With

UserForm1.Hide

End Sub

Private Sub AppVisibleBoss()

With Application

     For Each iList In .Worksheets

         iList.Visible = True

      Next

     .ActiveWindow.DisplayWorkbookTabs = True

     .Worksheets(«Глава»).Visible = False

     .Visible = True

End With

UserForm1.Hide

End Sub

В итоге получаем заветный файл:

При воде пароля так называемого Суперпользовалеля, видим м редактируем весь файл

При вводе пароля обычного пользователя видим только положенное ему окно:

В итоге поставленная задача выполнена.

Всем удачи!


19.05.2011 Posted by | ms office 2003/2007/2010/2013/365 | Комментарии к записи Excel and VBA. отключены