• ベストアンサー

Excelのシート上にtextboxを作成する方法

VB.netのコードからExcelのシート上にtextboxを作成する方法を教えてください。 新規シートを作成するところまでは自力で出来ています。 どなたかアドバイスお願いします。 ※参考ページなどありましたらお願いします。

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

  • ベストアンサー
  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.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)

tarotarotarou
質問者

お礼

「Option Strict On」を取り除かない方法で解決しました!遅延バインディングについても勉強してみます。 takkunnetさんありがとうございました。 お礼が遅くなりすみません。 また宜しくお願いします。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

ExlSheet.Shapes.AddTextbox(1, 100, 100, 200, 50) ではどうでしょう AddTextbox(Orientation, Left, Top, Width, Height)

tarotarotarou
質問者

お礼

BLUEPIXYさんアドバイスありがとうございます。 Shapeのほうも勉強してみます。

  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.1

Sheet1上にTextBoxを追加する場合は Call Sheet1.OLEObjects.Add("Forms.TextBox.1") で追加できます。 作成する位置なども調整可能です。 詳しくは Excel VBA のヘルプ(OLEObjectsで調べると良いです)を参照することをお勧めします。

tarotarotarou
質問者

補足

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

関連するQ&A