• 締切済み

accessテーブル検索 エクセルのセルデータから

エクセルファイル M.xlsxの セルA1(氏名)=やまだやまよ B1(生年月日)=1980/3/15 という ひらがなの氏名があるとします access H.mdbというファイルのなかの テーブルTにおいて フィールド1=氏名 フィールド2=生年月日 フィールド3=ID のテーブルがあり このテーブルTに 上記エクセルのA1の氏名が あるかどうか このケースですと やまだやまよ が このテーブルTのフィールド1の行にあるかどうか これを調べるVBAのコードを 知りたいのですが、 検索ワードが M.xlsxのセルA1 という定義でコードを御教示ください 氏名で一致したデータがあるときに そのデータのフィールド2の生年月日でもB1のデータと一致するかを 続けて検索するとします ここまでの動作のコードを 御教示願えたら 助かります 宜しくお願い致します win10 office365

みんなの回答

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.7

>フィールド1=氏名 フィールド2=生年月日 フィールド3=ID ★主キーはありますか?、あるとすればどれですか? ★この中の《フィールド3=ID》について  ・IDのデータ型は数値型の長整数ですか  ・IDのデータ型はオートナンバー型の長整数ですか  通常のテーブルは   オートナンバー型のIDを主キーしてフィールドの先頭に   して他のフィールドが続きます ---------------------------------------------------------- 以上補足願います

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.6

答№5の訂正です 「回答№3の続きです」は「回答№2の続きです」の誤りです。  KKKKKm様大変ご迷惑をお掛けして申し訳ありません  またご指摘ありがとうございます。 ------------------------------------------------------  sushidokei様 ここで自分が想定したシステムを記述します。 1.質問の項目が氏名、生年月日のみですので名簿と命名 2.M_名簿とW_名簿 2-1 W_名簿  ・ID :主キー、オートナンバー型  ・氏名:テキスト型  ・生年月日:日付/時刻型 2-2 W_名簿  ・ID :主キー、オートナンバー型  ・氏名:テキスト型、インデクスプロパティー=重複なし  ・生年月日:日付/時刻型 3.処理の流れ  エクセルの情報をW_名簿へインポートして  VBAでW_名簿をM_名簿へインサート   続いて生年月日を更新   UPDATE M_名簿 INNER JOIN W_名簿 ON M_名簿.氏名 = W_名簿.氏名 SET M_名簿.生年月日 = [W_名簿].[生年月日];")

  • kkkkkm
  • ベストアンサー率65% (1610/2448)
回答No.5

chayamatiさんの回答No.4ですが > 回答№3の続きです。 私の回答の続きをしてるのでしょうか? kkkkkm ベストアンサー率65% (1571/2404) 2024/03/21 22:15 回答No.3 ふと思い出したのですが以前に同じような質問してましたよね。 以下略

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.4

回答№3の続きです。VBAはアクセス側ですね、氏名が重複なしに定義しておくことがポイントです 空のフォームに、《最新》とラベルを配置して、これのクリックイベントで以下の処理が起動します。 ------------------------------------------------------------------------------------ Private Sub 最新_Click() 'エクセルの情報を名簿に追加(既にある情報は弾かれる) DoCmd.RunSQL ("INSERT INTO M_名簿(氏名,生年月日) SELECT 氏名,生年月日 FROM W_名簿;") '生年月日の更新 DoCmd.RunSQL ("UPDATE M_名簿 INNER JOIN W_名簿 ON M_名簿.氏名 = W_名簿.氏名 SET M_名簿.生年月日 = [W_名簿].[生年月日];") End Sub

  • kkkkkm
  • ベストアンサー率65% (1610/2448)
回答No.3

ふと思い出したのですが以前に同じような質問してましたよね。 検索するとしか質問にないのでその後何をするのかが不明ですが、もし、(氏名)と(生年月日)の有無によって以下の質問の時のようなこと(追加もしくは更新)をしたいのでしたら以下の質問の回答No.1のコードを変更すればいいのではないでしょうか。 エクセルデータをアクセステーブルにコピーするVBA https://okwave.jp/qa/q10231702.html

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.2

