• ベストアンサー

EXCELでオートシェイプ(テキストボックス)を作成したい

EXCELの「図形描画」ツールバーにあるテキストボックスを作成し、その中に文字を書き込むという作業をVBで行いたいのですが、作成方法が分かりません。 (1)Dim.... (2)Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) ※ここで作成したい (3)保存作業 (4)閉じる OLEObjectsあたりを使うのではないかと思い、色々試したのですがダメでした。 ご存じの方、是非ご教授ください。 開発環境:WinXpPro(SP2)+VB6(SP6)

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

  • ベストアンサー
回答No.1

Excelでの「マクロの記録」は、試してみましたか? 記録したマクロを真似して、オブジェクトの指定等は適宜変更して VB側に移植すれば、何とかなる気がしますが…

kazon_ume
質問者

お礼

確かに マクロの記録 はど忘れしてました。 早速やってみます! 有り難う御座いました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

下記の2点は、エクセルにおいてマクロの記録で出来ます。 >図形描画」ツールバーにあるテキストボックスを作成し、 >その中に文字を書き込むという それについて言及も無いのはどうして?そんなに難しい問題だと思ったのかな。 ーー >(3)保存作業 そのブックの保存ですか。 xlAppなどをエクセル単独の場合のコードにつけるだけでは。 SaveAsメソッド >4)閉じる xlBook.Close ブックをト字閉じる。 そして xlApp.Quit ーーー WEB照会とかやったのか マクロの記録をとるとかやったのか それらでは判らなかったのか 基礎(本)的な点で、なぜが多い質問です。

  • dummyplug
  • ベストアンサー率58% (134/230)
回答No.3

ツールメニューにあるマクロの記録をして、実際に(コーディングしたい)作業をしてからそのマクロを「編集」すると、その(手でやった)作業をVBで記述したコードを見ることが出来ます。 それによると xlSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 200, 200).Select Selection.Characters.Text = "Hello, world!" みたいな感じですか。 VBが吐いたコードだとさらにテキストスタイルの設定とかしていますね。

kazon_ume
質問者

お礼

早速してみたところ、「Selection.Characters.Text」のところで引っ掛かってますが、もう少し勉強してみます。 有り難う御座いました。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

メニューバーにある「ツール」→「マクロ」→「新しいマクロの記録」としておいて、 テキストボックスを作成します。「マクロの記録」を停止すると、今までに実行した 行為がマクロとして記録されているので、それを参考にすればよいでしょう。

