VBスクリプトでIDの入力方法を解説-初心者必見!

このQ&Aのポイント
  • アプリケーションAでIDが求められるが、わからない場合に使えるVBスクリプトを解説します。
  • VBスクリプトのプログラムを使用して、IDを一つずつ入力していくことができます。
  • プログラム内の特定の箇所でIDを入力し、ENTERキーを押下すると、自動的にID入力欄が表示されます。
回答を見る
  • ベストアンサー

VBスクリプトで値の入力について

アプリケーションの起動後にIDを求められるアプリケーションAがあり、 そのIDがわからなくて困っています。 以下のようなプログラム(VBスクリプト)で、IDを片っ端から入力しようと考えています。 初心者なもので恐らく下記プログラムも誤っている箇所があると思いますが、 その部分は読み飛ばしてください。 作成中のプログラム --------------------------------------------------------------------- Dim CalcID Dim ID Dim Length Dim i Dim j '1バイト分だけFF以外のはず for j=1 to 15 for i=0 to 256 CalcID = CStr(Hex(i)) CalcID = UCase(CalcID) Length = Len(CalcID) if Length=0 then CalcID = "0" & CalcID end if ID = Replace("FFFFFFFFFFFFFF", "FF", CalcID, j, 1, 1) '----------------------------------------------------------------------- 'この箇所でIDを入力し、ENTERを押下したい '補足 'ENTER押下後は自動的にID入力欄が表示されます。 '----------------------------------------------------------------------- next j=j+1 next ---------------------------------------------------------------------------------- 以上、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

sendkeysメソッドを使うと、アプリケーションへのキーインをシミュレートすることが出来ます。 詳しい使い方は「VBScript sendkeys」で検索して下さい。

kanjaneko
質問者

お礼

おかげさまでやりたいことができました。 ありがとうございました。