susidokei様  アクセスを理解しようと色々苦労なさっているようですね  エクセルはどのセルにも数値、時刻、文字列、計算式が入力出来ますが  項目名にデータ型(オートナンバー型,数値型,文字列型,日付/時刻型,コンボボックス型)を定義します  またテーブル名の頭に M_(マスタ) T_(トランザクション),S_(参照),W_(テンポラリ)と区分しています  以上を前提にご質問の名簿テーブルは  T_名簿  ・ID:主キー,長整数型,オートナンバー型  ・氏名:テキスト型,インデクスプロパティーで重複なし  ・生年月日:日付/時刻型 >このテーブルTのフィールド1の行にあるかどうか  これを調べるVBAのコードを知りたいのですが、  検索ワードがM.xlsxのセルA1という定義でコードを御教示ください  氏名で一致したデータがあるときに  そのデータのフィールド2の生年月日でもB1のデータと一致するかを  続けて検索するとしますここまでの動作のコードを御教示願えたら 助かりま エクセルファイルをW_名簿へインポートし !W_名簿を上書きすると氏名が重複するデータははじかれて  W_名簿で更新すると生年月日が書き換えられます。

  • kkkkkm
  • ベストアンサー率65% (1610/2448)
回答No.1

M.xlsxをリンクテーブルにして選択クエリで表示したほうが簡単だと思いますけどVBAがいいのでしょうか。

