- ベストアンサー
エクセルVBAで別ブックを参照してDSUM
- エクセルVBAを使って閉じている別のブックを参照し、DSUM関数で金額を集計する方法について教えてください。
- 複数のエクセルファイルを使ってDSUM関数で金額を集計する方法について教えてください。エクセルVBAを使用して別のブックを参照する方法も知りたいです。
- エクセルVBAで別のブックを参照し、DSUM関数を使用して金額を集計する方法について詳しく教えてください。閉じているブックを参照する方法も知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
閉じたブックに対してDSUM関数を使う方法はありませんが、マクロを使ってという前提なら話は簡単です。 例: sub macro1() application.screenupdating = false workbooks.open filename:="C:\DB.xlsx" ’拡張子他注意 with thisworkbook.worksheets("Sheet1") ’シート名不明注意 .range("D2").formula = "=DSUM([DB.xlsx]Sheet1!A:D,4,A1:C2)" .range("D2").value = .range("D2").value end with workbooks("DB.xlsx").close false application.screenupdating = true end sub 集計ブックのSheet1のA2:C2に条件を記入後、マクロを実行するとD2にコタエが記入される。 マクロを登録した集計ブックをもちろん複数メンバーで共有して構わないが、DBブックへのアクセスについてどうしたいのか不明なので適切に応用する事。
その他の回答 (1)
- catpow
- ベストアンサー率24% (620/2527)
>>インターネットや本等で調べたのですが、全然分かりませんでした。 何卒、よろしくお願い申し上げます。 エクセルVBAでやりたいことに近いことが可能でしょうから、ネットや書籍に情報があったわけですね。 それをやるためには、その「全然分からないこと」を理解する必要があります。 腰をすえて、それなりに勉強すれば、いくらか分かるようになるかもしれませんので、それをめざして勉強をしましょう。 >>エクセルのVBAで上記のことを実現できないでしょうか。 ccessは、自分含め他のメンバーも知識が乏しいため、避けたいと思っています。 可能かもしれませんが、件数が多いから、効率が悪い、つまり処理スピードが遅くなると思います。 件数的には、アクセスか、その上位のSQL Serverで処理すべき領域のデータ量といえるでしょう。 まあ、VBAの処理を起動して数時間後に、あるいは、翌日までに結果が出れば良いっていうなら可能でしょう。 >>集計結果(集計条件を変更させて確認できる状態)は、複数メンバーで共有したいと思っています。 まあ、こうなるとアクセスでも能力不足で、SQL Serverが出番となる領域です。 もしくは、ファイルメーカというソフトを購入して勉強し、使いこなす方法もあると思えます。 例えていえば、犬小屋や長さ1m程度の橋は、素人が日曜大工でできるかもしれません。 質問者さんは、そんなのじゃあなく、ちょっと大きめの物置小屋や長さ5m程度の橋を、日曜大工で作りたいという感じですね。 まあ、「小屋が潰れたり風で飛んだり、歩いていて橋が落ちてもいいや!」と割り切れるなら、エクセルVBAでチャレンジしてもいいとおもいます。
お礼
ありがとうとざいます。ご教示いただきましたVBAで実行したところ、約10秒で完了し、大変使い勝手が良いです。ありがとうございます。 ただ、複数メンバーの共有という点で更に教えていただけないでしょうか。 そもそも私の言葉不足だったのですが、『複数メンバー共有の運用』というのは、DSUMのマクロを実行するエクセルファイルは共有サーバー内に置いておき、そのファイルを複数メンバーで共有します。一方、DSUMの集計元となるデータベースのファイルは、私個人のローカルCドライブ内に置いておき、データベースのファイル更新は私個人が行っていくというものです。 ですので、教えていただきましたVBAを活用の上、実際の運用処理をすると workbooks.open filename:="C:\DB.xlsx" の部分が上手いこといきません(私の言葉不足でスミマセンでした)。 共有サーバーからローカルドライブを参照するVBAはどのように記述すればよか教えていただけないでしょうか。 何度も誠に申し訳ございませんが、何卒よろしくお願い申し上げます。