プロが教える店舗&オフィスのセキュリティ対策術

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

※参考ページなどありましたらお願いします。

A 回答 (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)
    • good
    • 0
この回答へのお礼

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

また宜しくお願いします。

お礼日時:2005/12/15 11:18

ExlSheet.Shapes.AddTextbox(1, 100, 100, 200, 50)


ではどうでしょう
AddTextbox(Orientation, Left, Top, Width, Height)
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/15 11:20

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

補足日時:2005/12/13 17:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!