ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュのエクセル+データベースでアイデア募集!

  • mixiチェック
  • このエントリーをはてなブックマークに追加
細かいプログラム技術的なことはさておき、
以下の要件を満たすために、どのような手段があるかアイデアを伺いたいと思います。

1.それほどPCスキルのない100人の従業員がいる
2.従業員はとある作業の結果をエクセルに入力する
3.従業員の入力結果をデータベースで一元管理したい
4.従業員のPCに特別なものをインストールしない(ODBCなど)
6.データ入力後の従業員にはなるべく作業をさせたくない
5.私は将来的にそのシステム管理を原則としてしない
6.私はVBA, PHP, MySQLをプロ並ではないが使うことができる

という条件です。

現状の私のアイデアは

1.エクセル上のボタンを押すと、マクロで管理サーバーのSambaに入力結果をCSVファイルとして保存する
2.マクロでIE(visible=False)を起動させ、
http://管理サーバー/処理プログラム.phpクエリ?="1で保存したCSVファイル名"
というURLにGETを投げる
3.処理プログラム.phpがSambaに保存されたCSVファイルを読み込んでデータベースに格納する

という流れを作ってみました。

登録された結果はエクセル上の"表示"というボタンを押すことでWebクエリとしてエクセル上に表示されるようになっています。

他にアイデアなどありましたら伺ってみたいです。
技術的に細かい話はなしで良いので「こんな方法もあるのでは?」といった発想をお聞きしたいです。

よろしくお願いします。

コメント(14)

Excelから直接DBにデータ投げれば良いのでは?
はじめまして。kawaと申します。

>ウィ・チャイさん 日本語はご理解できるでしょうか? 簡単に。


>細かいプログラム技術的なことはさておき、
>以下の要件を満たすために、どのような手段があ
>るかアイデアを伺いたいと思います。

   入力 Excel
 => 処理 Samba、PHP
 => 出力(保存) MySQL
という構造ですね。

質問1
Excelではいつも同じ項目数で、同じデータ主列の入力を行うのでしょうか。これにあわせてMySQL側にもExcelと同じ項目を網羅したテーブルが準備されているのでしょうか。

質問2
上の説明ではシステムの「入力、処理、出力(保存)」があることがわかりました。その上で100人強のユーザーがデータを加工し出力する「出力」部分の機能は必要ないのでしょか。

>1: たれだんな
>データ入力だけしたいのかね?
と同じ質問です。

アイデアは、今は何ともいえません。
皆さんありがとうございます。

>>だれだんなさん

>ファイルメーカーでWEB共有すれば?
残念ながら入力はExcelのみなんです。

>データ入力するひとのソフトはどうする?
Excelが入っているのでそれでやります。

>データ入力だけしたいのかね?
その点についてはお話していませんでしたね。
従業員はデータ入力のみです。

>>よっちゃんさん

>Excelから直接DBにデータ投げれば良いのでは?
ODBCを使わずに、その他エクストラのドライバやソフトを居れずにDBにデータを投げられる方法をご存知でしょうか?
Excel(2003)は標準でHTTPとかなんかを操れるのでしょうか?私はここら辺の知識は全くないのです。。。

>>kawaさん

   入力 Excel
 => 処理 Samba、PHP
 => 出力(保存) MySQL
という構造ですね。

まさにそのとおりです。
Sambaに関して言えば必須ではありません。
ただ現状の私のアイデアに必要であっただけですが。

>質問1
>Excelではいつも同じ項目数で、同じデータ主列の入力を行うのでしょうか。これにあわせてMySQL側にもExcelと同じ項目を網羅したテーブルが準備されているのでしょうか。

項目数はいつも違います。新たな項目が後になって追加される可能性も大いにあります。
MySQL側には既存のExcel上にある項目はすべてMySQLのフィールドとして持っています。

>質問2
上の説明ではシステムの「入力、処理、出力(保存)」があることがわかりました。その上で100人強のユーザーがデータを加工し出力する「出力」部分の機能は必要ないのでしょか。

とても鋭いご質問です。
実は必要です。話がややこしくなるかと思い省いていました。

結論から先に言うとWebクエリを使用しています。

例えばの話ですが、
従業員100人が帰宅時間などにマクロボタンを押して、その日一日の結果が自動的にデータベースへ格納されます。(仕組みは既に説明済み)

