アプリ版:「スタンプのみでお礼する」機能のリリースについて

掲題について質問させてください。
会社で社員各自が勤怠情報を記録しているエクセルがあります。
「勤怠10月_山田.XLS」のように名前が付けられています。
そのBookの中に、「マスタ」というSheetがあるのですが、
この内容が不定期で更新されます。(データの追加のみ)
社員は勤務先がバラバラな為、マスタ内容に更新がある度に、
各自に新しい勤怠ファイルをメールで配布しています。その後、
各自、自分が記録していた内容を新しいファイルにコピーするか、
又はマスタSheetを入れ替えるという手順になっています。

この作業が非常に面倒なのでなんとか自動化できないかと
考えた次第です。
例えばEXEファイルなどを配布して、それを起動すると指定した
Bookの指定したSheetの中身が更新される、
というようなことはできないでしょうか?
VB等でできないものでしょうか。
(私自身はAccessのVBAの経験しかありませんが、
VBでできるのであればがんばって勉強したいと思います。
Accessは各自の端末にインストされてないのです。)

どなたかご教授いただけると大変助かります。
よろしくお願いいたします。

A 回答 (2件)

>この作業が非常に面倒なので



コピーするだけですから別に面倒ではないのでは?(^^;;;;

方法が色々あるとは思いますが、簡単なサンプルをアップしておきます。

ExcelVBAです。
送付するブックのThisWorkBookモジュールに以下を置いておくと
そのブックが開かれたときに自動で動き出します。

'---------------------------------------------------
Private Sub Workbook_Open()
 Dim Msg
 Dim myKintai As Workbook

 MsgBox "マスタの更新を始めます" & vbLf & vbLf & _
     "このメッセージを閉じるとファイルを開くダイアログが出ますので" & vbLf & vbLf & _
     "勤怠ファイルを開いて下さい", vbInformation

SelectKintai:
  Msg = Application.Dialogs(xlDialogOpen).Show
   If Msg = False Then
     MsgBox "キャンセルはダメよ! 勤怠ファイルを開け! " & vbLf, vbCritical
     GoTo SelectKintai
   End If

  Msg = MsgBox("更新するのは、" & ActiveWorkbook.Name & _
         " でいいですね? " & vbLf, vbYesNo)
   If Msg = vbNo Then
     ActiveWorkbook.Close False
     GoTo SelectKintai
   End If

 Set myKintai = ActiveWorkbook

  ThisWorkbook.Worksheets("新マスタ").Cells.Copy _
        myKintai.Worksheets("マスタ").Range("A1")

 Application.DisplayAlerts = False
   myKintai.Save
   myKintai.Close
 Application.DisplayAlerts = True

 MsgBox "更新は終了しました ", vbInformation, "終了"

   Application.Quit
   ThisWorkbook.Close False

End Sub
'---------------------------------------------------------

●これは途中で止めることはできません。
要するにこのプログラムが動きだしたら更新終了まで止められないということです。
更新するかどうかのメッセージを出すこともできますが、
更新しないを選んで、更新したつもりになると拙いですから。
 
私見ですが、今回のはコピー程度のことですから、現在の手動の方法がベターだと考えます。
自動更新するなら、更新するファイルを間違った場合の対策などは考えられることを全て講じておかないと。
    • good
    • 0
この回答へのお礼

手動のほうがシンプルでよいですかね。やっぱり。
レスありがとうございました。

お礼日時:2007/12/12 15:29

VBで可能でしょう。

(エクセルVBAでできることは基本的にVBでできます。エクセルの「マクロの記録」機能とかで勉強するとやりやすいです。)
が、ちょっと疑問に思ったので、参考までに意見です。

・VBで作ったEXEは単体で動かないかも。その場合、初回はインストール作業が必要になり、結局煩雑かもしれませんね。
(VB6までしか知らないのですが、最近のVBではどうなんでしょうか。。。)

・exeファイルを実行して、更新するエクセルファイルを指定して更新を実行するのと、シートをコピーするのでは、対して手間は変わらなさそうでは?

・「マスタ」シートだけ別のエクセルファイルにして、
 勤怠エクセルファイルと同じフォルダに置くなどして、参照するようにしてはどうでしょうか?
 マスタのエクセルファイルを上書きしてもらうだけで済みそうですが。
    • good
    • 0
この回答へのお礼

レスありがとうございました。
参考にさせていただきます。

お礼日時:2007/12/12 15:28

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