エクセルで、フォームを使ってデータ入力をし、データを蓄積(行が下へ伸びてゆく)していくファイルがあるのですが、複数の人がネットワーク上で同じファイル(共有book)を開いて作業するイメージで質問です。
 フォーム上に入力したデータをエクセルシートに落とす前に、1回保存-シートへ書き込み-再度保存とやれば、データがバッティングせず、うまく蓄積されていくのかなと漠然と思っていたのですが、うまくいきませんでした。
 これは、1回保存すれば、他の誰かが作業したデータを自分の開いているbookに反映させ、そのデータにフォームのデータを追加して行くというというように考えていたのですが、この考え方は間違っているのでしょうか?また、ほかに何か良い方法があるでしょうか?
 

このQ&Aに関連する最新のQ&A

A 回答 (1件)

初めまして、こんばんは。



ちょっと、質問から時間が経っているので、解決されているかもしれませんが・・・。

共有ブックは、一番最初に開いた人が変更の権利を持っており、その後になされた変更は反映されません。これは基本ルールです。違うデータが同じ名前でいくつもあると、整合がとれないので、こういうルールがあるのだと思います。
解決策としては、入力前に本ファイルのコピーを作り、そのコピーファイルに入力、終了時に共有ファイルへ書き足し、保存というのがベストではないかと思います。

頑張って下さい。

この回答への補足

ご指摘の要領で試してから返事をと思い、ついつい時間が経過してしまいました。
実は、まだ試していないのです。
しかしながら、「一番最初に開いた人が変更の権利を持つ」というところは、データがバッティングした場合、確か共有の設定のところで、誰の変更部分を反映し、保存するかという選択ができるようになっていたと思いますが、それとは話がちがうのでしょうか?
解決策としてご指摘の入力用ファイルとデータ保存用ファイルを分けてやるというのが確かにベターのような気がしてきました。ただ、これでも、タイミングによっては(データ保存用ファイルの読み込み時がバッティングするなど)後発ユーザーに「読み取り専用」を強いることがあるのでベストではないような気がしています。でもまあ、ぜいたくを言わずに、この方法を追求してみたいと思います。
ありがとうございました。

補足日時:2002/02/02 12:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qデータシート形式のサブフォームでコンボボックスでの入力がうまくいかない

サブフォームはデータシート形式です。
メインフォームは受注フォーム。サブフォームは受注明細フォームです。
サブフォームのソースは受注明細テーブルです。
サブフォームに商品コードのコンボボックスがあって選択すると
該当する商品名、販売価格を商品マスタテーブルから検索して表示
したいので以下のようにためしてみました。

Private Sub 商品コード_AfterUpdate()
'
' 商品名 = DLookup("商品名", "T_商品マスタ", "商品コード='" & 商品コード & "'")
' 販売価格 = DLookup("販売価格", "T_商品マスタ", "商品コード='" & 商品コード & "'")
商品名 = 商品コード.Column(1)
販売価格 = 商品コード.Column(2)

End Sub
そうすると、商品コードを選択すると商品名と販売価格が
全行同じものに変わってしまいます。
どうすればよいでしょうか?
ご教示していただけませんでしょうか?
よろしくお願い致します。

Aベストアンサー

>全行同じものに変わってしまいます。
非連結のコントロールに値を代入すればそうなります

そもそも
>商品コードのコンボボックスがあって選択すると
>該当する商品名、販売価格を商品マスタテーブルから検索して表示したい
これが目的ならVBAやDLookup関数など持ち出さず
サブフォームのソースを受注明細と商品マスタを商品コードで
結合したクエリにすれば済む話ですね

Qbook1の表データからbook2の表データと合致した時に”主”と表示させたい

エクセル初心者です。
book1の表データの中でbook2の資格を持っている者を抜出し
book1 x列にある作業主任者の欄に”主”と表示させたいのですが

