
掲題について質問させてください。
会社で社員各自が勤怠情報を記録しているエクセルがあります。
「勤怠10月_山田.XLS」のように名前が付けられています。
そのBookの中に、「マスタ」というSheetがあるのですが、
この内容が不定期で更新されます。(データの追加のみ)
社員は勤務先がバラバラな為、マスタ内容に更新がある度に、
各自に新しい勤怠ファイルをメールで配布しています。その後、
各自、自分が記録していた内容を新しいファイルにコピーするか、
又はマスタSheetを入れ替えるという手順になっています。
この作業が非常に面倒なのでなんとか自動化できないかと
考えた次第です。
例えばEXEファイルなどを配布して、それを起動すると指定した
Bookの指定したSheetの中身が更新される、
というようなことはできないでしょうか?
VB等でできないものでしょうか。
(私自身はAccessのVBAの経験しかありませんが、
VBでできるのであればがんばって勉強したいと思います。
Accessは各自の端末にインストされてないのです。)
どなたかご教授いただけると大変助かります。
よろしくお願いいたします。
No.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
'---------------------------------------------------------
●これは途中で止めることはできません。
要するにこのプログラムが動きだしたら更新終了まで止められないということです。
更新するかどうかのメッセージを出すこともできますが、
更新しないを選んで、更新したつもりになると拙いですから。
私見ですが、今回のはコピー程度のことですから、現在の手動の方法がベターだと考えます。
自動更新するなら、更新するファイルを間違った場合の対策などは考えられることを全て講じておかないと。
No.1
- 回答日時:
VBで可能でしょう。
(エクセルVBAでできることは基本的にVBでできます。エクセルの「マクロの記録」機能とかで勉強するとやりやすいです。)が、ちょっと疑問に思ったので、参考までに意見です。
・VBで作ったEXEは単体で動かないかも。その場合、初回はインストール作業が必要になり、結局煩雑かもしれませんね。
(VB6までしか知らないのですが、最近のVBではどうなんでしょうか。。。)
・exeファイルを実行して、更新するエクセルファイルを指定して更新を実行するのと、シートをコピーするのでは、対して手間は変わらなさそうでは?
・「マスタ」シートだけ別のエクセルファイルにして、
勤怠エクセルファイルと同じフォルダに置くなどして、参照するようにしてはどうでしょうか?
マスタのエクセルファイルを上書きしてもらうだけで済みそうですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でCSVファイルをリストビュー...
-
VBA Bookの表示、非表示
-
fgetsのfはどういう意味でしょ...
-
NetBTエラーとbrowserエラーが多発
-
Thunderbird 振り分けされなく...
-
Tera Termでのコマンド流し込み...
-
フォルダのサムネイル画像
-
撮影後、SDカードに作成される...
-
大量のフォルダへのハイパーリ...
-
大文字はできるだけ使わない方...
-
JP1で月末以外で毎週月曜日のジ...
-
バッチファイルの親フォルダを...
-
エクセルで定期的(30分おき)...
-
2010でShiftキーを使っても自動...
-
Teratermマクロ動作について
-
excel VBA フォルダ内のサブフ...
-
xcopyバッチを管理者として実行...
-
java auto updaterとは何でしょ...
-
【Ciscoコマンド】interface As...
-
Teratermで、条件分岐させたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サブフォルダ内のファイルを全...
-
error RC2104について
-
指定したもの以外の削除方法
-
VBA Bookの表示、非表示
-
エクセルで管理できるフリーの...
-
バッジファイルで削除できない...
-
EXCELのSheetを自動更新できな...
-
エクセル VBAでこれは難しいで...
-
指定したフォルダ直下のファイ...
-
vbaでDLL参照しているエクセル...
-
C#でCSVファイルをリストビュー...
-
隠されたファイル
-
タスクバーのファイル表示について
-
バッチファイルでフォルダとフ...
-
Visual Studio 2008で新規プロ...
-
Visual C++ 2005 Express Editi...
-
意味不明のアイコンとプログラ...
-
ExcelからAccessのマクロを呼び...
-
リストボックスに表示されたフ...
-
vbからのファイル操作について
おすすめ情報