2017-11-20 518 views
2

複数の入力ボックスを一度に1つの入力ボックスを表示する代わりに、vbscriptを使用して1つのユーザーフォームに作成しようとしています。インターネット上でも解決策を見つけることができませんでした。 は私のコードでは、第二の入力ボックスには、最初の入力ボックスから入力を取った後来ているとその逆の代わりに、私は一度にすべての入力をしたいVBScriptを使用してのみvbscriptを使用して1つのユーザーフォームで複数のinputboxを作成する方法

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") 
+0

vbaにタグが設定されているので、[excel VBA Userforms](http://www.excel-easy.com/vba/userform.html)を使用してみてください。 – Gurman

+0

私はvba userformを使用していることを知っていますが、私はvbscript ohkを使ってそれをやりたいのですが、VBAタグ@Gurmanを削除します – saurabh255

+0

VBScriptでは可能ではないと思います。 [HTAでは](https://www.experts-exchange.com/questions/23891839/InputBox-with-multiple-fields-inputs-using-VBScript.html)で試すことができます。 – Gurman

答えて

1

こんにちは私はHTAで私のVBScriptコードを実装しているし、それが正常に動作している私は親切にメモ帳に貼り付けると、.HTA拡張子を持つ

をメモ帳を保存し、将来の参照のための私の完全なコードを共有しています(あなたのために参照を使用してvbscript私はパスワードを保護してExcelでユーザーストアから入力を取ろうとしているし、そのユーザーが提供している電子メールIDにoutlookを介してファイルを送信する--kindlyこのコードを実行する前に開いて実行する必要があります私のファイルパスを与えたいくつかの異なるExcelパスを親切に提供してください)

<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> 
1

をVBAではない私は@omegastripes multiline_inputbox_via_hta.vbs

からVBScriptコードを見つけました

この回答があなたにアイデアを与えることができるかどうかわかりません。

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 
関連する問題