book2の表 B列(B3:B35)を作業主任者と名前を付けて
=IF(COUNTIF(C4:V4,作業主任者),"主","")と数式を作ってみましたが上手くゆきません

資格番号を1つづつ拾ってゆくと数式も長くなりスッキリとしません

短い数式で

各作業員の持つ資格とbook2のA-2~B-41とで一致するデータが1つ以上ある時”主”と表示し
一致するデータが無い時は””とする

を表すことは出来ないのでしょうか?

宜しくお願いします。

Aベストアンサー

一案です
=IF(ISNA(LOOKUP(2,1/COUNTIF(C4:V4,作業主任者))),"","主")
でもいいかも。参考まで

QExcel 蓄積された売上データを別シートに書き出す方法を教えて下さい

Excel2002を使った、下記のようなファイルがあります。
A列    B列   C列     D列     E列
製品コード 製品名 売上数量  売上金額  売上年月日
12345    A    2      1000     20001213

過去5年間の全製品の売上データが上記のような形式で1つのシートに蓄積されています。(売上年月日の昇順でソートされています)
このデータを、売上年月ごとに別シートに分けていきたいのですが、何かいい方法はありますでしょうか?
最初はオートフィルタで抽出して1つづつ別シートに移していこうかと思ったのですが、結構なデータ量でしたので、質問させて頂きました。
よろしくお願いします。<m(__)m>

Aベストアンサー

一応置いておきます。
元データはシート1枚だけにしておいてください。
シート名はなんでもいいです。
データの並びもバラバラでも構いません。
作成するシートの最初の月と最後の月を変えて使ってください。

Sub Macro()

Dim i
Dim month As Variant
Dim mon_str As String
i = 2
month = DateSerial(2000, 12, 1) '←ここにこの形式で最初の月を入れる
mon_str = Format(month, "yyyymm")

Do
Sheets(1).Select
Sheets.Add
Sheets(1).Cells(1, 1) = Sheets(2).Cells(1, 1)
Sheets(1).Cells(1, 2) = Sheets(2).Cells(1, 2)
Sheets(1).Cells(1, 3) = Sheets(2).Cells(1, 3)
Sheets(1).Cells(1, 4) = Sheets(2).Cells(1, 4)
Sheets(1).Cells(1, 5) = Sheets(2).Cells(1, 5)
Sheets(1).Name = mon_str
Sheets(1).Move After:=Sheets(i)
i = i + 1
month = DateAdd("m", 1, month)
mon_str = Format(month, "yyyymm")
Loop Until mon_str = "200501" '←ここにこの形式で最後の月の次の月を入れる

Sheets(1).Select

Dim x, y
x = 2
Do
mon_str = CStr(Cells(x, 5))
month = DateSerial(Val(Left(mon_str, 4)), Val(Mid(mon_str, 5, 2)), Val(Right(mon_str, 2)))
mon_str = Format(month, "yyyymm")
y = 1
Do
y = y + 1
Loop Until Sheets(mon_str).Cells(y, 1) = ""
Sheets(mon_str).Cells(y, 1) = Sheets(1).Cells(x, 1)
Sheets(mon_str).Cells(y, 2) = Sheets(1).Cells(x, 2)
Sheets(mon_str).Cells(y, 3) = Sheets(1).Cells(x, 3)
Sheets(mon_str).Cells(y, 4) = Sheets(1).Cells(x, 4)
Sheets(mon_str).Cells(y, 5) = Sheets(1).Cells(x, 5)
x = x + 1
Loop Until Cells(x, 1) = ""

End Sub

一応置いておきます。
元データはシート1枚だけにしておいてください。
シート名はなんでもいいです。
データの並びもバラバラでも構いません。
作成するシートの最初の月と最後の月を変えて使ってください。

Sub Macro()

Dim i
Dim month As Variant
Dim mon_str As String
i = 2
month = DateSerial(2000, 12, 1) '←ここにこの形式で最初の月を入れる
mon_str = Format(month, "yyyymm")

