• 締切済み

VBScript で Excel の Comboboxの操作(値の選択)はできますか?

VBScript(?)で Excel内に設定されているComboboxを選択するようにさせたいのですがうまくできません。やり方が分かりません。そもそもScriptではできないのでしょうか? Visual Basicでないとできないのでしょうか? どなたかご存知の方がいらっしゃいましたら、教えてください。 本当にほんとうに最近勉強しだしたばかりのため、質問自体がおかしなことを書いているかもしれませんが、その場合はご容赦下さい。 ●会社で使っているEXCEL帳票があるのですが、毎回、同じような内容をマウスで一つ一つセルを選び値を入力したり、メニュー(Combobox?)を選択する作業が面倒なため、Scriptで自動的に値を入れたり選択させて効率化を図ろうと考えています。 普通のセルの場合、次のようなコードで書き込みができるのですが、 あらかじめ登録された内容から選択するセル(=これを"Combobox"というものと理解しています)に対しては、書き込みや選択ができません。 Comboboxのセルの選択は、どのようなコードでできるのか、教えていただけないでしょうか? いろいろ検索してみたのですが、該当するものが見つからなかったため、質問させていただきました。 (上記で書いたVBScriptは、実はWindows Scriptと言うのが正しいかもしれません) <普通のセルに値を書き込む場合> set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("C:\Documents and Settings\xxxxxx\My Documents\test.xls") Set objWorksheet = objWorkbook.Worksheets("YYYYYYYY") ObjExcel.Visible = True objWorksheet.Cells(10, 5).Value = "ZZZ" <Comboboxの値をScriptで選択するには??> .

みんなの回答

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

>Comboboxのセルの選択は、どのようなコードでできるのか、教えていただけないでしょうか? VBAやVBScript等でコードをどう記述すればいいかわからないときには、マクロの記録機能を使ってコードを自動生成してそれを参考にすると良いです。

free_scale
質問者

お礼

ご助言ありがとうございます。 質問の前に、マクロの記録機能を使ってコードを確認したのですが、 Comboboxの選択操作に関しては、コードが生成されていませんでした。 この結果から、Comboboxの操作についてはマクロやVBScirptでは操作 できないのかな?とも思ったのですが、 このような基本的な操作がVBScriptならともかくマクロでできないはずはないと思い、やり方があるはずだといろいろ調べている次第です。 ありがとうございました。