関連するQ&A

  • ExcelVBAで、選択範囲内で同じ値が入力されたセルを調べる

    選択範囲内(縦一列)で同じ値が入力されたセルの色を黄色にするプログラムを作りました。 Sub 選択範囲内で同じ値が入力されたセルを調べる_縦() Dim startrow As Byte Dim lasrow As Byte Dim i As Long Dim j As Byte Dim atai If TypeName(Selection) <> "Range" Then Exit Sub startrow = ActiveCell.Row '最初のセルの列番号を取得 lasrow = Selection.Rows(Selection.Rows.Count).Row '最終列番号を取得 '同じ値が入力されているセルを黄色にする For i = startrow To lasrow - 1 If ActiveSheet.Cells(i, ActiveCell.Column).Interior.ColorIndex = xlNone Then atai = ActiveSheet.Cells(i, ActiveCell.Column).Value For j = i + 1 To lasrow If atai = ActiveSheet.Cells(j, ActiveCell.Column).Value Then ActiveSheet.Cells(i, ActiveCell.Column).Interior.ColorIndex = 6 ActiveSheet.Cells(j, ActiveCell.Column).Interior.ColorIndex = 6 End If Next End If Next End Sub 但し、上記のプログラムでは選択範囲内に結合セルがあるとエラーになってしまいます。 どなたか、解決方法をご教授頂けませんでしょうか? 宜しくお願い致しますm(._.)m

  • VB2008 ProgressBar について

    VB2008 ProgressBar について教えてください。 pictureboxの走査プログラムを作成しているのですが。 走査を行いHITした結果を四角で囲むというプログラムを作成しています。 ですが、実行するとどうしてもprogressbarが最後まで進んでから四角の描画処理をしてしまいます。以下にソースを書きますので、間違っている場所を教えてください。 よろしくお願いします。 (Textbox1を閾値としてsikiiに代入し、二次元配列Cor(,)と比較して判断します。)ProgressBarの最大値とSTEP値はFormLordで指定しています。 Dim sikii = Val(TextBox1.Text) Dim g As Graphics g = PictureBox3.CreateGraphics() Dim i, j As Integer For i = 0 To PictureBox3.width For j = 0 To PictureBox3.Height If Cor(i, j) >= sikii Then g.DrawRectangle(Pens.Black,i,j,16,16) End If ProgressBar1.PerformStep() Next j Next i MsgBox("完了しました。", , "通知")

  • 正しい値が戻ってきません。どこが間違っているのでしょう。

    おはようございます http://www.newcanyon.com/i/tips.html のルールで相性を占うプログラムをここで何度か質問させていただきまして、組み、無事できた!と思ったのですが、実行すると誤った数値が戻ってきます いったいどこが間違っているんでしょうか? ぜひヒントを出していただけると助かります ※ん・記号などの文字は6として計算します 入力フォームは あなたの名前 <INPUT TYPE=text NAME=myname Value="" SIZE=20> 相手の名前 <INPUT TYPE=text NAME=yourname Value="" SIZE=20> から成り Receive.aspは NAME1=Request.Form("myname") NAME2=Request.Form("yourname") NAME=NAME1&NAME2 Dim i,p p=Len(NAME) Dim Suji(100) For i=1 to p Suji(i)=Mid(NAME,i,1) Select Case Suji(i) Case Suji(i)="あ","か","が"… Suji(i)=1 Case Suji(i)="い","き","ぎ"… Suji(i)=2       以下ウ、エ、オの段が続く Case Else Suji(i)=6 End Select Next Dim m,j,k,n,nows m=Len(NAME) n=Len(NAME) For k=1 to n-1 For j=1 to m-1 Suji(j)=Suji(j)+Suji(j+1) nows=k If Suji(j)>=10 Then Suji(j) = Suji(j) mod 10 End If Next Next Aisho=Suji(j-1)&Suji(j) Response.Write S1 & "相性は" & aisho & "%です" %> たとえば、myname=あ yourname=い なら26%が戻ってきます。 selectのところが違うんでしょうか…

  • チェックボタンでチェックした値をセルに連続入力

    チェックボタンでチェックした行(表-1)を下記のコードでExcelセル(表-2)に入力できたのですが既にに"B2:E3","B10:E10",に値が入力されている場合、B4から続けて入力したいのですがどのように コードを追記すれば良いのかどなたかわかる方よろしくお願いします。 Sub 入力() Dim i As Integer Dim j As Integer Dim k As Integer k = 3 i = Range("Z65536").End(xlUp).Row For j = 3 To i If Range("Z" & j).Value = True Then k = k + 1 Range("B" & k).Value = k - 1 Range("H" & j, "K" & j).Copy Range("B" & k) End If Next j End Sub

  • VBのGUI 行列の和を求める

    VBのGUIです。 行列の足し算を行うプログラムをつくりたいです。 以下のプログラムはできたところまで作成しています。 □個の□行□列(□はテキストボックス)の所に例えばユーザーが3 3 3と入力したとします。 ボタン1を押すと3×3の3個個分のテキストボックスがでてきて、要素を打ち込めるようになります。 そしてユーザが要素を打ち込みます。次に要素が 1 2 1  2 1 2   2 1 2 2 1 2  1 2 1   1 2 1 1 2 1  2 1 2   1 2 1 というように入力されたとします。 ボタン2を押すと 3×3のテキストボックスが出てきて この3つの行列の和を足した 5 4 5 4 5 4 4 5 4というようにテキストボックスに表示されるようにしたいです。 3この3行3列の和だけでなく何個の何行何列の場合でもできるようにしたいです。 どのようなソースでこのプログラムはできるのでしょうか。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Bounds = New Rectangle(10, 10, 1300, 800) Dim number As Integer Dim rows As Integer Dim columns As Integer If Not Integer.TryParse(TextBox3.Text, number) Then MessageBox.Show("数字で入力してください", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If If Not Integer.TryParse(TextBox1.Text, rows) Then MessageBox.Show("数字で入力してください", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If If Not Integer.TryParse(TextBox2.Text, columns) Then MessageBox.Show("数字で入力してください", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If For k = 1 To number For i = 1 To rows For j = 1 To columns Dim tb As TextBox = New TextBox() tb.Name = "R" & i.ToString() & "C" & j.ToString() & "No" & k.ToString() Me.Controls.Add(tb) tb.Top = (i - 1) * 30 + 80 tb.Left = (j - 1) * 60 + 70 * (columns * (k - 1)) + 10 tb.Width = 50 Next Next Next End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim number As Integer Dim rows As Integer Dim columns As Integer Dim r As Integer Dim n As Integer Dim m As Integer Dim sum As Double sum = 0 For n = 1 To columns For m = 1 To rows sum = 0 For r = 1 To number Next For i As Integer = 1 To rows For j As Integer = 1 To columns Dim tb As TextBox = New TextBox() tb.Name = "R" & i.ToString() & "C" & j.ToString() Me.Controls.Add(tb) tb.Top = (i - 1) * 30 + 80 tb.Left = (j - 1) * 60 + 10 tb.Width = 40 Next Next Next Next End Sub End Class

  • VB2010での連立方程式の計算

    VB2010でガウスの消去法のプログラムを作りたいんですが、うまく解が求まらないのでメールしました。今回の例は未知数8です。ちなみにVBは初心者です。 Myarrayは、列の1-8個目までが、各未知数の係数、9個目が整数を表しています。 行は式を表していて、未知数が8個あるので8行あります。 Dim MyArray(,) As Double = {{-1, 1, -1, 1, 0, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 0, 0, -1}, {0, 0, 0, 0, 0, 0, 0, 1, -1}, {0, 0, 0, 0, 1, 1, 1, 1, 0}, {0, 0, 1, 0, 0, 0, -1, 0, 0}, {0, 2, 0, 0, 0, -2, 0, 0, 0}, {-6, 2, 0, 0, 0, 0, 0, 0, 0}, {6, 2, 0, 0, 0, 0, 0, 0, 0} } Const N = 8 Dim i, j, k, l, pivot As Integer Dim x(N) As Double Dim p, q, m As Double Dim b(1, N + 1) As Double For i = 0 To N - 1 Step 1 m = 0 pivot = i For l = i To N - 1 Step 1 'i列の中で一番値が大きい列を選ぶ If System.Math.Abs(MyArray(l, i)) > m Then m = System.Math.Abs(MyArray(l, i)) pivot = l End If Next 'pivotがiと違えば、行の入れ替え If pivot <> i Then For j = 0 To 8 Step 1 b(0, j) = MyArray(i, j) MyArray(i, j) = MyArray(pivot, j) Myarray(pivot, j) = b(0, j) Next End If Next For k = 0 To N - 1 Step 1 p = Myarray(k, k) '対格要素を保存 MsgBox(p) MyArray(k, k) = 1 '対格要素は1になることが分かっているので代入 For j = k + 1 To N Step 1 MyArray(k, j) = MyArray(k, j) / p Next For i = k + 1 To N - 1 Step 1 q = MyArray(i, k) For j = k + 1 To N Step 1 MyArray(i, j) = MyArray(i, j) - q * MyArray(k, j) Next '0となることが分かってるので代入 MyArray(i, k) = 0 Next Next '解の計算 For i = N - 1 To 0 Step -1 x(i) = MyArray(i, N) For j = N - 1 To i + 1 Step -1 x(i) = x(i) - MyArray(i, j) * x(j) Next Next MsgBox(x(0)) MsgBox(x(1)) MsgBox(x(2)) MsgBox(x(3)) MsgBox(x(4)) MsgBox(x(5)) MsgBox(x(6)) MsgBox(x(7)) 出力結果としてNAN(非数値)と出てきてしまいます。原因は、pに0が入ってしまっていることがあるからだと思いますが、これを回避する方法はないでしょうか?ご教授よろしくお願いします。

  • Excelにおけるセルの値をVB2005に配列として取り込みたい

    Excelのセルの値をVB2005に配列として取り込みたいのですが、Excel.Rangeと配列の整合性が取れず困っています。 なんらかヒントになるような助言をお願いします。 以下は今までに作成中のコードです。 Public Class Form1 Dim xlsapp As New Excel.Application Dim xlsbook As Excel.Workbook Dim xlssheet As Excel.Worksheet Dim fn As String = "sample.xls" Dim Q(,,) As Double Dim i, j, x, y, z As Integer Dim k As Double Dim w(i), v(i), u(i) As Double Dim As Object Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click xlsbook = xlsapp.Workbooks.Open(fn) xlssheet = xlsbook.Worksheets(1) k = 1 w(i) = xlssheet.Cells(1, 3) v(i) = xlssheet.Cells(1, 2) u(i) = xlssheet.Cells(1, 1) For x = 2 To 11 If w(i) = 1 Then For y = 2 To 11 If v(i) = 1 Then Q(1, 1, k) = u(i) k = k + 1 End If Next End If Next z = k For k = 1 To z TextBox1.Text = Q(1, 1, k) Next End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() xlsapp.DisplayAlerts = False xlssheet = Nothing xlsbook.Close() xlsbook = Nothing xlsapp.Quit() xlsapp = Nothing End Sub End Class

  • このスクリプトはどこが間違っているのでしょう

    IE7b3です。次のスクリプトの実行時に「";" がありません」というエラーがでるのですが、なぜでしょうか。配列の定義が間違っているようなのですが・・・。 window.onload = function(e) { var w = 0; tbs = document.getElementsByTagName("div"); for (i = 0; i < tbis.length; i ++) { if (tbs[i].className == "tb") { array tbis = new Array(tbs[i].getElementsByTagName("img")); for (j = 0; j < tbis.length; j ++) { if (tbis[j].className == "tbi") { w = tbis[j].getAttribute("width"); alert(w); } } } } };

  • EXCEL VBA 配列変数の値すべてを返すには

    EXCELは2002ですが、97でも動くと嬉しいです。 《質問》 1~10をランダムに並べるためのプログラムを書きました。 これはこれで動くのですが、一行(3行目)だではなく 4行目にも、5行目にも同じことをしたい場合、 バブルソートの部分をサブルーチン(関数)にしたいのですが X_v() = GetSortArray(n_s,n_v)()とはできません。.cloneもだめですよね。 かといって、要素毎に引くとその度にRndが効いて、1~10が並びません。 どのようにやるのが、スマートなのでしょうか?よろしくお願いします。 《以下プログラム》 Sub Bu_Click() Dim i As Integer Dim j As Integer Const n_e = 10 Const n_s = 1 Dim X_r(n_e) As Long Dim X_v(n_e) As Long Dim temp1 As Long Dim temp2 As Integer Randomize For i = n_s To n_e X_r(i) = Int(Rnd * 10 ^ 9) X_v(i) = i Next i For i = n_s To n_e - 1 For j = n_s To n_e - 1 If X_r(j + 1) < X_r(j) Then temp1 = X_r(j + 1) X_r(j + 1) = X_r(j) X_r(j) = temp1 temp2 = X_v(j + 1) X_v(j + 1) = X_v(j) X_v(j) = temp2 End If Next j Next i For i = 0 To n_e - 1 Cells(3, 3 + i).Value = X_v(i + 1) Next i End Sub Public Function GetSortArray(s As Integer, e As Integer) As Long() Dim r() As Long Dim v() As Long Dim temp1 As Long Dim temp2 As Integer ReDim r(e) ReDim v(e) Randomize For i = s To e r(i) = Int(Rnd * 10 ^ 9) v(i) = i Next i For i = s To e - 1 For j = s To e - 1 If r(j + 1) < r(j) Then temp1 = r(j + 1) r(j + 1) = r(j) r(j) = temp1 temp2 = v(j + 1) v(j + 1) = v(j) v(j) = temp2 End If Next j Next i GetSortArray = v() End Function ありゃ?Tabのスペース消えますね。

  • 1から入力された数までの素因数を数えるプログラム

    こんにちは 1から入力された数(N)までの素因数を数えるプログラムを 作成したいのですが、うまくいきません。 たとえば10と入力すると2と表示されてしまいます。 どこがおかしいのかわかりません。 どなたか教えてください。おねがいします。 N個の配列を用意し、1を入れていき、 素因数でない数の要素には0をいれて、 最終的に1が入っている配列の数を数えて1~Nまでの 素因数の数を数える方法を考えています。 Dim M As Integer Dim N As Integer Dim i As Integer Dim j As Integer Dim sum As Integer Dim L(1000) As Double N = Val(TextBox1) M = N i = 1 Do Until i > N L(i) = 1 i = i + 1 Loop i = 2 Do Until i > M j = i * 2 Do Until j > M L(j) = 0 j = j + 1 Loop i = i + 1 Loop sum = 0 For i = 2 To N If L(i) = 1 Then sum = sum + 1 End If Next i

専門家に質問してみよう