• ベストアンサー

ACCESSでフィールド名の変更(VBA)

VBAを使ってテーブルのフィールド名等を変更させたいと思います。 そういう事ってできるのでしょうか? フィールド名を作成者ではなく、利用者が設定するようにしたいと思っているのですが、どういった方法があるでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

>ちなみに、それはどういったやりかたでやったら良いのでしょう? 例えば、[フィールド名対応表]という名前のテーブルで、[フィールド名][変換名]というフィールドを作ります。 で、[フィールド名]には予め実際のテーブルのフィールド名を、正しく入力しておきます。 [変換名]にも初期値として[フィールド名]と同じ値を入力しておきましょう。 まず、変換名の登録は、更新クエリを実行します。 仮に[誕生日]というフィールド名を[生年月日]という名前に変更するとすると、コードは以下のような感じ。 Dim SQL As String 'SQLステートメント SQL = "UPDATE フィールド名対応表 SET 変更名 = '生年月日' WHERE フィールド名 = '誕生日'" DoCmd.RunSQL SQL 次にフィールド名に付けられた変更名を拾ってくる方法は、 Dim temp As String '変更名 temp = DLookup("変更名", "フィールド名対応表", "フィールド名 = '誕生日'") ちなみに、DLookup関数は、条件にあったデータの値を返す関数ですが、条件にあったデータがない場合は、Nullを返しますので注意して下さい。

toroon
質問者

お礼

大変わかりやすい説明、ありがとうございます。 ただ、利用者によってフィールドが幾つできるか分からないんです。 やっぱり上限を決めて設定するようにするしかないんでしょうね?

その他の回答 (2)

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

Option Compare Database Option Explicit Sub test() Dim db As Database Dim tdf As TableDef Dim fld As Field Set db = CurrentDb Set tdf = db.TableDefs!座席 With tdf .Fields(4).Name = "予約日付" End With End Sub 「予約日付」の部分は、n=Inputbox("フィールド名=")とでも聞いてnで置きかえる。 4番目のフィールド「テキスト日付」を「予約日付」に 変更できました。 .Fields("予約日付").Name = "T予約日付"というフィールドの捉え方も出来ます。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 ADOXを使用すると出来ます。 まず、VBE画面のメニューの[ツール]→[参照設定]で、 「Microsoft ADO Ext. X.X for DLL and Security」(X.Xはバージョン) にチェックをします。 そして以下のようにコードを書きます。 Dim cat As ADOX.Catalog Set cat = New ADOX.Catalog cat.ActiveConnection = CurrentProject.Connection cat.Tables("テーブル名").Columns("変更前のフィールド名").Name = "変更後のフィールド名" Set cat = Nothing ところで、フィールド名を利用者に自由に変更させるやり方は、あまりいいとは思います。 メンテナンスとかコーディングとかで不都合が生じる可能性があります。 フォームなどの表示上の問題なら、元のフィールド名と変更フィールド名の対応テーブルを作り、それを参照して表示を変更するという方がいいと思います。

toroon
質問者

お礼

ありがとうございます。 >フォームなどの表示上の問題なら、元のフィールド名と変更フィールド名の対応テーブルを作り、それを参照して表示を変更するという方がいいと思います。 そうなんです。フォームの表示上の問題なんです。 ちなみに、それはどういったやりかたでやったら良いのでしょう? 超初心者です。 よろしくお願いします。

