Используйте vbscript для ввода данных в пользовательскую форму Excel и продолжения

#excel #vba #vbscript #userform

#excel #vba #vbscript #пользовательская форма

Вопрос:

Заранее благодарю вас за рассмотрение моего поста. У меня есть файл Excel, содержащий пользовательскую форму с полем имени пользователя и пароля, которое появляется каждый раз, когда я открываю Excel. Кроме того, некоторые рабочие листы защищены. Будучи новичком в vbscripting, я хотел знать, как я могу использовать его для:

  1. откройте книгу в фоновом режиме
  2. введите имя пользователя и пароль в пользовательской форме Excel
  3. нажмите кнопку отправки в пользовательской форме
  4. запустите макрос обновить все, найденный в 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. Я протестирую скрипт и свяжусь с вами.