Do
Sheets(1).Select
Sheets.Add
Sheets(1).Cell...続きを読む

Qエクセルで5分ごとにデータを蓄積、保存したいのですが…

エクセルでRSSよりリアルタイムに取得した(株価)を表示させています。
それを自動で5分ごとに自動でデータ蓄積させる方法はありませんか?

4行目のA列からCU列の50列ほどにデータをリアルタイムで取得しています。

その4行すべてを5分後に5行目にコピー
       10分後に6行目にコピー
   15分後に7行目にと連続して保存したいと思います。

終了は5時間後です。

   A列 B列 C列 D列 E列・・・CU列
-------------------------------------------
4行 10  5  30  40  50 ・・・ 80
--------------------------------------------
5行    5分後
6行   10分後
7行   15分後
: :
: :

いろいろなサイトで探して悪戦苦闘してるのですが、どれもうまくできずにいます。
VBA初心者です。

上記のような場合は、どのようにコードを書いたらいいでしょうか。
ご教示いただければありがたいです。
よろしくお願いいたします。

エクセルでRSSよりリアルタイムに取得した(株価)を表示させています。
それを自動で5分ごとに自動でデータ蓄積させる方法はありませんか?

4行目のA列からCU列の50列ほどにデータをリアルタイムで取得しています。

その4行すべてを5分後に5行目にコピー
       10分後に6行目にコピー
   15分後に7行目にと連続して保存したいと思います。

終了は5時間後です。

   A列 B列 C列 D列 E列・・・CU列
-------------------------------------------
4行 10 ...続きを読む

Aベストアンサー

失礼しました。
Application.OnTime Now + TimeValue("00:00:15"), "Tset"
では15秒間隔ですね。
Application.OnTime Now + TimeValue("00:05:00"), "Tset"
でお確かめ。

Qエクセルでフォームを使って日付を保存しようとしているのですが、なぜかシートに保存された表示形式が違う

エクセルでフォーム(VBA)を使って日付を保存しているのですが、
保存をした後シートの内容を見ると表示形式が違って保存されている。
保存のときに米暦に直すようにフォーマットをかけているのですが、保存されたデータは、”mm/dd/yy”ではなく、別の形式になってしまっている。

確認した症状としては、たとえば先月のデータであれば、通常に保存されているので今月のデータ(具体的には12/04/06と入力すると形式が、違って保存されてします。
よろしくお願いします。

Aベストアンサー

こんにちは。

最初に、フォームではなく、UserFormだということで、書かせていただきます。フォームツールを使いこなす人もいないわけではありませんが。

>具体的には12/04/06と入力すると形式が、違って保存されてします。

それには、本来、まともにやるのだったら、入力を、自分が考える日付のDate型として認識させるコードが必要です。本来は、12/04/2006 とすれば、正しいDate型として認識しているはずです。

しかし、ごく簡単な方法は、ワークシート側の自動キャストが働かないようにして、テキストベースで、以下のように貼り付けることですね。たぶん、こんなところで、とりあえずは良いかもしれません。ただし、日付の入力間違いについては、チェックが働いていません。

例:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim myDate As String 'Date型でなく、String型で
If KeyCode = 13 Then 'Enter で、入力
 myDate = TextBox1.Text
 Cells(1, 1).NumberFormatLocal = "mm/dd/yy" '必ず先に来る
 Cells(1, 1).Value = myDate
End If
End Sub

こんにちは。

最初に、フォームではなく、UserFormだということで、書かせていただきます。フォームツールを使いこなす人もいないわけではありませんが。

>具体的には12/04/06と入力すると形式が、違って保存されてします。

それには、本来、まともにやるのだったら、入力を、自分が考える日付のDate型として認識させるコードが必要です。本来は、12/04/2006 とすれば、正しいDate型として認識しているはずです。

しかし、ごく簡単な方法は、ワークシート側の自動キャストが働かないようにして、テキ...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報