• ベストアンサー

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

space_needleの回答

回答No.1

Debug.Print td.Properties("Discription").Value この行のスペルミスです。2文字目はeです。 Discription→Description Formの場合は、分かりません・・・・。

nihonkai2002
質問者

お礼

ご指摘、どうもありがとうございます。 初歩的な間違いで申し訳ありません。 その後スペルミスなしの状態で試してみたところ、原因がわかりました。テーブルの説明欄が無記入のテーブルの場合の対処をしていなかったからでした(たまたま1件目のテーブルから説明欄が無記入だったのでわかりませんでした)。 3270エラー時のエラー処理を追加することで、うまくいきました。 ただ、やはりFormの場合のコーディングの仕方がわかりません。Formに関しては、Containersコレクション配下のDocumentオブジェクトにてNameの取得はできたのですが・・・。どなたかご存知の方がいらっしゃいましたら、お教えいただけないでしょうか?よろしくお願いいたします。

関連するQ&A

  • AccessVBAのCurrentDbメソッドでエラーになります

    Windows2000、Access2000を使っています。 オンラインヘルプを参考に作った下記のプログラムを走らせると、Set db = CurrentDbのところで「実行時エラー13:型が一致しません」のエラーになります。どうしてでしょう。 Sub b() Dim db As DAO.Database Dim tdf As DAO.TableDef Dim fld As DAO.Field Set db = CurrentDb Set tdf = db.TableDefs("テーブル1") For Each fld In tdf.Fields Debug.Print fld.Name Next fld End Sub 参照設定を見ると、Microsoft dao 3.0 Object LibraryにチェックがついていますのでDAOは使えるはずなんですが・・・。

  • リンク元のパスを変更したい vba  アクセス

    アクセスです。 該当する複数のテーブルの、リンク元のパスを変更したいのですが Sub Sample() Dim DB As Database Dim T As TableDef Dim mystr As String Set DB = OpenDatabase(CurrentProject.FullName) For Each T In DB.TableDefs mystr = CurrentDb.TableDefs(T.Name).Connect If mystr Like "*\\該当のパス*" Then Debug.Print T.Name Debug.Print CurrentDb.TableDefs(T.Name).Connect  ’自分としてはこれで変更できると思った CurrentDb.TableDefs(T.Name).Connect = _ ";DATABASE=C:\新たなパス\○○.accdb" Debug.Print CurrentDb.TableDefs(T.Name).Connect End If Next DB.Close Set DB = Nothing End Sub を実行してもエラーにもならないし、リンクテーブルのパスも変わりません。 CurrentDb.TableDefs(T.Name).Connect はパスの取得しかできないのでしょうか? パスを設定する方法を教えてください。 よろしくお願いします。

  • アクセス フォームが存在するかを一発で取得したい

    フォームが50個くらいあるのですが 該当のフォームが存在するかvbaで取得したいのですが If CurrentProject.AllForms("フォーム1").IsLoaded Then のように、一発で取得する方法はありますか? 今は Sub Sample1() Dim DB As DAO.Database Dim f As DAO.Document Set DB = CurrentDb Dim strForm As String Dim flg As Boolean strForm = "Fメインメニュー" For Each f In DB.Containers!Forms.Documents If strForm = f.Name Then flg = True Exit For End If Next If flg = False Then MsgBox strForm & "は存在しません" End If End Sub のような感じで、すべてのフォームをループしているのですが 無駄が多い気がします。 改善策があればお願いします。

  • Access 2000 の VB での テーブル作成について質問です。

    下記のようにAccess 2000のVBからDAOを使ってテーブルを作っておりますが、 作るフィールドに規定値の設定もVBからできないのでしょうか?DAOだと無理なのでしょぅか? 教えてください Dim db As DAO.Database Dim tbdef As DAO.TableDef Dim flID As DAO.Field Set db = CurrentDb Set tbdef = db.CreateTableDef("テーブル") Set flID = tbdef.CreateField("ID", dbInteger)   tbdef.Fields.Append flID   db.TableDefs.Append tbdef db.Close: Set db = Nothing

  • ハイパーリンク型の場合、エラーになります。

    DAOでテーブルを作成しようとすると ハイパーリンク型の場合、エラーになります。 Sub Sample() Dim db As DAO.Database Dim tbdef As DAO.TableDef Dim Field1 As DAO.Field Set db = CurrentDb Set tbdef = db.CreateTableDef("T_test") Set Field1 = tbdef.CreateField("氏名", dbHyperlinkField) tbdef.Fields.Append Field1 db.TableDefs.Append tbdef db.Close: Set db = Nothing End Sub Type プロパティ のヘルプを見ると、dbHyperlinkFieldはないのですが dbHyperlinkFieldではないのでしょうか? DAO.DataTypeEnum のメンバの中にもハイパーリンクはないようです。

  • vbaコードが遅い

    当方access2003、XP、メモリ2G、コア2DUOなのですが Sub 取得() Dim DB As DAO.Database Dim T As TableDef Set DB = CurrentDb Debug.Print "開始:" & Now For Each T In DB.TableDefs 'ここでやたら時間がかかる Debug.Print T.Name & "取得時間:" & Now Next End Sub これを実行すると、 For Each T In DB.TableDefs を通る時に5秒くらい時間がかかりますがそういうものなのでしょうか?

  • Access97VBAにてオブジェクトの説明欄の内容を取得したい

    ACCESS97のVBAにて開発をしています。 データベースウィンドウに表示される、各オブジェクトの説明欄の値(テーブルやフォームなど、オブジェクトを右クリック-プロパティにて、「説明」という欄に入力したもの)を取得したいのですが、指定の仕方がわかりません。 前提としては、Microsft DAO 3.5 Object Libraryを参照設定に追加してあります。 テーブル名やフォーム名は、DocumentオブジェクトのNameプロパティにて取得できたのですが・・・ ご存知の方がいらっしゃいましたら、是非教えてください。

  • 空欄を含む項目のレコードセット

    Access 2003 DAO.Recordsetにてデータを取得しようと思うのですが テーブル項目に空欄がある場合はどのように書けばよろしいのでしょうか? Dim DB As DAO.Database Dim RS As DAO.Recordset Set DB = CurrentDb Set RS = daoDB.OpenRecordset("Aテーブル", dbOpenDynaset) RS.AddNew daoRS!ああ ああ = xx RS!Update ・・・ とするとエラーになります。 項目名"ああ ああ"はどのように書けばいいのでしょうか? よろしくおねがいします。

  • 非表示のテーブルは取得したくない

    全てのテーブル名を取得したくて Sub test() Dim DB As Database Dim T As TableDef Set DB = OpenDatabase(CurrentProject.FullName) For Each T In DB.TableDefs Debug.Print T.Name Next DB.Close Set DB = Nothing End Sub を実行したのですが MSysAccessObjects MSysAccessXML MSysACEs MSysDataCollection MSysIMEXColumns MSysIMEXSpecs MSysNavPaneGroupCategories MSysNavPaneGroups MSysNavPaneGroupToObjects MSysNavPaneObjectIDs MSysObjects MSysQueries MSysRelationships など余計なものまで取得されてしまいます。 ナビゲーションウインドウに表示されている テーブルのみ取得するにはどうすればいいでしょう? ifステートメントで「非表示なら」もしくは 「システムテーブルなら」として、はじくにはどうすればいいでしょう?

  • DAOでレコード数を取得したい(ACESSVBA)

    レコードの行数は複数あるのに --------------------------------------------------------- Sub あ() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("T_test", dbOpenDynaset) MsgBox rs.RecordCount Set rs = Nothing Set db = Nothing End Sub --------------------------------------------------------- これでレコード数を取得しようとすると1がかえるのですが なぜレコードの行数を取得できないのでしょうか?