関連するQ&A

  • エクセルデータをアクセステーブルにコピーするVBA

    エクセルファイル E.xlsxにおいて セルA1=ID A2=氏名 A3=性別 A4=住所 というデータがあるとしまして これをアクセスファイル F.accdbにおける テーブルの table1 その項目が ID, 氏名, 性別, 住所, 卒業校, 旧住所 があります。 このエクセルファイル E.xlsxにおける セルA1=ID A2=氏名 A3=性別 A4=住所 というデータを上記F.accdbにおける テーブルの table1 その項目が ID, 氏名, 性別, 住所,に(卒業校, 旧住所は 新規入力はないこととなります) コピー 追加するVBAを御教示願えますか E.xlsxにおいては1行だけのデータですが、 table1には すでに数行のデータが入力済であり、 IDが新規の場合と、すでにtable1に登録済みのIDが存在する場合に 上書きする場合のそれぞれのVBAを 御教示くださりますと助かる次第です よろしくお願い致します win10 office365

  • エクセルのデータをアクセスのテーブルに移動入力する

    エクセルのデータをアクセスのテーブルに移動入力するVBA フォルダAにおいて、a1.xlsxというファイルがあり、 そのsheet1のセル(a,1)=1 A1が1 とします その値をアクセスのデータベース(これもフォルダAにあります)  b.accdbのテーブル1の フィールド1に入力したいときの エクセルマクロのVBAを御教示いただけると助かります さらに続けて フォルダAにおいて、a2.xlsxというファイルがあり、 そのsheet1のセル(a,1)=2 A1が2 とします その値をアクセスのデータベース上記と同じ  b.accdbのテーブル1の フィールド1に追加で入力したいときの エクセルマクロのVBA 以上わかると助かります よろしくお願いします win10 office365

  • エクセルテーブルをアクセステーブル取込む

    エクセルで作成したテーブルデータを取り込むときに余分に空白のレコードが取り込まれてしまうんですが原因が分かりません。 下記コードで処理してます。 Dim strac As String Dim strxls As String Dim strrange As String Dim strMsg As String strac = "T_障害票マスタ" 'Accessテーブルを指定します。 strxls = テキスト0 'エクセルファイルを指定します。 strrange = "T_障害票!" 'データ入力のシート名とセル範囲を指定します。 strMsg = "エクセルファイル" & strxls & " を、Accessファイル " & strac & _ "として、データ入力を行います。" & _ "よろしければ、OKをクリックして下さい。" 'MsgBoxのメッセージ If strxls = "" Then MsgBox "ファイルを選択して下さい。" 'テキストボックスの確認 Exit Sub End If 'DoCmd.DeleteObject acTable, strac 'テーブルを削除します。 If MsgBox(strMsg, vbOKCancel, "import") = vbOK Then '最初のデータをフィールド名として使います。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _ strac, strxls, True, strrange MsgBox "インポートは、正常に完了しました。" End If Exit Sub なお取り込むテーブルデータはフィールド行を抜かして常に1レコードだけです。 アクセスでは既存のテーブルに保存してます。 詳しい方お願いします。

  • Accessで BテーブルのフィールドをAフールドに書き換えたい。

    初心者ですが宜しくお願い致します。 Aテーブル →[氏名],[名前] Bテーブル →[氏名],[結婚後氏名] (1)上のようなテーブルがあります。クエリで、AテーブルとBテーブルの[氏名]フィールドをキーにしてリレーションを組み、A,Bテーブルのフィールド全てを表示させます。 (2)(1)で抽出されたデータだけ、Aテーブルの[氏名]フィールドをBテーブルの[結婚後氏名]フィールドに書き換えたいのですが・・・・ なにかよい方法はありますでしょうか。 詳しい方、教えてください。 宜しくお願い致します。

  • ExcelからAccessデータを検索するマクロ

    ExcelのA1セルにある値をAccessのデータベース (ファイル名:abc.mdb、テーブル名:Tbl_a)の フィールド1から検索し、対応するレコードの フィールド2の値をExcelのB1セルに書き込む というマクロはどのように書けばよいのでしょうか? Excel, Accessともに2000です。 よろしくご教授お願いします。

  • EXCELでテーブルを検索

    EXCELでテーブルを検索して値を求める式を考えたい。 (問題)10行10列の数値のテーブルAがA1~J10まであります。 そのテーブルをセルA15(Yセルと呼ぶ),A16(Xセルと呼ぶ)に入っている数によってテーブルAの各行と列の交点のセルを決め、そのセルの値をA17(結果セルと呼ぶ)に入れたい。 A17にはどのような式を書けばよいのでしょうか。 なお、もしそのテーブルが別のシート(名称;別シート)にあった場合はどうなりますか。

  • Access2002 2つのテーブルのマージ方法

    いつもお世話になっております。 クエリについてお聞きします。 現在、2つのAccessDBが稼動しており、それを1つにまとめる作業をしています。 2つのDBには似通ったテーブルが存在し、それをマージする方法で悩んでいます。 テーブルA ・社員番号 ・社員氏名 ・フリガナ ・会社コード ・部署コード テーブルB ・従業員コード ・従業員名カナ ・従業員名 ・所属コード フィールドの定義としましては、 社員番号=従業員コード 社員氏名=従業員名 フリガナ=従業員名カナ 部署コード=所属コード となります。 全てテキストのレコードです。 これを、テーブルAを正にして、テーブルBのデータをAにマージしたいのです。 要件としましては、 1.テーブルAに存在する社員コードにマッチするレコードはそのまま残す(Bのデータは無視) 2.テーブルAに存在せず、Bに存在するものをAに追加する ということです。 クエリを使って色々試しましたが、どうしてもテーブルAに存在するものもアップデートしてしまい、困っています。 どなたかご教授願えれば幸いです。 よろしくお願いいたします。

  • ACCESSでの改行コード

    ACCESSでの改行コードの入力方法を確認させてください。 ACCESSのテーブルにテキスト型のフィールドを用意し、一つのフィールドに改行が入ったデータを入力したいと考えています。 以下の方法を試してみましたが、改行コードが入っていないように思えます。 1.エクセルで一つのセルで、ALT+ENTERで文字列を入力し、テーブルにデータをインポート。 2.上記エクセルのデータをCSVで保存したものをテーブルにインポート。 これら2つのデータをテーブルで確認すると、改行はされていないですし、テーブルのデータをエクスポートしたものも改行はされていませんでした。 フィールドの設定で何か必要なんでしょうか? それとも、テキスト型のフィールドには改行コードを持てないんでしょうか?

  • ExcelかAccessで二つのデータが合っているかどうかを調べる方法を教えてください。

    二つのセル(フィールド)を比較して、そのデータが同じか違うか結果を別のセルに返したいのですが、そんなことって可能だったでしょうか。 データはA列とB列にほぼ同じデータがあり、その中の完全に一致してないデータだけを抽出したいのです。 行は約1500あります。 Access、Excelのどちらでも構わないのですが、方法をご存知の方がいらっしゃいましたら教えてください。

  • Vbaでアクセスからエクセルにリンクテーブルする

    Vbaでアクセスからエクセルにリンクテーブルするには? エクセルの情報: C:\Users\Desktop¥新規 Microsoft Excel ワークシート.xlsx シート1の情報: フィールド1 フィールド2 あああ    aaa いい     iii ううう    uuu なのですが、 アクセスからVBAでリンクするにはどうすれば良いでしょう? 手作業なら 外部データ→エクセル→外部データの取り込み→リンクテーブルを作成してソースデータにリンクする でリンクできますが、vbaで行いたいです。 Sub Sample01() Dim db As DAO.Database, tb As DAO.TableDef Set db = CurrentDb Set tb = db.TableDefs("Sheet1") tb.Connect = ";DATABASE=" & CurrentProject.FullName & ";TABLE=Sheet1" tb.RefreshLink ' リンク情報の更新 End Sub このコードは意味が違いますよね エクセルのパスとシート名を指定してリンクする方法を教えてください。 最終定期にはシートをループして複数のテーブルを作成したいのです。 リンクが無理ならインポートでもOKです。

専門家に質問してみよう