• 締切済み

ExcelVBAもしくはAccessでの上手な対処方法

当方ExcelVBAとAccessを多少嗜む程度のレベルの者です。 この度、営業社員(80名程度)向けのツールの作成をしており内容としてはその日の活動状況や今後の予定、受注金額や使った交通費などを一元管理し、すぐにレポートできるモノにしたいと考えております。 営業個人個人が使用する分には何も問題ありませんが、自分だけはそれを集計し取りまとめを行いたいと思っております。 自分の知る限りではAccseceのmdbファイルは複数のPCからの書き込みには向かなく、 SQL Serverなどを使用するのがベストだということ。 ただあまり経費も掛けられないため自分だけで解決したいと思っております。 自分が思いつくイメージとしては営業個人個人の保存データのファイル名に規則性を与えてVBAなどで吸込をかける。 ただこれでは営業個人個人のデータが日に日に肥大していくため、そのうち取込時間がかなり掛かってしまいそうな気がしております。 何かいい手法はございませんでしょうか? ご教授いただけたら嬉しく思います。

みんなの回答

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

簡単なデータの収集だけなら http://www.officetanaka.net/excel/vba/tips/tips46.htm BASP21を使用して、エクセルでメールを受信します。 メールの1件が1行、メールの内容の1行が1つセルにはいります。 各自からのメールはエクセルなど使って定型でおくれば勝手にデータが蓄積されていきます。 取り合えず、自分から自分にメールいれて、エクセルで受信してみてください。 データ受信専用のメールアドレスのみ取得してもらえば >自分が思いつくイメージとしては営業個人個人の保存データのファイル名に規則性を与えてVBAなどで吸込をかける。 はクリアできると思います。

acchuchu
質問者

お礼

ご返答が遅くなってしまい申し訳有りませんでした! エクセルでメール受信は思いつきませんでした! かなり使えそうな気もしますのでもう1度構想を練ってみたいと思います。 大変参考となるご回答誠にありがとうございます。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

ネットワーク環境・PCの台数及び仕様等々を全て踏まえて、且つ今後のメンテに 対応できるだけのスキルをお持ちと言う事でなければ、外注委託の方が楽だと思いますけど。 スキルをお持ちであればスル~して下さい。 ただそう言った情報もなしでは回答も難しいと思います。

acchuchu
質問者

お礼

大変お忙しい中すばやいお返事ありがとうございます。 やはり外部委託が一番楽ですよね。 参考にさせていただきます。 ありがとうございました。

