[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『事務所内のLAN上でサーバーに保管した在庫管理票と価格表のリンクをリアルタイムにしたい』(Sammy)
現在LAN上には30台程度のPCがつながっていますが、
上記に特化したPCは各ブロック1台に限定し8台でやってます。
ファイルサーバーに在庫管理票ファイルと価格表ファイルを保管してあります。
日々入庫した製品と販売した製品の入力をA端末より在庫管理票にリアルタイムに
入力しています。入力したらすぐに上書き保存します。価格表の方もA端末にて開
いていますのですぐにこれも同時に上書き保存しています。在庫管理票の在庫数は
価格表内の在庫を表示するセルにリンクしてあります。B〜G端末では価格表のみ
開いて在庫管理票の在庫数をリンクさせたセルにて確認しています。
しかしB〜Gの端末ではA端末での更新した在庫数が既に開いているため再度開き
なおさないと個数が更新されません。
エクセル内ここまで出来ましたが、自動更新するように出来ればリア
ルタイムに個数を判断できるので間違いや不安がなくなります。
何か良い方法はあるのでしょうか?
更新ボタンという感じでも大変助かります。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
自動更新しても、結局見てから登録までの一瞬で他人が登録する可能性があるので、表示は参考にしかなりません。
DBでいうと、在庫確認から登録までを1つのトランザクションにまとめれば解決するでしょう。
(???) 2014/02/10(月) 09:54
(Sammy) 2014/02/10(月) 12:44
Sub test() ActiveWorkbook.OpenLinks Name:="Book1.xlsm" ActiveWorkbook.Close End Sub
なお、DBサーバは、フリーのものが多数存在します。規模的に無料で十分。Microsoftでも、
SQL Server Expressという無償版を公開してます。
無償といっても使用期限があるわけではなく、DBサイズ上限(10G)やメモリ量制限、CPU数制限が
ある事と、管理ツールが殆どない程度であり、Excelデータ管理の代わりくらい楽勝ですよ。
設備投資0、Excel VBAの改良のみで業務効率アップなのだから、有用だと思うのですけどねぇ。
(???) 2014/02/10(月) 14:59
(Sammy) 2014/02/10(月) 16:49
(Sammy) 2014/02/12(水) 08:23
念のため、開いていたら無視する例。
Sub test() Dim i As Long Dim iFlag As Long
For i = 1 To Workbooks.Count If Workbooks(i).Name = "Book1.xlsm" Then iFlag = 1 Exit For End If Next i
If iFlag = 0 Then ActiveWorkbook.OpenLinks Name:="Book1.xlsm" ActiveWorkbook.Close End If End Sub (???) 2014/02/12(水) 09:28
更新ボタンを押す → (個数更新後・エクセルが立ち上がって全体が霧がかかった
ような画面になってから)エクセルは動作を停止しましたのメッセージ → エクセ
ルにより情報を回復しています →プログラム終了 というボタンがでる
この動作が毎回ではなく、時々(3回に1回ぐらい)でます。
そのたびに終了してしまいますので具合悪いです。
ボタンを押すとこのような流れが発生しますがWin7自体が異常でしょうか?
エクセルが異常でしょうか?
ファイルは社内LAN上にあるため、Book1のところはPassを入れてあります。
また、価格表は20000行を超えるためか開くのに時間がかかっています。
(時間は5秒ぐらいで下のバーが左から右にスライドします)
また、昨日よりエクセルを2010に変更しましたが問題ありますか?
理由と解決策があるようでしたら教えていただければ幸いです。
やっかいな質問で申し訳ありません。
(Sammy) 2014/02/12(水) 15:22
自PC上ならうまくいく場合、オプション関係のセキュリティ設定を見直しましょう。
リンク先がネットワーク上のサーバにあるブックならば、「セキュリティセンターの設定」で、
「信頼済みドキュメント」で信頼を許可してあるかどうか、等。
うまく動いていた2007の設定と2010の設定を見比べてみて、確認してみてください。
(???) 2014/02/12(水) 16:00
PCスペックは WIN7 pro 32ビット CPU インテル2.4GHZメモリは4.0G です。
仕様が悪いのでしょうか?
今回のことで昔のwin98の時代に強制終了させられたことを思い出しました。
あれは不正アクセス違反でしたか?忘れてしまいましたが。
原因がわからないようであれば諦めます。
こんなにお世話になってこのようなことをこちらから申しましては失礼とは思いますが、
これ以上ご迷惑もかけたくありませんし・・・。
(Sammy) 2014/02/12(水) 17:26
全データではなく、一部だけ別ブックにコピーして試してみましょう。
それでデータ量のせいなのかどうかを判断できます。
(???) 2014/02/12(水) 18:00
(Sammy) 2014/02/13(木) 08:24
(Sammy) 2014/02/13(木) 14:23
・実験のために元ブックと先ブック(マクロ入り)を自PCにコピー。
・元ブックのコピーは、好きな量にデータ数を減らす。ブックを新規作成後に範囲コピーでもOK。
・先ブックのコピーは、一旦リンクを全てDELETE。(ブックを新規作成でもOK)
・コピー2つを、1つのExcelで開く。
・先ブックでは、リンクしたいセルで「=」を入力後、元ブックのセルをクリック。
・リンクしたいセル参照の数式に変わったところでENTER。
・データ量があると思うので、作成した1セルのリンクを編集し、$を外す。
(='[Book1.xlsm]Sheet1'!$A$1 等のセル指定部分を、!A1 のようにする)
・リンクセルをドラッグし、必要なだけ範囲コピー。
・コピーしたセルのリンク先が、正しく連番のセルになっている事を確認。
・表示中の元ブックコピーの値を幾つか変更。先ブックに反映される事を確認。
・元ブックコピーを保存し、閉じる。
(???) 2014/02/13(木) 15:57
何か注意点があれば教えてください。
実験はたぶん14:00頃からになります。
(Sammy) 2014/02/14(金) 08:07
(Sammy) 2014/02/14(金) 12:37
ActiveWorkbook.OpenLinks Name:="Book1.xlsm" DoEvents ActiveWorkbook.Close (???) 2014/02/14(金) 14:04
MsgBox UBound(ActiveWorkbook.LinkSources(xlExcelLinks))
(???) 2014/02/14(金) 14:18
DoEvents を追加しても同じでした。 また次のご質問の結果は2でした。
ブックの数も関連しているのですか?
リンクとブックの状況を書いてみます。
在庫管理しているブックはシートが現在10あります。
メインの行数は700行程度
それ以外は100行程度でテキストで情報表示に使っています。
そして価格表の方はシートが16あります。ほとんどが情報のみのページです。
リンクしているところは2シート位です。
メインの価格表のシート以外は画面に収まる程度の行数しかありません。
価格表からリンクを貼ってあるファイルは・・・在庫表のファイルだけですが
もう一つ価格表ファイルの他のシートからも在庫表の上記と同じページの
違うセルにリンクを貼っています。
もっと詳しくということであればじっくり調べてみます。
どこかにポカがあるかもしれません。
お伝えしなければいけない内容でしたか…申し訳ありません。
これでわかるでしょうか?
一回再構築した方がいいかもしれませんね。いい機会かもしれません。
追加追加でどんどん情報量が増えてしまいましたので・・・
(Sammy) 2014/02/14(金) 16:52
提示したマクロは、1つの転記元を想定しています。複数ブックにリンクしているなら、
ブックの数の分だけ、同様に記述してみてください。
(???) 2014/02/17(月) 08:51
(Sammy) 2014/02/17(月) 12:21
(Sammy) 2014/02/19(水) 09:18
再確認してリンクブックは1とのことですが、前回リンクが2になっていたあたりに問題があるかも?
(リンク先ブックが、更に別のブックをリンクしている、とか? 在庫量を手入力ではなく、ローカルブックの
セル参照にしてしまい、他人のExcelでは追えないとか?)
なお、WINDOWS7は、OS自身がSQL Serverを利用しているので、動作していても気にせず。
必ず入っていますが、それとは別に、全員が見られるPCにDBサーバを構築するという改善案でした。
もともと、Excelシート共用の在庫管理には、数人同時に参照と更新を行った場合に問題が出やすいのです。
在庫量はあくまで参考値であり、注文時に在庫を減らしてもOKならば確定、という処理にすべきであり、
これを簡単に実現するため、データベースをよく使用するのです。
(在庫照会時に、未確定のものを「予約」登録しておく方法も、よく使われます)
ご自身でRDBについて調査されるのも良いでしょう。
もし、社内にソフトウェア作成できる人がいるならば、その部門に相談してみてください。
誰も居ないならば、プロに開発を依頼することです。
(???) 2014/02/19(水) 11:36
(Sammy) 2014/02/19(水) 12:39
本題と関係ないところですみませんが、 >WINDOWS7は、OS自身がSQL Serverを利用しているので って本当ですか?
手持ちの 7 を確認してみましたが、Program Files や サービスにそれらしき ものは見当たりませんでした。 どういう形態で入っているのでしょうか? (アプリケーションが Express版などを使用していて、知らないところで入って いるというケースはありましたが。) (Mook) 2014/02/19(水) 15:13
ところで、私自身使ったことがないのですが、別案があります。
Google ドキュメントという、Office似のアプリがあり、共同編集機能を使うと、
他人の変更した内容が、ほぼリアルタイムに全員更新されるのだそうです。
同時更新には人数制限があるようですが、これなら何もコーディングせずとも在庫数が
変わるので、試してみてください。Excelシートの取り込みもできるようです。
(???) 2014/02/19(水) 17:32
更新は、1台のPCで他の7台は、その更新内容の参照だけでよいなら、 7台は、対象ブックを読取専用で開いてもよいですね!!
全部の投稿を読んでいませんが、この場合、UpdateFromFileメソッドが使えるかもしれませんよ!!
こんな投稿をしたことがありました。
参考にしてみてください (ichinose) 2014/02/20(木) 08:38
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.