• ベストアンサー

シート上のOLEオブジェクトのタイプを取得する

シート上のOLEオブジェクトのタイプを取得するvbaは? Sub Sample() Dim i As Integer For i = 1 To ActiveSheet.OLEObjects.Count Debug.Print ActiveSheet.OLEObjects(i).Type Next i End Sub これだとエラーになります。 テキストボックスとかコマンドボタンとかの情報を取得するには どうすればいいでしょうか?

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

とりあえず簡単に sub macro1()  dim o  for each o in activesheet.oleobjects   debug.print o.name, typename(o.object)  next end sub

jonvjxowhdwxl
質問者

お礼

ありがとうございました。

関連するQ&A

  • コントロールのタイプを取得したい場合

    Sub test() Dim i As Integer Dim StrFormName As String StrFormName = "UserForm1" With UserForms.Add(StrFormName).Controls For i = 0 To .Count - 1 Debug.Print .Item(i).Name  Next End With End Sub これでエクセルのユーザーフォーム上のすべてのコントロール名が取得できるのですが、 コントロールのタイプを取得したい場合、 Debug.Print .Item(i).Name  の部分をどう変えればいいのでしょうか? 例えばコマンドボタンなら、「CommandButton」と返ってきてほしいです。 Debug.Print .Item(i).Controlstype でも Debug.Print .Item(i).Controltype でもエラーになりました。

  • {アクセス}全てのフォームの名前を取得したい

    ひとつのMDBファイルに入っている全てのフォームの名前を取得したいのですが Sub 全てのフォームの名前を取得() Dim i As Integer For i = 1 To Forms.Count Debug.Print Forms.Name Next End Sub このコードだと オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) となってしまいます。 どうすればいいでしょうか よろしくお願い致します。

  • 一回のループで次のオブジェクトの値も同時に取得する

    一回のループで次のオブジェクトの値も同時に取得するにはどのようなコードを書けばよいですか? 例えば、 ブックにシートが Sheet1 Sheet2 Sheet3 あり、 Sub Sample1() Dim s As Worksheet For Each s In Worksheets Debug.Print s.Name Next End Sub のように、全てのシート名を取得する場合、 Sheet1とSheet2を1回のループで同時に取得する方法はありますか? Sub Sample1() Dim s As Worksheet For Each s In Worksheets Debug.Print s.Name   Debug.Print s+1.Name Next End Sub みたいな方法があるのか知りたいです。 よろしくお願いします。

  • LocationNameを取得するとアウトルックが

    エクセルvba2010です。よろしくお願いします。 Sub Sample() Dim ie As Object For Each ie In CreateObject("Shell.Application").Windows() Debug.Print ie.LocationName Next End Sub このコードで、現在開いているURL名を取得すると、 アウトルックを立ち上げてると outlook:%26%2321463・・・ と言うのが取得されるのですが、これは何のパスでしょうか? メールは立ち上げていません。

  • エクセル フォーム上の全てのコントロールを取得した

    エクセル フォーム上の全てのコントロールを取得したい http://okwave.jp/qa/q4879853.html のNo.1さんの回答を参考に、 Sub try() Dim i As Integer Dim StrFormName As String StrFormName = "フォーム1" For i = 0 To Forms(StrFormName).Controls.Count - 1 Debug.Print Forms(StrFormName).Controls.Item(i).Name Next End Sub を作ったのですが、 「Forms」の部分が、 「Sub、Function、または Property が定義されていません。(Error 35)」 というコンパイルエラーになってしまいます。 上記のコードをアクセスVBAにつけると、全てのコントロール名が取得できます。 同じようにエクセルで使うにはどこを修正すればいいでしょうか? フォーム名は、変数に入れて使いたいです。

  • シート上のコントロール(TextBoxのみ)のカウント

    お世話になります。 現在Excel2003 VBAでファイル生成プログラムを書いております。 処理の一部で、シート上に配置されたコントロール(TextBoxのみ)の総数を取得したいのですが、どのようにすればよろしいでしょうか。 テキストのみに限らない場合は、 OLEObjects.Countで取得できます。 For i = 1 To Sheet1.OLEObjects.Count 省略 Next i 宜しくお願いします。

  • VBA オブジェクトが必要です エラー424

    VBA初心者です。 初歩的な質問で申し訳ありません。 ユーザーフォームのコンボボックスにユーザーリストを読みこみプルダウンする構文です。 以下を実行すると 実行時エラー 424 オブジェクトが必要です という警告が出ます。 どこを直せばいいのかわかりません。 詳しい方教えて下さい。宜しくお願いします。 private sub userform_initialize() dim 最終行 as integer dim i as integer 最終行 = worksheets(゛meisai″).cells(Row.count,8).end(xlup).Row for i = 1 to 最終行 combobox1.addItem worksheets(″meisai゛).value next i end sub

  • 最大行数を取得するVBAコードとは?

     人生で初めてエクセルのマクロに挑戦してみた。が、《最大行数を取得するVBAコード》で躓いた。2時間ばかり、悪戦苦闘したがサッパリ判らない。苦肉の策で、SQL文を使った。でも、それじゃー解決したことにはならない。 Public Sub Do_XferPer()   Dim I As Integer   Dim N As Integer      Application.ScreenUpdating = False   '   ' 先頭行の取得   '   N = DLookup("SELECT COUNT(*) FROM [Sheet3$A:A1000]") - 1   Debug.Print N   For I = 2 To N     If 0 Then       Cells(I, 1) = XferPer(Cells(I, 1))     End If   Next I   Application.ScreenUpdating = True      With ThisWorkbook.Worksheets("Sheet3").UsedRange     N = .Rows.Count - 1     Debug.Print N   End With   With Range("A1").SpecialCells(xlLastCell)     N = .Row - 1     Debug.Print N   End With End Sub 【質問】 みなさんは、最大行数を取得するのにどのようなコードを書かれていますか?  宜しくお願いします。

  • サンプルプログラムでエラーが出てしまいます、対処法を教えて下さい。

    Sub test写真の連続挿入()   Dim myDir As String   Dim myFile As String   Dim i As Integer   Dim n As Integer   n = 10   myDir = "D:\写真\" myFile = Dir(myDir, vbNormal)   Application.ScreenUpdating = False   Do Until myFile = ""   If myFile <> "." And myFile <> ".." Then   If (GetAttr(myDir & myFile) And 16) <> 16 Then   i = i + 1   With ActiveSheet.OLEObjects("Image" & i)    .Object.PictureSizeMode = 3    .Object.Picture = LoadPicture(myDir &myFile)   End With   If i = n Then Exit Do   End If   End If   myFile = Dir   Loop   Application.ScreenUpdating = True End Sub このWith ActiveSheet.OLEObjects("Image" & i)の行でエラーが出てしまいます、対処法を教えて下さい。( 実行時エラー'1004'OLEObjects プロパティを取得できません)

  • AccessVBAでオブジェクトの説明欄を取得したい

    ACCESS97のVBAにて開発をしています。 データベースウィンドウに表示される、各オブジェクトの説明欄の値を取得しようとしています。先日同様の質問内容に対していただいたアドバイスをもとに、DB内の全データベースオブジェクト(「テーブル」や「フォーム」の全てのテーブルやフォーム)を一括して取得しようとしているのですが、テーブル名は取得(デバックウィンドウに出力)できるのですが、説明欄の取得ができませんでした。 テーブルの場合のソースを以下に示しますが、どこがまずいのかご指摘願えないでしょうか? また、フォームの場合はどうすればよいか、あわせて教えていただけると大変助かります。 Dim myCont As Container Dim myDoc As Document Dim i As Integer Dim tds As DAO.TableDefs Dim td As DAO.TableDef Set tds = CurrentDb.TableDefs i = 0 For Each myCont In CurrentDb.Containers For Each myDoc In myCont.Documents If myCont.NAME = "Tables" Then If TableAndQuery(myDoc.NAME) = "Table" Then Set td = tds(i) Debug.Print td.NAME Debug.Print td.Properties("Discription").Value i = i + 1 End If End If Next Next Set td = Nothing Set tds = Nothing 初歩的な質問で大変申し訳ありませんが、よろしくお願いいたします。

専門家に質問してみよう