#excel #vba #vbscript #userform
#excel #vba #vbscript #пользовательская форма
Вопрос:
Заранее благодарю вас за рассмотрение моего поста. У меня есть файл Excel, содержащий пользовательскую форму с полем имени пользователя и пароля, которое появляется каждый раз, когда я открываю Excel. Кроме того, некоторые рабочие листы защищены. Будучи новичком в vbscripting, я хотел знать, как я могу использовать его для:
- откройте книгу в фоновом режиме
- введите имя пользователя и пароль в пользовательской форме Excel
- нажмите кнопку отправки в пользовательской форме
- запустите макрос обновить все, найденный в Module1
До сих пор мне удавалось открывать книгу в фоновом режиме и тестировать ее без пользовательской формы, но поскольку я не могу ввести имя пользователя и пароль, я не могу продолжить.
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = False
oExcel.DisplayAlerts = False
oExcel.AskToUpdateLinks = False
oExcel.AlertBeforeOverwriting = False
Set oWorkbook = oExcel.Workbooks.Open("filepathfile.xlsx")
oWorkbook.RefreshAll
oWorkbook.Save
Msgbox "Excel file has been refreshed", VBOKOnly
oExcel.Quit
Set oWorkbook = Nothing
Set oExcel = Nothing
Комментарии:
1. Пользовательская форма содержит следующее: текстовое поле имени пользователя, текстовое поле пароля, кнопки отправки и отмены нажатия. Я не знаю, как и где я должен разместить код, чтобы я считывал приведенную выше информацию при запуске скрипта: (
2. Можете ли вы загрузить свой файл Excel? И поделиться ссылкой на нее?
Ответ №1:
Во-первых: ваш файл имеет расширение с .xlsm
и не .xlsx
проверяйте это перед продолжением!
Второе: Вы должны добавить эту инструкцию в vbscript: oWorkbook.Unprotect 1234
чтобы снять защиту с рабочей книги (пароль по умолчанию, который я нашел, находится 1234
в вашем файле Excel)
Третье: я добавил On Error Resume Next
инструкцию по перехвату ошибки, если она возникнет
Option Explicit
Dim Title,oExcel,oWorkbook
Title = "Use vbscript to input data in Excel userform and proceed"
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = False
oExcel.DisplayAlerts = False
oExcel.AskToUpdateLinks = False
oExcel.AlertBeforeOverwriting = False
On Error Resume Next
Set oWorkbook = oExcel.Workbooks.Open("C:StackData.xlsm")
oWorkbook.Unprotect 1234 ' The password to unprotect the WorkBook is 1234
oWorkbook.RefreshAll
oWorkbook.Save
If Err Then
MsgBox "Error Source : " amp; Err.Source amp; vbCrlf amp;_
"Error Description : "amp; Err.Description,vbCritical,Title
Else
Msgbox "Excel file has been refreshed",vbInformation,Title
End If
oExcel.Quit
Set oWorkbook = Nothing
Set oExcel = Nothing
Комментарии:
1. Отличный ответ.
2. Спасибо @Hackoo. Я протестирую скрипт и свяжусь с вами.