関連するQ&A

  • Accessです。テーブルのフィールド名変更

    初心者です。お願いいたします。 仕事で、Accessを使っています。 素人なりにそれらしいものを作って使っていたのですが、困ったことに元ととなるテーブルのフィールド名を変更しなくてはならなくなりました。 そのテーブルに関係するクエリーをたくさん作っている場合、フィールド名を変更することによって関係するクエリーも一つ一つ変更していかなくてはならないのでしょうか? テーブルのフィールド名を変更すると、関係するクエリーのフィールド名も自動的に更新できるという方法はあるのでしょうか? 初心者でスイマセン。よろしくお願いします。

  • ACCESSでのフィールド名

    ACCESS2000を使っています。 テーブルに「時間:」というフィールドがあるのですが、 If IsNull(!時間:) Then  :  : というふうに使うとコンパイルエラーになります。 ”:”がまずいと思うのですが。 フィールド名を変更せずにNULLかどうか調べたいのです。 何かいい方法は無いでしょうか。

  • フィールド名の変更について(ACCESS)

    テーブルのフィールド名をクエリー等で変更したいのですが、(最終的にはフォームでコマンドボタン化したいのですが)ご存知の方がいらっしゃいましたら教えてください。

  • Access テーブルのフィールド名

    AccessでレジのPOSデータを管理しています。 txtデータをインポートして、月別で管理しています。 インポートの際、項目名がついていないため、 Accessでは「フィールド1」「フィールド2」と いった名前がついています。 分析のため、「品名」「分類」といった項目名に 変えるため【テーブル】→【デザイン】でフィールド名を 一つ一つ手作業で変えています。 毎月の事なので、一度に変更できる方法があったら ご指導いただきたく質問させていただきました。 「フィールド1」=「品名」 「フィールド2」=「分類」 といったように項目は毎月同じ場所に設定されます。 説明がつたないかもしれませんが、必要でしたら補足 致しますのでよろしくお願い致します。

  • VBAで OLEオブジェクト型のフィールド操作

    Access VBA初心者です。 mdbで作成しています。 テーブルを新規作成してフィールドの1つにOLEオブジェクト型を設定してそのフィールドには他のmdbファイルをセットしています。 セットしたmdbにはいくつかのテーブルが作成されているのですが、 そのテーブルをローカルのmdb(今作成しているmdb)に取り込んでテーブル更新処理を行いたいのですが、 ローカルのmdbにOLEオブジェクト型フィールドでセットしたmdb内にあるテーブルを取り出す方法がわかりません。 よろしくお願いします。

  • Accessのテーブルのフィールド名のフォントについて

    Access初心者ですが、テーブルでデザインビューでフィールド名を 入力し、データシートビューに替えると、フィールド名のフォントが 明朝体のように表示されてしまいます。 以前まではゴシック体でデータシートビューでも表示されていたのですが・・・ いろいろなテキストを見ましたが、フィールド名のフォントの変更方法に ついて載っている物がありません。再起動したら直ると書いてるものはありましたが。 再起動してもやっぱり直りません。 このようなご経験がある方、フィールド名のフォントを変更する方法 ご存知であれば教えて頂けますか<m(__)m>

  • フィールド名について

    一般論というか基本的な考え方として, データベースの中にいくつかテーブルがあって,それぞれリレーション張られていなません。 このときに同じフィールド名を使用することは好ましくないでしょうか? 少し具体的に書くと 例えばアクセスで DB1.MDBというデータベースの中に Aテーブル,Bテーブル,Cテーブルとあったとして Aテーブルの中でNameIDというフィールドを作ったとします。 次にBテーブルを作成していて,またNameIDというフィールド名を使うということです。 このようなデータベースは, どんなデメリットメリットが予想されるか教えてください。 よろしくお願いします。

  • Accessの日本語フィールド名

    Access2003を使い、いろいろなmdbを作成しています。 私はテーブルを作成するときに、フィールド名に日本語を使っています。例えば、「社員コード」とか「住所」とか。 しかし、最近聞いた話ではフィールド名に日本語を使うことはよくないとのことです。 フィールド名が日本語だとどんな不具合が発生するのか、教えていただけないでしょうか、宜しくお願いします。

  • AccessVBAでフィールドのデータ型(フィールドサイズ)を変更する方法

    Access2000でテーブルを属性を変更しようとVBAで四苦八苦しております。 あるテーブルのフィールドのデータ型のフィールドサイズが「十進型」に なっています。 そのフィールドサイズを「倍精度浮動小数点型」に変更するVBAロジックがわかりません。 お分かりの方がいらっしゃいましたらどうかご教示願います。

  • SQLにてフィールド名変更。

    会社のデータをそのままインポートにてテーブル作成をして場合 フィールド名に 例えば:住所 → 住 所 の様に空白がはいっています。 このままだとSELECT文にて記述できません。  ◎ SELECT 住 所 FROM 購入マスタ  ◎ SELECT 住所 FROM 購入マスタ 両方共エラーがでます。         フィールド名の変更はできますか? 教えて下さい。お願い致します。 アクセスは2002で、VBは6.0です。

専門家に質問してみよう