関連するQ&A

  • DAOのExcelVBAにてAccessのデータを更新したい

    ExcelVBAよりAccessデータの追記は、AddNewを使用してできたのですが、単純な更新ができません。 strWhere = "Select * From 集計テーブル Where [フィールド1]='001'" Set dbWS = DBEngine.Workspaces(0) Set dbWB = dbWS.OpenDatabase("C:\対象MDB.mdb) 'データベースを呼び出す Set dbRes = dbWB.OpenRecordset(strWhere, dbOpenDynaset) 上記はそもそも更新ステートメントがありません。どのように書けばよいのでしょうか?どうかアドバイスお願いします。

  • MS Accessを共有した際にファイルが壊れるのを回避する方法

    ちょっとしたツールをAccessで開発したいのですが、 Accessファイルを共有するとファイルが頻繁に壊れると伺いました。 そこで以下のような回避策を考えてみたのですが、 効果はありますでしょうか。 これでは、あまり意味がないとか、他に注意したほうが良い点等ありましたら、アドバイスいただければと思います。 なお、ツールは、50名位が使用(同時アクセスは3名~4名程度)予定で、 サーバ上にメインのmdbファイル(以下「サーバmdb」)を、各クライアントにもそれと連携するmdbファイル(以下「クライアントmdb」)を置くことを想定しています。 (1) データは全てサーバmdbで保持する。クライアントmdbには、入力用のフォームと、サーバmdbから取得したデータを一時的に保持するテンポラリのテーブルを持つ。 (2) クライアントmdbからサーバmdbにアクセスし、必要なデータをクライアントmdbにインポートする。 (3) クライアントmdbで、取り込んでデータをもとに、データの追加・修正を行い、当該データをサーバの所定のディレクトリにCSVで出力する (4) サーバmdbは、日次で、所定のディレクトに配置された、クライアントmdbから出力されたファイルを読み込み、データを更新する (5) (4)の読込み・更新作業中は、クライアントmdbからサーバmdbにはアクセスしない(外部ファイルで制御) 以上です。 要は、クライアントmdbが、直接サーバmdbを更新しないようにし、参照のみにするということです。 よろしくお願いします。

  • ACCESSのテーブルの結合

    いつもお世話になっております。 社内で顧客情報を登録するスアタンドアローン版のソフトを導入しています。 そのソフトを使用して顧客情報を登録するとローカルにmdbファイルとして蓄積されます。 以前までは1,2人でその作業を行っており、その日の登録作業が終了すると、ACCESS2003でmdbファイルを開き、マスタテーブルをCSVで出力してORACLEにロードという情けない運用していました。 しかし顧客登録作業を現場の従業員全員(30名程度)ですることとなり、なんらかのタイミングで一元管理する端末に登録作業をした全員分のmdbファイルを収集し、mdbファイルのマスタテーブルを結合したいです。 30人となるといちいち一個ずつのmdbファイルを開いてマスタテーブルをCSVで出力という作業はあまりにも手間がかかります。 何か良い方法はないでしょうか?ご教授願います。 CSVファイルみたいにDOSのTYPEコマンドを使って結合できればよかったのですが…。

  • ExcelVBAを使ったファイルの保存について

    ExcelVBAを使ってファイルを保存するときの、ファイル名のつけ方について教えてください。 一つのBOOKの中に複数のシートがあり、各々のシートには行数200程度、列数5程度のデーターが入っています。 このデーターを上から10行取り出して別の新規ファイルとして保存、更にその下10行を取り出して別のファイルとして保存、・・・これを5回繰り返す作業をVBAを利用して行っています。 そのときファイル名もVBAを使って付けたいのですが、やり方が良くわかりません。 もう少し具体的に書きます。 例えばシート名が「soft」だったとしたら、最初の10行を取り出したファイル名は「soft1」次の10行分のファイル名は「soft2」というようにシート名に連番を打つような形で新しいファイル名をつけていきたいのです。今は次のような形でInputBoxを開き手入力でファイル名を入れています。 FName = InputBox _ ("ブックを保存します") ActiveWorkbook.SaveAs FName これ以外の、もう少し省力化できる方法があればお教えください。 よろしくお願いいたします。

  • バッチでAccessのmdbファイルを修復・最適化したい

    AccessのMDBファイルは使用頻度が多くなるにつれてデータファイルサイズが肥大化していきます。 ツールメニューのデータベースユーティリティから修復・最適化することも可能ですが、同様の処理をWSHでバッチ処理したいです。 処理の方法をご存知の方、HELPください。

  • Access 読み取り専用のアカウントでは開かない

    Access2003 サーバーPC OS:WinXP Pro アカウント名:suzuki, tanakaが登録してある 共有フォルダ:営業資料 DB名:顧客データ.mdb クライアントPC1 OS:Win7 Home アカウント名:suzuki DB名:顧客.mdb クライアントPC2 OS:XP Home アカウント名:tanaka DB名:顧客.mdb 顧客データ.mdbはテーブルのみ 顧客.mdbはフォーム、クエリ等があり、顧客データのテーブルにリンクを貼っています。 共有フォルダ「営業資料」には アクセス可能ユーザーに「suzuki」、「tanaka」を設定しました。 共有のアクセス許可でsuzukiは「フルコントロール」設定を、tanakaは「読み取り」のみ設定をしています。 この時クライアントPC1では顧客データに読み書きできますが、 クライアントPC2からアクセスすると、「顧客データ.mdbは既に使用されているので、使用できませんでした」 メッセージが表示されます。 共有のアクセス許可を「フルコントロール」に設定すれば読み書きできます。 クライアントPC2から「読み取りのみ」でアクセスすることはできますか? 宜しくお願いします。

  • ExcelVBAでの標準偏差の求め方

    ExcelVBAでの標準偏差の求め方 使用ソフト:Excel2003 ExcelVBAで標準偏差を求めたいのですが、 求めたいデータが複数ファイル(最大31ファイル)に渡り、 また全ての行を一つのファイルにまとめようとすると9万行以上になります。 一ファイルあたりは3000行前後です。 一つのファイルに全てのデータがあれば 下記のようにStDev関数を使うのですが、 今回は複数ファイルに渡るので使えません。 Application.WorksheetFunction.StDev(.Range(.Cells(1, 1), .Cells(Y, 1))) また、1つのファイルにまとめるにもExcel2003なので、 65536行までしか行がなくまとめられません。 このような場合、どのように標準偏差を求めればいいのでしょうか? 出来るだけ速度は犠牲にしたくはありませんが、 速度以前に実装すら出来ません…。 どうか先達の皆様、お知恵をお貸しください。 (同じデータに対して平均、最大値も求めていますが、  それは元ファイルから一つ一つのデータファイルを開いて、  WorksheetFunctionのSum関数、Max関数を使用して最後に集計、計算をしています)

  • Excel2003からAccess2007のデータの取り込みについて

    Excel2003からAccess2007で作成しているデータを取り込もうとしているのですが、うまくいきません。クエリのウィザードでテーブル名等は表示されるのですが、いざデータを取り込もうとすると、”ファイル名.mdbが見つかりません”というエラーが表示されます。そもそも拡張子がmdbというファイルはないのですが、回避する方法があるのでしょうか?

  • accessの処理が遅い

    accessの処理が遅く困っています。 何か良い解決方法があればご教授お願いいたします。 まずは現状を説明いたします。 仕事でaccessを使用していますのでどこまで話していいのか迷うとこですがなるべく詳しく書きたいと思います。 まずは私の現状を ・accessは利用歴半年ほどでまだまだ全然理解していない ・職場で必要に迫られて独学で勉強しています ・私的には頑張ってネットや書籍で色々と調べてみました 仕事場で行なっていること ・職場の基幹システム(これが何で作られているとかはさっぱり分かりません)は次のようなデータを処理しています。顧客データ、在庫管理、作業履歴、入出庫管理などなど ・上記の基幹システムが毎日「データ」という名前の圧縮ファイルを本社サーバにエクスポート?していきます ・私はのそ「データ」という圧縮ファイルを使って作業を(主にデータ分析)を行なっています ・「データ」を回答すると「データ1」「データ2」「データ3」「データ4」という4つのMDBファイルが出てきます ・私はその「データ1~4」のMDBファイルを自分の支店の共有フォルダにコピーして作業を行なっている ・ローカルのPC上ではなくネットワーク上にファイルを置くのは、支店内の全員のパソコンからアクセス出来るようにとのことです 問題となっている処理に時間のかかる処理内容というのが クエリを多重で行う(言い方が合っているのか?^^;)ということを5段位行っています 遅いのは当たり前というのはわかって入るのですが、1度のクエリで目的のものを表示させられないので結果こうなりました(ーー; 他にも遅くなっている理由があります 「データ1」などの元となるMDBファイルに入っているテーブルを全てリンクデーブルで参照しています(言い方あってるかな?) なぜ普通にインポートして使わないのかという理由を説明します。 ・「データ」というファイルは毎日、新しくシステムから落ちてきます ・私としては毎日行うクエリを再利用したい ・「データ1」というファイルをある場所に置いておき、自分のデスクトップにMDBファイルを作成し(これを作業ファイルと呼ぶ)、そこに「データ1」の中のデーブルをリンクさせておく。 そして作業ファイル内にクエリを作製する あとは毎日の新しい「データ」ファイルを過去のファイル(作業ファイルにインポートしたリンク先)に上書き保存する。 こうすることでクエリを作製し直さないで同じクエリを再利用し、表示されるデータは毎日最新をキープする。これが理由なんです。 (本当は作業ファイルもネットワーク上に置きたいのです、というか置いていました。しかし遅すぎるため今は取り敢えずデスクトップ上に置いています) しかしこのクエリが多重で行われているためか結果を表示するのに3分~5分かかります。 これを早くしたいのです。 上記の方法におかしな所や、こうしたほうがより早くなるなどのアドバイスがあればお願いします。 そして別件ですが、こういった状況ですので個人的に色々調べてみました。 どうもaccessは大きなデータには向いていない?というような情報を目にします。 「データ1」などのMDBファイルにあるデーブルは100万行などのテーブルもあります。 MDBファイルの容量も2GBギリギリです。 こういう場合はMYSQLやsqliteなどを使用したほうが良いのでしょうか? そういったものを使用した場合は今のaccessのようにGUIで簡単にクエリなどを作成できますでしょうか? そういたものを使用してMDBファイルを扱えるのでしょうか? 非常に分かりにくい質問で申し訳ございませんが宜しくお願い致します。

  • ACCESSのファイルを一本化したい!

    各支店でアンケート集計をしてもらい、入力データが.mdb or .accdbで送られてきます。 それを VBAで”1ファイル”にまとめたいのですが、お知恵をお貸しください。 送られてくる元ファイルの構造は1ファイル1テーブル(table名 table_01)、テーブルの構造は統一されてます。 アンケート日ごとにファイルをフォルダーにまとめてあります。 ex. C:\Users\AD\20111101\001.mdb C:\Users\AD\20111101\002.mdb ・     ・ C:\Users\AD\20111102\001.mdb C:\Users\AD\20111102\002.mdb ・     ・ 各フォルダー内ごとに、まとめたファイルを作成したいのです。 (毎日 100fileほどたまります。どうしても自動化したくて・・・) よろしくお願いします。

専門家に質問してみよう