関連するQ&A

  • VBScript 先頭行の固定

    VBScript Script ファイル (.vbs)を書き出して、エクセル表の加工をしようとしています。 Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Set objWorkbook = objExcel.Workbooks.Open("~~~ ・ ・ ・ 先頭行を固定したく、下記のようにしましたがエラーになります。 objWorksheet.Range("A2").Select objWorksheet.ActiveWindow.FreezePanes = True また、データーのある最下行+2にデーターの合計を入れるように、追加コードを記述したいのですが、どのようにするのでしょうか?

  • VBScript実行時エラーについて

    filemakerでデータをコピーし下記のようなVBScriptを使いエクセルファイル(グラフを下準備してある)を開きそのデータを貼り付けグラフを完成させ、そのグラフをgifファイルにエクスポートで保存し、次にfilemaker側でそのgifファイルを読み込む作業するスクリプトを組んでいます。ここで,PCを起動したときとか、作業中でも度々VBScript実行時エラー(パスまたはファイル名が無効です)が発生します。エクスポート先のgifファイル名を替えると1時的に問題は解決しますが・・・あくまで一時的なものなのでなんとか根本的解決策をご教示願います。 Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("C:\Users\hhh gggg\Documents\FM_Trial\グラフ6.xlsx") objExcel.Visible = True objExcel.Sheets("sheet1").Select Createobject("WScript.Shell").AppActivate("グラフ6.xlsx") ' --A1のセルに値を設定 objExcel.Sheets("sheet1").Range("A1").Select objExcel.Sheets("sheet1").Paste objExcel.Sheets("sheet1").ChartObjects("グラフ 1").Chart. Export ("C:\Users\hhh gggg\Documents\FM_Trial\test61.gif") ' --0.5秒待つ WScript.Sleep(1500) ' --Excel終了 objWorkbook.Close False objExcel.Quit ' --Excelオブジェクトクリア Set objExcel = Nothing

  • VBSCriptで図形が選択できません

    困っています。 どなたかご教授願えないでしょうか。 実現したいことは、エクセルで作成したファイル「Book1.xlsm」の最初のSheetに配置された図形のうち、名前にFigが含まれるものだけを選択することです。 VBScriptで実現したいものの、「インデックスが境界を超えています」というエラーが出ます。 なお、エクセルマクロではエラーなく実現できました。 環境は以下のとおりです。 OS:Windows7 64bit Excel:2010 以下、VBScriptのコード→ Option Explicit Dim objExcel Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Dim objWorkbook Set objWorkbook = objExcel.Workbooks.Open("C:\VBSTest\Book1.xlsm") Dim arrShapeMatched() Dim sp Dim i i = 0 For Each sp In objExcel.Sheets(1).Shapes If InStr(sp.Name, "Fig") >= 1 Then ReDim Preserve arrShapeMatched(i) arrShapeMatched(i) = sp.Name i = i + 1 End If Next objExcel.Sheets(1).Shapes.Range(arrShapeMatched).Select 'この文を実行時、インデックスが境界を超えていますというエラーがでます ←以上、VBScriptのコード なお、ほぼ同様のコードをエクセルのマクロで書くとエラーは出ず、意図した通りの結果になります。 以下、マクロに書いたコード→ Sub SelectShape() Dim arrShapeMatched() Dim sp Dim i i = 0 For Each sp In ActiveSheet.Shapes If InStr(sp.Name, "Fig") >= 1 Then ReDim Preserve arrShapeMatched(i) arrShapeMatched(i) = sp.Name i = i + 1 End If Next ActiveSheet.Shapes.Range(arrShapeMatched).Select 'マクロではエラーにならない End Sub ←以上マクロに書いたコード 投稿の都合上、xlsm形式のファイルを読み込んでいますが、実現したい形はマクロが含まれないファイル形式としたいと考えています。 よろしくお願いします。

  • HTML内に組み込んだVBScriptでExcelの値を取得したい

    ローカルドライブに C:\Book1.xls があります。 VBScriptで下記の記述をして、拡張子.vbsで保存し、そのファイルをダブルクリックすると、メッセージボックスにC:\Book1.xls のシート「管理」のセルA1の値を表示することができます。 Set objExcel = WScript.GetObject("C:\Book1.xls") WScript.Echo objExcel.Sheets("管理").Cells(1,1) これと同じようなことをHTML内に埋め込んだVBScriptでやりたいと考えています。 C:\Book1.xls のシート「管理」のセルA1に入力されている値を取得して、document.write を使って書き出したいと考えています。 出来れば、ネットワーク上のパスに置かれたExcelファイルに対しても同様のことをしたいと考えています。 サンプルコードなどをご教授願えないでしょうか?

  • エクセルVBAとVBScript

    WinXP/Pro  エクセル2002使用です。 VBScriptで下記のメール送信のプログラムを作り、 それをエクセルVBA→BATファイル→VBScript(→エクセルVBAに戻る)という流れで自動化させましたが、下記のコードでは、現在進行中のエクセルVBAとは別のブックを作るのでうまくいきません。 (エクセルブックを2重起動してしまいます) Set objExcel =GetObject( "d:\auto\aaa.xls") Dim stradrs Dim strkk Dim strjikan with objExcel stradrs = .Worksheets("Sheet1").Cells(5,1).Value strkk= .Worksheets("Sheet1").Cells(4,1).Value strjikan = .Worksheets("Sheet1").Cells(4,2).Value end with Set objEmail = CreateObject("CDO.Message") objEmail.From = "***@***.com" objEmail.To = stradrs objEmail.Subject = "表題" objEmail.Textbody = "内容" objEmail.AddAttachment("d:\auto\" & strkk & strjikan & ".doc") objEmail.Send Set objEmail = nothing Set objExcel = nothing 目的は、最初に立ち上げている(VBScriptを呼び出したVBAを実行中の)エクセルから値を取得したいのです。 下記いずれかの方法によると思っています。 (1)エクセルVBAから直接VBScriptに引数で値を渡すことは可能でしょうか? (2)VBScriptからエクセルブックを起動させずに値を取得することは可能でしょうか? 値はテキスト文字です。 何卒よろしくお願いします。

  • JavaScript内で得た値をVBScript内で使用する。

    こんにちは! ちょっと複雑なのですが、ご存知でしたら教えて下さい。 今VBScriptで、ADOを使用してデータベース接続をし、コンボボックス で一覧を選択できるようにしています。 ここで<SCRIPT LANGUAGE=javascript>を使用して _onchange()関数(コンボボックスの値が変更したら関数を実行する) でコンボボックスの値を取得します。 </SCRIPT> ↑この部分だけjavascriptで他はVBScript で、この関数で取得した値をVBScript内で使用したいのですが、 可能でしょうか?

  • 入力フォームの値をEXCELに出力したい(asp)

    asp(.NETではありません)で、入力フォームを作っています。 そして送信ボタンを押したら、フォームの値をEXCELに出力したいのです。 現在、aspの中にvbsを記述し、ボタンを押したらEXCELを開く・・・ところまでは出来ているのでそこにリストで選択された値を出力したいのですが、どうしても値を渡す事ができません。 <SCRIPT LANGUAGE="VBScript"> <!-- Sub cmdMain_OnClick set objExcel= CreateObject("Excel.Application") objExcel.Visible=True objExcel.Workbooks.Open "C:\sample.xls" End Sub --> </SCRIPT> <html> <head> <title>フォームの入力値を受け取る</title> </head> <body> <form method="post" action="form.asp"> <select name="list"> <option value="test1">テスト1</option> <option value="test2">テスト2</option> <input type="button" name="cmdMain" value="作表"> </form> </body> </html> このあと、どのようにしたらリストの値をEXCELに渡す事ができるのでしょうか。 お力をお貸し下さい、宜しくお願い致します。

  • VBScriptで自動リンクONでExcelファイルのOpen

    お世話になっております。VBScriptでExcelの既存ブックファイル をオープンさせるのを見よう見真似で作成したのですが、開こうと しているブックに自動リンクが設定されていて、毎回 「開いているブックには、ほかのファイルへの自動リンク・・・・」 と聞かれ「Y」をクリックしています。 希望としてはYを自動で選択してオープンしてくれたらと思っています。 調べてみてUpdateLinkがTrueとか書けばいいように思っていろいろ 試してみたのですがイマイチうまく行きません。 すいませんが教えてもらえませんか? [Source]------------------------------------------------------- Option Explicit Dim objExcel 'エクセルオブジェクトを作成します Set objExcel = CreateObject("Excel.Application") 'エクセル画面を表示します objExcel.Visible = True 'ワークブックを開きます objExcel.Workbooks.Open "C:\Book1.xls" 'エクセルオブジェクトの破棄 Set objExcel = Nothing

  • vbs 文字位置を中央に

    vbscriptでエクセルファイルへ出力するスクリプトを作成しています。 エクセルファイルのセルに文字列を入力し、文字を中央揃えにしたいのですが、うまくいきません。 ----------------------------------------- Dim FSO, objExcel, objBook, objSheet Set FSO = CreateObject("Scripting.FileSystemObject") Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Set objBook = objExcel.Workbooks.Add Set objSheet = objExcel.Worksheets("Sheet1") objSheet.range("a1") = "test" objSheet.range("a1").HorizontalAlignment = xlHAlignCenter Set FSO = Nothing : objExcel = Nothing : Set objBook = Nothing : Set objSheet = Nothing ----------------------------------------- どうすれば、中央揃えにできますでしょうか? よろしくおねがいします。

  • Excel:コンボボックスの値をセルにセットする場合

    Excel2000を使っています。 コンボボックスで選択した内容をアクティブなセルに入力するために、以下のようなコードを作成しました。 (ユーザフォームにコンボボックスを1つ作成しています) ------------------------------------------ Private Sub UserForm_Initialize() ComboBox1.ColumnCount = 2 For I = 0 To 10 ComboBox1.AddItem Worksheets("元ネタ").Cells(I + 2,1).Value ComboBox1.List(I, 1) = Worksheets("元ネタ").Cells(I + 2,2).Value Next End Sub ------------------------------------------ Private Sub ComboBox1_Change() Worksheets("入力用").Activate ActiveCell.Value = ComboBox1.Text End Sub ------------------------------------------ このコンボボックスは、2列を表示させています。最後にセルに値を入力すると、今のコードでは1列目の値が入りますが、実際には2列目の値だけを入れたいんです。でもコンボボックスの選択時は、先頭列に1列目の値を表示させたいんです。 どうすれば、2列目の値をアクティブセルに入力できるでしょうか?

専門家に質問してみよう