saurabh255
saurabh255

Reputation: 133

How to make multiple inputbox in one userform using vbscript

I am trying to make multiple inputbox in one userform using vbscript instead of displaying one inputbox at a time i want to show multiple inputbox at once and then take entry from all of them but was unable to find any solution on internet too. In my code second input box is coming after taking input from first inputbox and vice versa instead i want to take all the inputs at once using vbscript only not vba

sInput = InputBox("Enter your name")

MsgBox ("You entered:" & sInput)

sInput1 = InputBox("Enter your Age")

MsgBox ("You entered:" & sInput1)

sInput2 = InputBox("Enter email id you want to send")
sInput3 = InputBox("Enter Subject")
sInput4 = InputBox("Enter Email Body")

Upvotes: 4

Views: 14432

Answers (2)

saurabh255
saurabh255

Reputation: 133

Hello i have implemented my vbscript code in hta and it is working fine i am sharing my full code for future reference kindly paste it in notepad and save the notepad with .hta extension

(for your reference using vbscript i am trying to take input from user store it in excel with password protection and then send that excel file through outlook to the email id which user has provided --kindly note your outlook needs to be open and running before running this code and kindly provide some different excel path i have given my file path)

  <HEAD>
    <TITLE>Send Status of Task</TITLE>
    <hta:application
        applicationname="HTA Sample"
        scroll="yes"
        singleinstance'"yes"
        >
    </HEAD>

    <SCRIPT language="vbscript">

    Sub RunThisSubroutine
        str1 = TextBox1.Value
        str2 = TextBox2.Value
        str3 = TextBox3.Value
            str4 = TextBox4.Value
            str5 = TextBox5.Value


        msgBox str1 & ", " & str2 & ", " & str3 &"," & str4&"," & str5

    Set objExcel = CreateObject("Excel.Application")
    Set objWorkbook = objExcel.Workbooks.Open("C:\Users\saurabh.ad.sharma\Desktop\rrr.xlsx")

    objExcel.Application.Visible = True

    objExcel.Sheets(1).unprotect "saurabh"
    Set rg = objExcel.Sheets(1).Range("A1")

    lr = rg.CurrentRegion.Rows.Count

    With rg
        .Offset(lr, 0).Value = str1
        .Offset(lr, 1).Value = str2

    End With


    objExcel.ActiveWorkbook.Save 
    objExcel.Sheets(1).protect "saurabh"
    objExcel.ActiveWorkbook.Save 
    objExcel.ActiveWorkbook.Close

    objExcel.Application.Quit


    Set objOutl = CreateObject("Outlook.Application")
    Set objMailItem = objOutl.CreateItem(olMailItem)

    objMailItem.Display
    strEmailAddr  = str3
    objMailItem.Recipients.Add strEmailAddr
     objMailItem.Subject=str4
    objMailItem.Body = str5
    objMailItem.Attachments.Add "C:\Users\saurabh.ad.sharma\Desktop\rrr.xlsx"
    objMailItem.Send
    Set objMailItem = nothing
    Set objOutl = nothing






    End Sub

    </SCRIPT>

    <BODY STYLE="FONT:10 pt verdana; COLOR:black; filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#FFCC66', EndColorStr='#FFFFFF')">

    Hyper Text Applications make it easy to add user inputs: <BR>
    <label for="Name     ">Name:</label>
    <input type="text" name="TextBox1" size="30"><BR><BR>
    <label for="Age">Age          :</label>
    <input type="text" name="TextBox2" size="30"><BR><BR>
    <label for="Send Email to">Send Email to:</label>
    <input type="text" name="TextBox3" size="30" ><BR><BR>
    <label for="Subject      ">Subject:</label>
    <input type="text" name="TextBox4" size="30" ><BR><BR>
    <label for="Body">Body:</label>
    <input type="text" name="TextBox5" size="30" ><BR><BR>



    <input id=runbutton class= "button" type="button" value="Run" name="button1" onClick="RunThisSubroutine">

    </BODY>

Upvotes: 2

Hackoo
Hackoo

Reputation: 18837

I found a vbscript code from @omegastripes multiline_inputbox_via_hta.vbs

I don't know if this answer can give you an idea or not?

dim completed

msgbox inputboxml("Enter text:", "Multiline inputbox via HTA", "Enter your name : " & vbcrlf & "Enter your Age : " & vbcrlf &_
"Enter email id you want to send : " & vbcrlf & "Enter Subject : " & vbcrlf & "Enter Email Body : " )

function inputboxml(prompt, title, defval)
    set window = createwindow()
    completed = 0
    defval = replace(replace(replace(defval, "&", "&amp;"), "<", "&lt;"), ">", "&gt;")
    with window
        with .document
            .title = title
            .body.style.background = "buttonface"
            .body.style.fontfamily = "consolas, courier new"
            .body.style.fontsize = "8pt"
            .body.innerhtml = "<div><center><nobr>" & prompt & "</nobr><br><br></center><textarea id='hta_textarea' style='font-family: consolas, courier new; width: 100%; height: 400px;'>" & defval & "</textarea><br><button id='hta_cancel' style='font-family: consolas, courier new; width: 85px; margin: 10px; padding: 3px; float: right;'>Cancel</button><button id='hta_ok' style='font-family: consolas, courier new; width: 85px; margin: 10px; padding: 3px; float: right;'>OK</button></div>"
        end with
        .resizeto 550, 550
        .moveto 100, 100
    end with
    window.hta_textarea.focus
    set window.hta_cancel.onclick = getref("hta_cancel")
    set window.hta_ok.onclick = getref("hta_ok")
    set window.document.body.onunload = getref("hta_onunload")
    do until completed > 0
        wscript.sleep 10
    loop
    select case completed
    case 1
        inputboxml = ""
    case 2
        inputboxml = ""
        window.close
    case 3
        inputboxml = window.hta_textarea.value
        window.close
    end select
end function

function createwindow()
    rem source http://forum.script-coding.com/viewtopic.php?pid=75356#p75356
    dim signature, shellwnd, proc
    on error resume next
    signature = left(createobject("Scriptlet.TypeLib").guid, 38)
    do
        set proc = createobject("WScript.Shell").exec("mshta ""about:<head><script>moveTo(-32000,-32000);</script><hta:application id=app border=dialog minimizebutton=no maximizebutton=no scroll=no showintaskbar=yes contextmenu=no selection=yes innerborder=no icon=""%windir%\system32\notepad.exe""/><object id='shellwindow' classid='clsid:8856F961-340A-11D0-A96B-00C04FD705A2'><param name=RegisterAsBrowser value=1></object><script>shellwindow.putproperty('" & signature & "',document.parentWindow);</script></head>""")
        do
            if proc.status > 0 then exit do
            for each shellwnd in createobject("Shell.Application").windows
                set createwindow = shellwnd.getproperty(signature)
                if err.number = 0 then exit function
                err.clear
            next
        loop
    loop
end function

sub hta_onunload
    completed = 1
end sub

sub hta_cancel
    completed = 2
end sub

sub hta_ok
    completed = 3
end sub

Upvotes: 3

Related Questions