質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • VBA

    1868questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Access

    460questions

    Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

AccessVBAでテーブルへデータを書き込みする時に指定するフィールド名を、変数で指定する方法

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,674

urakawa

score 6

度々お世話になります。
Access2010(VBA)でプログラムを書いています。

ニュアンスとしては、以下のような処理がしたいのですが、
どのように記述すればよいのでしょうか?

    Dim RsData As Recordset
    Dim mydb As Database
    Set mydb = CurrentDb
    Set RsData = mydb.OpenRecordset("WorkTable")

    RsData.AddNew

    Dim i As Long
    For i = 0 To maxR Step 1
        RsData!DataBaseFieldName(i) = RecordArray(i)  'この部分
    Next i

前提条件として、
DataBaseFieldName()にフィールド名が記録されています。
RecordArray()にテーブルに保存したいデータが格納されています。
※直前でReDimしてあります。

それか、以下のように、列(フィールドの相対位置)を指定して代入する方法はありますか?

    Dim i As Long
    For i = 0 To maxR Step 1
        RsData!(i) = RecordArray(i)  'この部分
    Next i

教えていただけると大変有りがたいです。
よろしくお願いします。

補足:

現在、Access2010(VBA)で、
フィールド数が可変するCSVデータをシステムに取り込み、
テーブルを作成して、データをを保存するプログラムを作っています。

フィールド名はCSVデータの1行目とするので、
事前にフィールド名が分かりません。

そのため、作成したテーブルに
変数名でフィールド名を指定、もしくは列指定する必要があるのですが、
この部分の記述が分かりません。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

以下でどうでしょうか? ※手元に確認できる環境がないのでダメだったらすみません。

RsData.Fields(DataBaseFieldName(i)) = RecordArray(i)

列順が同じなら以下でもできるかもしれません。

RsData.Fields(i) = RecordArray(i)


お試しください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/20 19:07 編集

    jawa様

    ご回答ありがとうございます!

    RsData.Fields(DataBaseFieldName(i)) = RecordArray(i)
    で、できました!

    列順は同じですが、
    RsData.Fields(i)
    ですと、
    RsData(テーブル)のレコードを参照するみたいですので、
    相対位置指定(列番号での指定)は難しいようです。

    とても助かりました。
    ありがとうございました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    【ファイル名の読み込み】

    23歳OLです。 会社でマクロを組むことになりましたが、 初心者過ぎて全然よくわかりません。 お忙しいところ大変恐縮ですが、教えていただけないでしょうか。 ※やりたいことがわか

  • 解決済

    VBA google画像検索 画像表示

    エクセルのVBAで文字列に対する画像が表示されるマクロを作成したいです。 やりたいこととして例えば、 A列に5つワードが書かれており、 そのワードをひとつずつgoogleで画像検

  • 解決済

    エクセルのセルに入っている数字とその座標を出力するマクロ(VBA)

    シート上の指定したセルのアドレスを(1,A)→(1,1),(1,B)→(1,2)...というふうに (列番号,行番号) の形にし、さらにセルに入っている数字をその後に付け足して(列

  • 解決済

    For ~ Next 繰返し処理の最後で意図しない値を得てしまいます。

    Dim p As Integer Dim yearF As Integer p = 3 Worksheets("list").Select For

  • 解決済

    VBA 動的にCollectionを生成

    前提・実現したいこと VBAで動的にCollectionを生成したいです。 発生している問題・エラーメッセージ Type ブロック外では無効なステートメントです。 該当のソース

  • 解決済

    【VBA】最終行に転記

     前提・実現したいこと (同一book) 【入力】シートに入力したものを【点検履歴】シートの最終行に転記したいです。 ↓入力シート(sheet9) ↓点検履歴(sheet8)

  • 解決済

    VBA 条件分岐 while文?

     VBAで背景色をつけたい。エクセルの範囲を指定せずに、複数の条件分岐を実現したい ここに質問の内容を詳しく書いてください。 かなり長文になると思いますが、色々試した結果、手詰まり

  • 解決済

    ExcelVBA 「フィールド指定せずに行で」Accessのテーブルへ書き込みしたい

     前提・実現したいこと Excel 1ファイルごとに1レコード(管理している項目は同じ内容・位置なので、必要なセルを1行にまとめて疑似的にレコードっぽくしてます) この1行だけで良

同じタグがついた質問を見る

  • VBA

    1868questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Access

    460questions

    Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

  • トップ
  • VBAに関する質問
  • AccessVBAでテーブルへデータを書き込みする時に指定するフィールド名を、変数で指定する方法