• ベストアンサー

テーブルのプロパティの説明欄消失

ACCESS VBAで以下のような指定でインポートを行っています。 DoCmd.TransferDatabase acImport _ , "Microsoft Access" _ , S_FileName _ , acTable _ , hairetu(j) _ , hairetu(j) _ , False インポートは正常にできるのですが、テーブルのプロパティの説明の記述が消えてしまいます。 消えなくする方法はありますか? できなければ、プログラムで付与する方法はありますか?

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

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

こちら (Access2010 試験ファイル形式は Accdb 。)では問題を再現できませんね。 エラー処理が手抜きですが、 Sub test() Dim hairetu() As Variant Dim i As Integer Dim v As String On Error GoTo errH hairetu = Array("テーブル1", "テーブル2", "テーブルN") 'インポートしたいテーブル名 For i = LBound(hairetu) To UBound(hairetu) DoCmd.TransferDatabase acImport, "Microsoft Access", "D:\tmp\インポート元.accdb", acTable, hairetu(i), hairetu(i), False v = v & hairetu(i) & "_" & CurrentDb.TableDefs(hairetu(i)).Properties("description") & vbNewLine Next MsgBox v Exit Sub errH: if err.number = 3270 then v = v & hairetu(i) & "_" & "説明は設定されていません" & vbNewLine end if Resume Next End Sub ご参考まで。

wcup2002
質問者

お礼

プログラムはACCESS2010で作成していますが、保存形式の拡張子はMDBです。 インポートするファイルもMDB方式です。 ACCDBならうまくいくのかな?