そして次の日の朝、従業員がエクセルを立ち上げてマクロボタンを押すと昨日の100人の結果を集計した内容がWebクエリで飛んできます。
それを元にまた作業をする。という感じです。

ユーザーフォームを使用して「先週」の「関東」の「食品部門の売り上げ」などという項目を選んでボタンを押しても、内容に一致するデータがWebクエリで飛んできたりもします。

一応、最初に提示した私のアイデアで進めていますが、
Excel VBAはPHP等に比べて知識が浅く、もっといい方法があるのではないかと考えています。

(「VBAはプロ並ではありませんが」と書きましたが、やっぱり中級者に一歩及ばずというところです。嘘をつきました。すみません。)
このトピックをごらんのみなさん、こんばんは。

>5: ウィ・チャイさん
詳しい説明、ありがとうございました。何となく全体像が見えてきました。

>質問1
>Excelではいつも同じ項目数で、同じデータ主列の入力を行うのでしょうか。これにあわせてMySQL側にもExcelと同じ項目を網羅したテーブルが準備されているのでしょうか。

項目数はいつも違います。新たな項目が後になって追加される可能性も大いにあります。
MySQL側には既存のExcel上にある項目はすべてMySQLのフィールドとして持っています。

<== Excelを中心に考えるのではなく、MySQLを中心に考えると少しアイデアがでます。
ExcelのCSVファイルから項目を抽出し、もし新規のテーブルor新規のカラムがあるときは、テーブルに変更をかける(Alter文)。そうでなければ普通にクエリを発行(データのinsert文)。

他の点、そして 「6: たれだんな」の内容は少し時間をください。
> ODBCを使わずに、その他エクストラのドライバやソフトを居れずにDBにデータを投げられる方法をご存知でしょうか?

ADO(ActiveX Data Objects)を使えば良いと思います。


> Excel(2003)は標準でHTTPとかなんかを操れるのでしょうか?私はここら辺の知識は全くないのです。。。

HTTPとかなんかを操る???
> 2.マクロでIE(visible=False)を起動させ、
> http://管理サーバー/処理プログラム.phpクエリ?="1で保存したCSVファイル名"
> というURLにGETを投げる
 ↑
ただGETするだけなら、私ならXMLHTTPオブジェクト使用します。
>>6で紹介されているサイトのようにInternetOpen・InternetCloseHandleを定義してHttpSendRequestするよりはとっつき易いんじゃないっすかね。
あ、別にIEコンポーネント(WebBrowserコントロール)でもいいんですよ。
直接DBに投げるのであればこの辺は不要でしょうが。
Web系で対処されてはいかがでしょうか?
バグ対応とか、仕様変更、特に内製の場合は泥縄式の仕様変更になるのでサーバ側だけで対処できるWeb系は有利でしょう
EXCEL電子シートをFTPでサーバ側に転送して処理するのが一番早いような気がします
ローカル側からのファイル転送はActive-xコントロールを使ってブラウザからFTP転送できます

ETC通行情報をサーバに転送するのにこの方法を使っています
みなさまたくさんのアイデアありがとうございます!

今日はあまり時間がないので、
さくっと返信させていただきます。

>>たれだんなさん

まずExcel使用の件ですが、

>(2) 100名も従業員が居るのであっても、数人単位で購入したPCの 中にExcelを入れていったら、高額な費用がかかると思う。

>データ入力をExcelにするって決めた理由はあるんですか?

もう既にExcelは全員のPCに入っていて他の業務でも使っている状態です。
ファイルメーカーのWeb共有のメリットが詳しく分からないのであれですが、極力既存のものを使っていきたいと考えています。データ入力のインターフェイスを変えることで従業員に新たな作業を増やすのは避けたいと考えています。
(※従業員そんなにPCに強くありません)


>(1) その後のExcelのバージョン管理はどうしますか?
>==>その都度、サーバからダウンロードさせるの?

これはネックです。ご指摘のとおりです。。。。

(3) Excelにデータをダウンロードしてしまったら
  データの一貫性が崩れてしまうのでは?
  ※データは属性にもよるけど集中して使用した方が扱いやすいのでは?

「基本的には」新規データの登録(INSERT文)がメインになるので、一人のユーザーの入力が、他の人とかぶることは余りありません。
一応、PHP側でも更新日をチェックすることで、バッティングした場合の処理を作っているところですが。

>Linux+apache+[php|perl]+MySQLあたり で記述したほうが、開発するのは楽なんじゃないかなぁ。

