• ベストアンサー

ExcelマクロでAccessデータを累計処理

Excel2010のVBAでAccess2010のデータをDAOで操作しています。 そこで、下記のような加算処理(bフィールドでaフィールドの累計)ができるのでしょうか。また、更新クエリで このようなことができるものなのでしょうか??Access初心者です。 a  b 10 10 20 30 15 45 30 75

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

a  b 10 10 20 30 15 45 30 75 このように順番に加算してゆくためには、別途並び順に利用できるフィールドが必要です。 X a 1 10 2 20 3 15 4 30 ↑このようなものなら、bフィールドはクエリで b:dsum([a],"[X] <= " & [X]) とすれば求められます。 更新クエリでテーブルのbフィールドを変更するには フィールド:b テーブル:テーブル名 レコードの更新:dsum([a],"[X] <= " & [X]) です。 https://www.moug.net/tech/acvba/0080017.html

crown8803
質問者

お礼

ありがとうございます。 Access2010に下記データを「テーブル1」に格納して X  a      b 1 100 2 100 3 150 4 50 X,a,bは数値型です。 Access2010の更新クエリで フィールド:b テーブル:テーブル1 レコードの更新:DSum([a],"[X] <=" & [X]) を実行すると、 「更新クエリで全てのレコードを更新できません。」 「4個のフィールドで型変換エラー、0件のレコード....」 のメッセージが表示され「はい」をクリックしてもデータが更新されません。うっー、分からない???

その他の回答 (2)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

piroin654 さん ナイスフォローです。 ありがとうございます。 そして質問者さん、ごめんなさい。 どうかしてますね、私。 言い訳になりますが、風邪をひいているようで、 今日一日、頭痛と筋肉痛で廃人状態でした。 今、少し楽になったので書き込みました。 皆様もご自愛くださいませ。 明日もおかしいかもしれないので、piroin654 さん あとはお願いします。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

nicotinismさん、テーブルの指定が抜けていますよ。 以下のように書き変えてみてください。 DSum("a","テーブル1","X<=" & [テーブル1].[X]) 「 こちらでもいいのかな DSum("a","テーブル1","X<=" & [X]) 」 なお、EXCELから直接SQL文を発行して実行するには、たとえば Sub test() Dim db As DAO.Database Dim strSQL As String strSQL = "UPDATE テーブル1 SET テーブル1.b = DSum(""a"",""テーブル1"",""[X]<="" & [テーブル1].[X]);" Set db = OpenDatabase("C:\Temp\sample.mdb") db.Execute Query:=strSQL db.Close: Set db = Nothing End Sub のようにします。VBAの中ではDSumの引数を二重に「"」で囲んでいることに注意を してください。クエリのSQL文を取り出すと、 UPDATE テーブル1 SET テーブル1.b = DSum("a","テーブル1","[X]<=" & [テーブル1].[X]); のようになっていると思いますが。 EXCELから更新を直接できればいろいろと便利かもしれません。