関連するQ&A

  • VB6.0上でExcelオブジェクトを生成

    VB6.0上でExcelオブジェクトの生成についてです。 その1 Dim xlApp As New Excel.Application Dim xlBook As New Excel.Workbook Dim xlSheet As New Excel.Worksheet Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) と その2 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) と、どちらが良いのでしょうか? 開発環境は  Windows2000  VB 6.0  Excel 2003 です。

  • Excel出力後のExcelの起動について

    Vb側からデータをExcelに出力し、その画面を表示させたまま 出力したExcelを確認しようと思ったところ、Excelは起動するものの シートが表示されない現象が起こりました。 出力後のExcelの終了(解放?)のロジックは下記の通りです。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets.Add … … Sheetへの出力処理 … … Set xlApp = Nothing Set xlBook = Nothing Set xlSheet = Nothing この現象の回避方法がありましたらご教授ください。 Windows2000 Vb6.0 SP5 Excel2000

  • VB2008 エクセル出力

    VB2008 エクセル出力 教えていただけると助かります VB6.0使用時にエクセル出力をするために下記のようなプログラムで出力していました ※「Microsoft Excel 9.0 Object Library」を参照 Dim xlApp As EXCEL.Application Dim xlBook As EXCEL.Workbook Dim xlsheet As EXCEL.Worksheet Dim File As String File = App.Path + "\EXCEL\" + "フォーム.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(File) Set xlsheet = xlBook.Worksheets("テスト") xlsheet.Range("A1") = "テスト" 'フォルダ作成 If Dir("D:\", vbDirectory) = "" Then Call Mkdirs("D:\テスト") 'Worksheetを名前をつけて保存します。 xlApp.DisplayAlerts = False xlsheet.SaveAs "D:\テスト\テスト.xls" xlApp.Quit Set xlApp = Nothing Set xlBook = Nothing Set xlsheet = Nothing VB2008の場合だとどのように書けば同じように動きますか ※色々試してみましたがダメでした 「Microsoft Excel 12.0 Object Library」を参照しています

  • Excelがインストールされてない環境でのExcelインスタンス作成

    Set xlApp = CreateObject("Excel.Application") xlApp.Visible = False xlApp.ScreenUpdating = False xlApp.DisplayAlerts = False Set xlBook = xlApp.Workbooks.Add Set xlClone = xlApp.Workbooks.Open("C:\TEMPLATE.xls") xlClone.Worksheets("Sheet1").Copy After:=xlBook.Sheets(1) 以上のようにVB上からExcelインスタンスを作成し xlBookにxlCloneのシートをコピーしています。 作成した.exeをExcelがインストールされている環境では動作するのですがExcelがない環境ではエラーになってしまします。 ライブラリをおくなど、Officeをインストールしないで済む方法はありますでしょうか?VBにはExcel Object Liblalyが参照設定されてます。 Excelあり環境 Visual Basic6 SP6 WindowsXP SP2 Office2003 SP4 Excelなし環境 Windows Server2003 SP2

  • VBからEXCELを保存

    VBからEXCELに保存したいのですが、前準備としてEXCELのsheet2で保存します。VBを実行したときにExcelのsheet1に保存したいのですが、どうすればいいかわかりません、おしえてください。多分、保存するときにSheet2を対象にしていると思うので、sheet1を対象にしたいのですが・・・ /****************** VBを実行したときの処理 ********************/ 'アプリケーションの参照 Set xlApp = CreateObject("Excel.Application") 'ブックの参照 Set xlBook = xlApp.Workbooks.Open("C:\テスト\テスト.Xls") 'シートの参照 Set xlSheet = xlBook.Worksheets("Sheet1")

  • エクセルを表示できない

    プログラム初心者です。 Private Sub Command3_Click() On Error Resume Next Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet With xlApp.Application Set xlApp = GetObject("F:\vb6.0\book1.xls") Set xlBook = xlApp.Workbooks.Open("Book1") Set xlSheet = xlBook.Worksheets(1) xlApp.Application.Visible = True End Sub と入力したのですが、実行してボタンをクリックしてもエクセルの表が表示されません。なぜでしょうか?

  • エクセルの開放

    VB2008でエクセルを操作しているのですが、エクセルのプロセスが残ってしまってどうやって解放すればいいのかわかりません。 サンプルプログラム-------------- Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlBook As Excel.Workbook = xlBooks.Add Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = xlSheets.Item(1) Dim xlobj As Object '開放用 xlobj = xlSheet.Range("A1:C3") xlobj.Value = "TEST" MRComObject(xlobj) MRComObject(xlSheet) MRComObject(xlSheets) xlBook.Close(False) MRComObject(xlBook) MRComObject(xlBooks) xlApp.Quit() MRComObject(xlApp) MRComObjectでCOM オブジェクトへの参照を解放しています。 このプログラムでは特に問題ないのですが、 xlobj = xlApp.Worksheets("Sheet2") xlobj2 = xlobj.Range("A1:C2") xlobj2.Value = "TEST" のようにワークシートを指定すると解放できません。 xlSheet = xlBook.Worksheets("Sheet2") としてもプロセスが残ります。 またVB6.0では可能だった xlApp.Worksheets("Sheet2").Select() のようにワークシートを切り替えるときもVB2008ではプロセスが残ってしまいます。 これはどのようにしたら解決するのでしょうか?

  • 開いているXLSファイルが読み取り専用か調べる

    Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\test.xls") Set xlSheet = xlBook.Worksheets(1) 開いたExcelファイルが読み取り専用になっているかどうかを調べるにはどうすればいいですか? ファイルの属性が読み取り専用かどうかは取得できるのですが、属性は読み取り専用ではなくても誰か他のユーザーがネットワークから開いているために読み取り専用で開いている場合もわかるようにしたいです。 お願いします。

  • VBからExcelのアクティブセルの位置を知る方法

    VB6でExcel2000のワークシートを操作するプログラムを作成しています。次のようなことをやりたいと思ってます。 (1)Excelのワークシートを開く (2)ワークシートの1点をクリックして、アクティブセルとする。(例えばA1) (3)VBのプログラムのボタンを押すと、アクティブセルを基点に3×3を選択範囲とする。 そこで次のようなプログラムを書いてみました。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = GetObject(, "Excel.Application") If Err.Number Then MsgBox "Excel が起動されていません。" Err.Clear Else ' MsgBox "Excel はすでに起動中です。" Set xlBook = xlApp.Workbooks.Item(1) Set xlSheet = xlBook.Worksheets.Item(1)     'アクティブセルを取得する     'アクティブセルを3x3に拡張する計算 xlSheet.Range("3x3に拡張した範囲").Select Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End If しかし、アクティブセルを取得する方法がわかりません。誰か教えてください。

  • EXCEL警告「置換対象のデータが見つかりません」を出ないようにしたい

    VB6からEXCELファイルを操作しています。 その中で、置換をやっているのですが、データによっては置換するデータが無い場合があります。 無い場合に、「置換対象のデータが見つかりません。~」というダイヤログボックスが出てしまうのですが、これを出さない方法が有りますでしょうか。 出さない方法がないとすれば、置換対象データがあるかどうかのチェックを先にすればいいのでしょうけど、コードが倍増しそうなものですから。 参考までにコードを付記します。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(filename) Set xlSheet = xlBook.Worksheets("Sheet1") xlSheet.Columns("A:A").Replace What:="1", Replacement:="男" xlSheet.Columns("A:A").Replace What:="2", Replacement:="女" xlSheet.Columns("A:A").Replace What:="9", Replacement:="不明"