Excel VBA 初心者であまり基礎も理解しておらず申し訳ありませんが、
仕事で急ぎ管理表を作成しなければならなくなりました。
わからないなりにネットで検索しながら作成したのですがつまずきまくっております。
どうぞご教示ください。(>人<;)
前提・実現したいこと
まず、実現したいことは、
複数の人がそれぞれのファイルに情報を入力します。
その情報を共有サーバー内にある集約用の管理表にそれぞれのタイミングで転記(追記)し、
最新の情報を共有したいと思っております。
これまでは集約管理表に都度ハンドで転記していたのですが、人数が大幅に増え、ファイルを開いた状態で
離席されたりと問題が出てきたのでマクロで集約できないかと下記の通り考えてみました。
■マクロの手順
0. 入力用Aからの転記実行
0. 管理表Bを開いていなければ開き、読み取りで開いていたら元ファイルを開く。(基本、読み取りで開いている)
※ここで他の人が元ファイルを開いていたら「他の人が作業中です。しばらく経ってから転記し直してください。」と
メッセージを出したい。
0. 入力用AのB列「」の一つ下の行、C列からM列までをコピーし、管理表BのB列最終行の一つ下の行へ転記する。
0. 入力用Aの転記した行のB列のセルに「」を表記させる。
0. 転記後管理表Bを上書き保存し、閉じて読み取り専用で開く。
発生している問題・エラーメッセージ
①Bの集約管理ファイルを閉じていると開くのですが、開いていたらメッセージボックスは表示されず
「ファイルが見つかりません。ファイル名保存場所が正しいか・・」と出ます。
②Bの集約管理ファイルを閉じた状態にしてマクロを動かすとAの入力用をコピーせず、Bのファイルのセルを
コピーしにいきます。。
下図参照
この先から進めなくなりました。
①および②が解消できればまた進めることができると思うのですが・・
基礎を理解できていないがゆえだと思いますが、助けていただきたいです。。><
よろしくお願いします。
該当のソースコード
※上記の画像と同じです
Sub 転記()
Dim wB As Workbook, wS As Worksheet
Dim myPath As String, fN As String
Dim LastRow As Long
'①A入力用(転記元)の"D1"を参照し、B共有フォルダの「管理状況」にある
'集約管理(転記先)のブックを開く
Application.DisplayAlerts = False
myPath = "共有サーバー\管理状況"
fN = "【共有】集約管理" & Range("D1").Value & "月" & ".xlsx"
Workbooks.Open Filename:=myPath & fN, Notify:=False
If ActiveWorkbook.ReadOnly Then
MsgBox "他の人が作業中です。しばらく経ってから転記し直してください。"
ActiveWorkbook.Close
Else
Sheets("list").Activate
Range("A1") = Now
End If
Application.DisplayAlerts = True
'②A入力用(転記元)のB列「」の一つ下のC列からM列までをコピー
With ThisWorkbook.Worksheets("入力フォーム")
x = 4
Do While Cells(x, 3).Value <> ""
If Cells(x, 2).Value <> "" Then
Cells(x, 2).Value = "" '----コピーと同時にB列へ転記すみ「」を追記
Range(Cells(x, 3), Cells(x, 13)).Copy
'③共有フォルダの「管理状況」にある集約管理へ転記
Set wB = Workbooks(fN)
Set wS = wB.Worksheets("list")
LastRow = wS.Cells(Rows.Count, 2).End(xlUp).Row '----B列の最終ひとつ下へ値貼り付け wS.Range("B" & LastRow).Offset(1, 0).Select ActiveSheet.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False End If x = x + 1 Loop
End With
Application.CutCopyMode = False
wB.Save
wB.Close '----元のファイルを保存し閉じる
MsgBox "転記しました。"
Workbooks.Open Filename:=myPath & fN, ReadOnly:=True '----読み取り専用で開く
End Sub
試したこと
補足情報
使用バージョン:Excel2010

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/30 02:18
退会済みユーザー
2018/09/30 03:41