関連するQ&A

  • アクセス リンク先のバックアップテーブル削除

    お世話になっております。 以前、リンク先DBでリンクテーブルのバックアップをとり、 同じ名称のテーブルがあったら処理しない というVBAを教えていただいたのですが・・・ そこに付随して質問です。 Dim appAccess As Access.Application Set appAccess = CreateObject("Access.Application") With appAccess .OpenCurrentDatabase strLinkDB If numHantei = 1 Then .DoCmd.TransferDatabase acImport, "Microsoft Access", _ strLinkDB, acTable, "T_権限情報", "BK_テーブル1_" & Format(Date, "yymmdd") .DoCmd.TransferDatabase acImport, "Microsoft Access", _ strLinkDB, acTable, "T_社員情報", "BK_テーブル2_" & Format(Date, "yymmdd") End If .Quit End With Set appAccess = Nothing 7日以上経過したバックアップファイルを削除するには (DoCmd.DeleteObject acTableを使って削除になるかと思いますが)、 実際、どのようにしたら可能でしょうか。 初心者につき、ご教示いただけると幸いです。 よろしくお願い致します。

  • インポートの上書

    アクセス2003で DoCmd.TransferDatabase acImport, "Microsoft Access", "C:\DATA\データ.mdb", acTable, "データ", "データ"を実行してテーブルをインポートしましたが 実行する度にテーブルが データ データ1 データ2と増えていきます 上書させるにはどの様にすればよいでしょうか

  • アクセス2007 テーブルの全削除とデータ移動

    アクセス2007 テーブルの全削除とデータ移動 全テーブルを削除して、データをインポートしようとしています。 http://okwave.jp/qa/q5952603.html 以前の質問<QNo.5952603>の続きになってしまいますが。 >質問3. >削除後にインポートをしたいのですが。 >手動でアクセスメニュー>外部データ>アクセス(のインポート)>現在の~~>すべて選択(テーブル)>OK >これを実現するVBの記述は、どんなコードになるのでしょうか? 答え >DoCmd.TransferDatabase acImport, "Microsoft Access", strPATH, acTable, strTDef, strTDef, False なのですが、手動で行った場合の「オプション」>インポート「リレーションシップ=チェックON」の部分が 上記のお答えのコードで実現できませんでした。 各クエリの部分的なリレーションは残ってますが、全体のリレーション線が消えてしまいます。 どのようにしたら再現できますでしょうか?

  • インポートエラーのテーブルを自動で削除するには?

    アクセスで、インポートエラーがあった時に、 エクセルの元ファイル名$_インポート エラーの テーブルが出来ますが、 これをVBAで DoCmd.DeleteObject acTable, "* _インポート エラー *" とするとエラーとなります。"* _インポート エラー *"がいけないのでしょうか?適切な方法よろしくお願いします。

  • Access2003VBA リンクテーブル(パスワード付き)を作成するには?

    Cドライブ直下に、A.mdbとB.mdbがあります。 また、B.mdbには、『テーブルX』があります。 A.mdbに、B.mdbの『テーブルX』をリンクさせたいのですが、 b.mdbは、パスワードで保護されています。 以下のコードは、b.mdbに、パスワードの設定が無い場合、使用可能ですが、b.mdbに、パスワードの設定がある場合、どうすればよいのでしょうか?色々ネットで検索したのですが、出てきません。>< 急ぎなので、すみませんが、教えていただけませんでしょうか。 DoCmd.TransferDatabase acLink, "Microsoft Access", "C:\B.mdb", acTable, "テーブルX", "テーブルX", False

  • Access2000のODBCで困っています

    Access2000(Windows)でBtrieveデータベースからODBCをつかって、 DoCmd.TransferDatabase acImport, "ODBC", "ODBC;DSN=Btrieve", acTable, "BtrieveTable名", "AccessTable名", False で、インポートすると1つのテーブルだけでレコード数が135,000程度、ファイルサイズが30MB程度(最適化直後)になってしまいます。時間も(マシンやネットワークの環境によりますが)10分近くかかってしまいます。 実際このテーブルの中で必要なレコード数は500程度なので、まるまるインポートし ないで必要なだけにして、時間とファイルサイズを稼ぎたいのですが、何か方法があるのでしょうか? いったんリンクしてから SELECT INTO や INSERT INTO すれば10秒もかからないでできます。 しかし、BtrieveTable名が毎月変わっていくので、お手上げ状態になり、上の方法を思いついたのです。 もしもこんな条件でリンクの設定ができればベストなのですが、ODBCソフトがメラント社のDatadirectというものでVBAからの設定が可能なのかどうかもわかりません。 よろしくご教授願います。

  • Access マクロでのテーブル削除

    インポートの際にエラーテーブルが出来たら削除したいのですが、うまくいきません。 マクロでオブジェクトの削除でテーブルを指定すると、エラーテーブルが作成されなかったときにエラーになってしまいます。 VBAを作成し、プロシージャの実行で下記のファンクションを呼び出すと 【指定した式にMicrosoft Accessが見つけることのできない関数が含まれています】というエラーになります。 Public Function 削除() On Error Resume Next DoCmd.DeleteObject acTable, "TableA_インポート エラー" End Function できればVBAを使わずに「テーブルがあれば削除、なければなにもしない」というのを行いたいのですが、良い方法はないでしょうか? よろしくお願い致します。

  • Accessでの他ファイルとのリンク処理

    いつもお世話になっております。 Access2000(OSはWindowsXP)で作った販売管理システムのスタートメニューを起動させたら、他のAccessファイル(顧客管理)にあるテーブル(住所録)の有無をチェックして、存在していればリンクし、存在していなければスタートメニューの処理を終了させるプログラムを作成中です。 VBAで記述したく、インターネットを調べて下記のように書きました。 途中までの記述ですが、住所録テーブルの有無(場合によっては顧客管理ファイルの有無でも構いませんが)を判断して、これらの処理をするには、どのように記述すればよいか教えて頂きたく思います。 なお、データ(またはファイル)が存在していない場合には、「存在していません」のようなメッセージを出したく思います。 基本的なことかも知れませんが、宜しくお願い致します。 ------------------------------------------------------------ '[接続] '(前に残ってたら消す、残ってなかったらエラーは Resume Next で飛ばす) On Error Resume Next DoCmd.DeleteObject acTable, "リンクテーブル1" On Error GoTo 0 '(再接続) DoCmd.TransferDatabase acLink, "Microsoft Access", "c:\顧客管理.mdb", acTable, "MT住所録", "リンクテーブル1", False '[切り離し] 'DoCmd.DeleteObject acTable, "リンクテーブル1"

  • Access2007 外部MDBコントロール

    Access2007 外部MDBコントロール 使用OS:xp Access:2007 いつもお世話になっております。 Access2007のVBA(GetObject)を利用して、外部MDBをコントロールしたいと考えております。 「実現したい内容」 3つのMDBが存在します。 A.mdb B.mdb C.mdb A.mdbにコードを書いて、B.mdbにC.mdb内のレポート「レイアウト」をインポートします。 ******************************************************************************************************* Dim ACC As Access.Application Set ACC = GetObject("B.mdbのフルpath") '外部MDBへ接続 DoCmd.SetWarnings False On Error Resume Next ACC.DoCmd.DeleteObject acReport, "レイアウト" 'レポートの削除 On Error GoTo 0 ACC.DoCmd.TransferDatabase acImport, "Microsoft Access", "C.mdbのフルpath", acReport, "レイアウト", "レイアウト", False ACC.CloseCurrentDatabase Set ACC = Nothing ******************************************************************************************************* 実行するとレポート「レイアウト」はB.mdbに格納(インポート)されるのですが、 その際、C.mdbが一旦起動し、データベースウインドウが開いて閉じる動作が走ってしまします。(当然だと思いますが) その動きを止める(裏でコードが走る状態)ことはできないでしょうか。 以前Access2000で同じコードを実行したときは画面の切り替えはなく、裏で実行されていました。 過去質問をうまく検索できずご質問させていただきます。 ご教授の程宜しくお願い申し上げます。

  • Paradox7って?

    お世話になります。 Windows2000、Access2000を使用しています。 ある業務でAccess2000からParadox7形式でエクスポートをする事になりました。 最初はParadox3でエクスポートしていたのですが、その時は何もエラーなくエクスポートできていたのですが、7に変えたらエラーになりました。 ちなみにVBAは以下の通りです。 DoCmd.TransferDatabase acExport, "Paradox 7.X", "D:\", acTable, "T_テーブル", "T_テーブル.DB", False Paradox3から7に変わる際になにか注意する点や変更しなければいけない点などありましたら教えてください。 よろしくお願いします。急いでいます。

専門家に質問してみよう