- ベストアンサー
Excelのシート上にtextboxを作成する方法
VB.netのコードからExcelのシート上にtextboxを作成する方法を教えてください。 新規シートを作成するところまでは自力で出来ています。 どなたかアドバイスお願いします。 ※参考ページなどありましたらお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 先頭行に「Option Strict On」がありませんか? これは「遅延バインディングを禁止」する命令です。 それがある場合には 「ExlSheet.OLEObjects.Add("Forms.TextBox.1")」 は直接呼び出せません。。。。 「Option Strict On」の行を取り除くのもひとつの解決策だとは思いますが、取り除かない場合は以下のようにしたらできると思います。 Dim objOLE As Excel.OLEObjects objOLE = Ctype(ExlSheet.OLEObjects,Excel.OLEObjects) objOLE.Add("Forms.TextBox.1") ではどうでしょうか? また、#2さんの言われる「テキストボックス」と私の言う「テキストボックス」は基本的には異なるオブジェクトですが、使用方法は同一となりますので、ご使用になりたいオブジェクトを利用されることをお勧めします。 (#2さん=Shape、私=OLEObject)
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
ExlSheet.Shapes.AddTextbox(1, 100, 100, 200, 50) ではどうでしょう AddTextbox(Orientation, Left, Top, Width, Height)
お礼
BLUEPIXYさんアドバイスありがとうございます。 Shapeのほうも勉強してみます。
- takkunnet
- ベストアンサー率74% (32/43)
Sheet1上にTextBoxを追加する場合は Call Sheet1.OLEObjects.Add("Forms.TextBox.1") で追加できます。 作成する位置なども調整可能です。 詳しくは Excel VBA のヘルプ(OLEObjectsで調べると良いです)を参照することをお勧めします。
補足
takkunnetさんありがとうございます。 下記が作成中のコードなのですが、テキストボックスを生成する箇所のコードで"遅延バインディングを使用できません"とのエラーが発生してしまいます。 シートの宣言の箇所でのミスでしょうか? '表作成 Private Sub Button1_Click(~) ~ Dim Exl As New Excel.Application Dim ExlBook As Excel.Workbook Dim ExlSheet As Excel.Worksheet Exl = CType(CreateObjec("Excel.application"), Excel.Application) ExlBook = CType(Exl.Workbooks.Add, Excel.Workbook) ExlSheet = CType(ExlBook.Worksheets(1), Excel.Worksheet) 'テキストボックスを生成 ExlSheet.OLEObjects.Add("Forms.TextBox.1") ←エラー Exl.Application.Visible = True End Sub
お礼
「Option Strict On」を取り除かない方法で解決しました!遅延バインディングについても勉強してみます。 takkunnetさんありがとうございました。 お礼が遅くなりすみません。 また宜しくお願いします。