関連するQ&A

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

    Excel、Accessとも初心者です。 下記を参考にさせて頂いております。 http://okwave.jp/qa/q441987.html これを、(1)~(3)に対応させたいのですが どのように書き換えればよろしいのでしょうか? (1)A1→ A列の最後まで (2)対応するレコードフィールド2   → 規定した複数のレコードフィールド     (例えば、フィールド3とフィールド5とフィールド8) (3)Excel, Accessともに2007です。 (4)検索の経過は表示させない  (少しでも早く処理したい。ひとつひとつ検索結果を表示すると遅くなると聞ききました) ・・・・・・・・・・・・・・・・・・・・・・・・・ Sub Macro1() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = OpenDatabase("c:\abc.mdb") Set rs = db.OpenRecordset("tbl_a", dbOpenDynaset) rs.FindFirst "[フィールド1]='" & Range("A1").Value & "'" If rs.NoMatch Then   Range("B1").Value = "" Else   Range("B1").Value = rs![フィールド2] End If rs.Close Set rs = Nothing Set db = Nothing End Sub ・・・・・・・・・・・・・・・・・・・・・・・・・ よろしくご教授お願いします。

  • AccessのデータをExcelに貼り付け

    AccessのデータをフィルターしてExcelに貼り付けるには、AccessとExcelのどちらのVBAを使えば良いでしょうか。 前提:Accessに10フィールド100行くらいのデータがあり、Excelに氏名と日付を入力する欄がある。 処理:AccessのデータをExcelに入力した氏名と日付でフィルター(AND検索)→フィルターしたままExcelに貼り付け→そのデータをExcelの関数とVBAで処理(複雑な関数なのでAccessで処理できない)

  • Accessのクエリで累計の出し方

    Accessのクエリで累計の出し方を教えてください。 できれば、クエリで関数による算出方法、クエリでの算出が無理であれば、 VBAでの算出方法を詳しく教えて頂けないでしょうか。

  • クエリの同期処理

    お尋ねします。 アクセス2000でDBを作っています。 全く同じフィールドを持つクエリを2つ作成し、用途に応じて、クエリAとクエリBの2つを使い分けする予定です。 ふたつのクエリは常に全く同じレコードを保持するようにしたいのですが、マクロまたはVBAでどう作ればいいでしょうか? たとえば、クエリAをソースに作ったフォームAでレコードを更新後、クエリBのレコードを同期する。逆に、クエリBをソースに作ったフォームBでレコードが更新されたらクエリAのレコードを同期する。 フォームA、Bそれぞれの更新後処理で同期化を設定すればいいのかなと思いますが、どなたか教えてください。 よろしくお願いします。

  • Access2000のVBAでエクセルマクロ実行

    お世話になります。 Access2000のVBAでエクセルのマクロとアクセルのマクロを 交互に実行したいと思っております。 (1)エクセルのマクロ1を実行 (2)アクセスのマクロAを実行 (3)エクセルのマクロ2を実行 と交互に実行したいのです。 下記のサイトなどを参考に試みたのですが、 http://www.nurs.or.jp/~ppoy/access/access/acX005.html (1)を実行している途中に (2)が進んでしまいます。 どのようにすれば、(1)が終わってから(2)と、前の処理が 終わってから次の処理に進むことが出来るのでしょうか? Access2000のVBAから指示をかけたいので、 Access2000のVBAのコードで教えて頂ければと 思います。

  • AccessからExcelへ出力

    Access2003からExcel2003へ出力したいのですが、 クエリに3つのフィールドがあるとして、 1つ目のフィールドをExcelの1行目、 2つ目を2行目、3つ目を3行目とゆうことはできるのでしょうか? VBAは勉強中です。 よろしくお願いします。

  • Excel と Access または、Access と Excel との連携処理

    (1)(初期処理として)、Excel(1.xls)よりアイテムセットしたパラメータ(起動するAccessのパス名)でAccess(A.mdb)を起動する。 (2)Access(A.mdb)の自動処理が終わると、次に起動させるAccess(B.mdb)のパスパラメータをExcel(1.xls)に渡し、Access(A.mdb)を終了する。 (3)パラメータを受け取ったExcel(1.xls)は、Access(B.mdb)を起動し、処理をする。 (1)より開始して、(2)(3)の繰り返し出来る方法を教えてください。 よろしくお願いします。

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

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

  • Accessのクエリーで累計を計算したい

    Accessのレポートでは、計算したいフィールドのプロパティを開いて、集計実行で指定すれば、自動的に累計計算してくれるのですが、クエリーの状態で累計計算させるのには、どうしたらいいのでしょうか。何方かご存知の方はいらっしゃいませんでしょうか。

  • ExcelデータをAccessに取得させる方法

           エクセル           Access    A列   B列  C列      フェールド名  人 りんご みかん ばなな キャベツ    リンゴ  3   木村               木村  3    2    みかん  2   木村             小林             4    ばなな  4  小林               青木                   2    キャベツ 2  青木 のようにエクセルのデータでA列をAccessのフィールド名にし、もし無ければ、その項目名(りんご等)をフィールド名に追加させ、上の右図のようにAccessにデータを取得させるコードを作りたいと考えてます。  取得させる場合はExcellではなく、Access VBAで取得させたいです。  どんなコードを書いたらよろしいのですか?  分かる方がおられましたら、よろしくご指導くだされとうれしいです。  私のVBAのレベルですが、Access VBAは今回初めてで、Excel VBAは中級くらいかと思います。  よろしくお願いします。

専門家に質問してみよう