|
続きです。
動きが確認できたコードはこれになります。
Sub kousin()
Dim thename As String
Dim thedir As String
Dim thebook As Workbook
Dim AROW As Long
Dim i As Integer
Application.ScreenUpdating = False
thedir = "C:\documents and settings\kousin"
thename = Dir(thedir & "\*.xls")
thisworkbook.worksheets("一覧").range("A2:D65536").clearcontents
Do While thename <> ""
Set thebook = Workbooks.Open(thedir & "\" & thename)
AROW = ThisWorkbook.Worksheets("一覧").Range("A65536").End(xlUp).Row
ThisWorkbook.Worksheets("一覧").Cells(AROW + 1, 1).Value = _
Left$(thename, len(thename) - 4)
With thebook.Worksheets("データ")
For i = 1 To 3
ThisWorkbook.Worksheets("一覧").Cells(AROW + 1, 1 + i) _
.Value = .cells(2,i).value
Next i
End With
thebook.Close savechanges:=False
thename = Dir()
Loop
Application.ScreenUpdating = True
End Sub
BOOK1.xls
B C D
4月 5月 6月
100 200 300
BOOK2.xls
B C D
4月 5月 6月
300 400 500
もしBOOK1.xlsの4月を100→150に変えると
このコードでは
4月 5月 6月
BOOK1 150 200 300
BOOK2 300 400 500
という結果になります。
もしBOOK1.xlsの6月を300→350に変えると
このコードでは
4月 5月 6月
BOOK1 100 200 350
BOOK2 300 400 500
という結果になります。
現在5月15日だとすると5月はまだ終わっていないため確定できないが
4月(前月)までの転記先のデータ分は確定させたい。
4月
BOOK1 100
BOOK2 300
上記の部分を確定させたい。
4月 5月 6月
BOOK1 100 200 350
BOOK2 300 400 500
という結果が出た後
BOOK1.xlsが
B C D
4月 5月 6月
100 200 300
↓
B C D
4月 5月 6月
150 200 300
になっても
転記.xlsのほうには反映させたくない。
転記.xlsの4月分のデータは保護したい。
4月 5月 6月
BOOK1 100 200 350
BOOK2 300 400 500
という結果のままにしたいです。
もし5月分に変更があった場合
B C D
4月 5月 6月
100 200 300
↓
B C D
4月 5月 6月
100 250 300
5月分はまだ未確定なので
変更を受け付け、
4月 5月 6月
BOOK1 100 250 350
BOOK2 300 400 500
という結果になるようにしたいです。
do while〜の直前に
if val(thisworkbook.worksheet("一覧").cells(1,2).value)_
=month(date)-1 then
cells(cells(2,2),cells(AROW+1,2).locked=true
end if
を付け加えて転記.xlsのセルを保護したらいいのかなと思ったのですが・・
違うようでした。
ん〜ん、伝わりましたでしょうか・・・
よろしくおねがいします。
|
|