サーバー(実はノートPC)はLinux+apache+php+MySQLです。

>http://www.happy2-island.com/access/gogo03/capter90100.shtml
教えていただいたURLですが、
試してみる価値はかなりありそうです!
ありがとうございます。
やりたいことは基本的にシンプルだと思うので、
この作業量とメリットについてよく検討したいと思います。
(因みに私はこういったものを造るのが本業ではないのです。。。)

>>kawaさん

<== Excelを中心に考えるのではなく、MySQLを中心に考えると少しアイデアがでます。

この点は、ちょっと気づかされましたが、以下の

>ExcelのCSVファイルから項目を抽出し、もし新規のテーブルor新規のカラムがあるときは、テーブルに変更をかける(Alter文)。そうでなければ普通にクエリを発行(データのinsert文)。

についてですが、
これは、一応私が現在やっていること?という感がありますが、私の理解が間違っていたり、kawaさんが特に新しい技法を書いたつもりでない場合はごめんなさい。

>>よっちゃんさん

>ADO(ActiveX Data Objects)を使えば良いと思います。

ちょっと調べてみましたが、
「MDACのバージョンがそろっていないような場合には、実行時バインドで対応できる」というような内容を見ました。
汎用性やメンテナンス的なところではどうなのでしょう?
これに問題がなければそもそも、「さっくり解決」のような気もします。
もう少し調べて実際に動かしてみたいと思います。

>ただGETするだけなら、私ならXMLHTTPオブジェクト使用します。
「ただGETを投げるだけ」という用途で、
私が提示した案でのGETとよっちゃんさんのXMLHTTPオブジェクトでのメリット、デメリット、違いなどはあるのでしょうか?

>>戦う什器管理人さん

>EXCEL電子シートをFTPでサーバ側に転送して処理するのが一番早いような気がします

シンプルですね。シンプルイズザベストですが、
データを「サーバーからローカルへ」の場合はどのような方法が考えられるのでしょうか?

また、FTPでサーバーに転送した後は、何をトリガとしてPHPを動かしてデータベースに入れればよいでしょうか?もしLinuxで何かを動かすことができるなら(私はLinux方面は相当弱いので見当違いだったらすいません)、身近にLinuxをやりこんでいる人が居るので、トライできそうな感じはあります。


たくさんのアイデアありがとうございます。
やはり一人で考えていないで、たくさんの人のお話を聞いた方が、ためになることだらけです。

いろいろな方法があり夢は膨らみますが、
将来のメンテナンス性(比較的たくさんの他人がメンテできる内容)や、従業員には極力何もさせないという方向性に絞れば、結論は結構近くにありそうな気がしています。
私の方も質問ばかりでなく、どんどん調査+実行をしていくつもりですので、よろしくお願いします。
ウィ・チャイ様
ローカル→サーバの場合は、ローカル側IPアドレス(固定IPアドレスを持っているので)で送信先のディレクトリをWebアプリ側で変更しています
逆はやっていませんが、ローカル側で対象業務を実行した際にサーバ側フォルダを動的に変更するようにスクリプトを組めば問題ないでしょう
データベースへの取り込みは該当業務のWebページを起動した際に一気に行うようにしています。
素人の意見で、見当違いだったらすみません、と前置きしつつ。
できるだけシンプルに、と考えるなら、
ローカルサーバ上にExcelファイルを置いて、従業員数分のシートを作って各従業員に割り当て、ブックの共有をする(そのファイルを皆直接編集する)というのはどうでしょう?
人数多いと不安定になって厳しいですかね?
プロでは無いとの事、速度、手軽さ、おそらく1テーブル(1データベース)である仮定して、

・サーバ上にExcelファイルを設置。
・クライアントにネットワークドライブを設置
・Excelマクロで、入力内容をサーバ内のCSVかmdbに追記
 追記処理はイベント内で自動に。
・(CSVなら→AccessリンクテーブルでDBとして利用)

エクセルマクロとCSVだけなら使える人は多いので、手離れが良いのでは?
初心者向けサポートセンターに勤めていた時、顧客データ検索やサポートレポート記入は、アクセスでやってました。入力しやすく、履歴も見やすくて、とても良かったです。図・表の作成がない作業なら、アクセスが良いと思います。エクセルやワードで作業させるとセル幅や色、罫線、フォントで遊ぶ人がいると思います。
大前提を無視しちゃってますが、ファイル管理不要&集中し易かったので、是非オススメします。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。