Option Explicit
Const Scrbook As String = "移動元.xlsx"
Const Folder As String = "D:\goo\data"
Public Sub 転記()
Dim t0, t1, t2, t3
Dim dict As Object
Dim maxrow3 As Long
Dim row3 As Long
Dim key2 As Variant
Dim sh3 As Worksheet
Dim Vals As Variant
Dim sname As String
Dim row2 As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
t0 = Time
Set dict = CreateObject("Scripting.Dictionary")
Workbooks.Open Filename:=Folder & "\" & Scrbook, ReadOnly:=True, UpdateLinks:=0
t1 = Time
Call GetlDs("移動元", dict)
t2 = Time
ThisWorkbook.Activate
Set sh3 = Worksheets("Sheet1")
maxrow3 = sh3.Cells((Rows.Count), "F").End(xlUp).row
For row3 = 4 To maxrow3
key2 = sh3.Cells(row3, "F").Value
If dict.exists(key2) = True And sh3.Cells(row3, "H") = "" Then
Vals = Split(dict(key2), "|")
sname = Vals(0)
row2 = Vals(1)
sh3.Cells(row3, "E").Value = Workbooks(Scrbook).Worksheets(sname).Cells(row2, "C").Value
sh3.Cells(row3, "G").Value = Workbooks(Scrbook).Worksheets(sname).Cells(row2, "Z").Value
sh3.Cells(row3, "H").Value = Workbooks(Scrbook).Worksheets(sname).Cells(row2, "H").Value
sh3.Cells(row3, "I").Value = Workbooks(Scrbook).Worksheets(sname).Cells(row2, "G").Value
sh3.Cells(row3, "J").Value = Workbooks(Scrbook).Worksheets(sname).Cells(row2, "L").Value
sh3.Cells(row3, "K").Value = Workbooks(Scrbook).Worksheets(sname).Cells(row2, "K").Value
sh3.Cells(row3, "M").Value = Workbooks(Scrbook).Worksheets(sname).Cells(row2, "DQ").Value
sh3.Cells(row3, "O").Value = Workbooks(Scrbook).Worksheets(sname).Cells(row2, "T").Value
sh3.Cells(row3, "P").Value = Workbooks(Scrbook).Worksheets(sname).Cells(row2, "V").Value
Else
'sh3.Cells(row, "E").Value = ""
'sh3.Cells(row, "G").Value = ""
'sh3.Cells(row, "H").Value = ""
'sh3.Cells(row, "I").Value = ""
'sh3.Cells(row, "J").Value = ""
'sh3.Cells(row, "K").Value = ""
'sh3.Cells(row, "M").Value = ""
'sh3.Cells(row, "O").Value = ""
'sh3.Cells(row, "P").Value = ""
End If
Next
t3 = Time
Workbooks(Scrbook).Close
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Debug.Print "転記"
Debug.Print "Open", 86400 * (t1 - t0)
Debug.Print "GetIDs", 86400 * (t2 - t1)
Debug.Print "Sheet1", 86400 * (t3 - t2)
MsgBox ("完了")
End Sub
Private Sub GetlDs(ByVal sname As String, ByRef dict As Object)
Dim maxrow As Long
Dim row As Long
Dim key As Variant
Dim sh3 As Worksheet
Set sh3 = Worksheets(sname)
maxrow = sh3.Cells((Rows.Count), "A").End(xlUp).row 'ID
For row = 2 To maxrow
key = sh3.Cells(row, "A")
dict(key) = sname & "|" & row
Next
End Sub
T3B0aW9uIEV4cGxpY2l0CgpDb25zdCBTY3Jib29rIEFzIFN0cmluZyA9ICLnp7vli5XlhYMueGxzeCIKQ29uc3QgRm9sZGVyIEFzIFN0cmluZyA9ICJEOlxnb29cZGF0YSIKUHVibGljIFN1YiDou6LoqJgoKQogICAgRGltIHQwLCB0MSwgdDIsIHQzCiAgICBEaW0gZGljdCBBcyBPYmplY3QKICAgIERpbSBtYXhyb3czIEFzIExvbmcKICAgIERpbSByb3czIEFzIExvbmcKICAgIERpbSBrZXkyIEFzIFZhcmlhbnQKICAgIERpbSBzaDMgQXMgV29ya3NoZWV0CiAgICBEaW0gVmFscyBBcyBWYXJpYW50CiAgICBEaW0gc25hbWUgQXMgU3RyaW5nCiAgICBEaW0gcm93MiBBcyBMb25nCgogICAgQXBwbGljYXRpb24uU2NyZWVuVXBkYXRpbmcgPSBGYWxzZQogICAgQXBwbGljYXRpb24uQ2FsY3VsYXRpb24gPSB4bENhbGN1bGF0aW9uTWFudWFsCiAgICB0MCA9IFRpbWUKICAgIFNldCBkaWN0ID0gQ3JlYXRlT2JqZWN0KCJTY3JpcHRpbmcuRGljdGlvbmFyeSIpCiAgICBXb3JrYm9va3MuT3BlbiBGaWxlbmFtZTo9Rm9sZGVyICYgIlwiICYgU2NyYm9vaywgUmVhZE9ubHk6PVRydWUsIFVwZGF0ZUxpbmtzOj0wCiAgICB0MSA9IFRpbWUKICAgIENhbGwgR2V0bERzKCLnp7vli5XlhYMiLCBkaWN0KQogICAgdDIgPSBUaW1lCiAgICBUaGlzV29ya2Jvb2suQWN0aXZhdGUKICAgIFNldCBzaDMgPSBXb3Jrc2hlZXRzKCJTaGVldDEiKQogICAgbWF4cm93MyA9IHNoMy5DZWxscygoUm93cy5Db3VudCksICJGIikuRW5kKHhsVXApLnJvdwoKICAgIEZvciByb3czID0gNCBUbyBtYXhyb3czCiAgICAgICAga2V5MiA9IHNoMy5DZWxscyhyb3czLCAiRiIpLlZhbHVlCgogICAgICAgIElmIGRpY3QuZXhpc3RzKGtleTIpID0gVHJ1ZSBBbmQgc2gzLkNlbGxzKHJvdzMsICJIIikgPSAiIiBUaGVuCiAgICAgICAgICAgIFZhbHMgPSBTcGxpdChkaWN0KGtleTIpLCAifCIpCiAgICAgICAgICAgIHNuYW1lID0gVmFscygwKQogICAgICAgICAgICByb3cyID0gVmFscygxKQogICAgICAgICAgICBzaDMuQ2VsbHMocm93MywgIkUiKS5WYWx1ZSA9IFdvcmtib29rcyhTY3Jib29rKS5Xb3Jrc2hlZXRzKHNuYW1lKS5DZWxscyhyb3cyLCAiQyIpLlZhbHVlCgogICAgICAgICAgICBzaDMuQ2VsbHMocm93MywgIkciKS5WYWx1ZSA9IFdvcmtib29rcyhTY3Jib29rKS5Xb3Jrc2hlZXRzKHNuYW1lKS5DZWxscyhyb3cyLCAiWiIpLlZhbHVlCiAgICAgICAgICAgIHNoMy5DZWxscyhyb3czLCAiSCIpLlZhbHVlID0gV29ya2Jvb2tzKFNjcmJvb2spLldvcmtzaGVldHMoc25hbWUpLkNlbGxzKHJvdzIsICJIIikuVmFsdWUKICAgICAgICAgICAgc2gzLkNlbGxzKHJvdzMsICJJIikuVmFsdWUgPSBXb3JrYm9va3MoU2NyYm9vaykuV29ya3NoZWV0cyhzbmFtZSkuQ2VsbHMocm93MiwgIkciKS5WYWx1ZQogICAgICAgICAgICBzaDMuQ2VsbHMocm93MywgIkoiKS5WYWx1ZSA9IFdvcmtib29rcyhTY3Jib29rKS5Xb3Jrc2hlZXRzKHNuYW1lKS5DZWxscyhyb3cyLCAiTCIpLlZhbHVlCiAgICAgICAgICAgIHNoMy5DZWxscyhyb3czLCAiSyIpLlZhbHVlID0gV29ya2Jvb2tzKFNjcmJvb2spLldvcmtzaGVldHMoc25hbWUpLkNlbGxzKHJvdzIsICJLIikuVmFsdWUKICAgICAgICAgICAgc2gzLkNlbGxzKHJvdzMsICJNIikuVmFsdWUgPSBXb3JrYm9va3MoU2NyYm9vaykuV29ya3NoZWV0cyhzbmFtZSkuQ2VsbHMocm93MiwgIkRRIikuVmFsdWUKICAgICAgICAgICAgc2gzLkNlbGxzKHJvdzMsICJPIikuVmFsdWUgPSBXb3JrYm9va3MoU2NyYm9vaykuV29ya3NoZWV0cyhzbmFtZSkuQ2VsbHMocm93MiwgIlQiKS5WYWx1ZQogICAgICAgICAgICBzaDMuQ2VsbHMocm93MywgIlAiKS5WYWx1ZSA9IFdvcmtib29rcyhTY3Jib29rKS5Xb3Jrc2hlZXRzKHNuYW1lKS5DZWxscyhyb3cyLCAiViIpLlZhbHVlCgogICAgICAgIEVsc2UKICAgICAgICAgICAgJ3NoMy5DZWxscyhyb3csICJFIikuVmFsdWUgPSAiIgogICAgICAgICAgICAnc2gzLkNlbGxzKHJvdywgIkciKS5WYWx1ZSA9ICIiCiAgICAgICAgICAgICdzaDMuQ2VsbHMocm93LCAiSCIpLlZhbHVlID0gIiIKICAgICAgICAgICAgJ3NoMy5DZWxscyhyb3csICJJIikuVmFsdWUgPSAiIgogICAgICAgICAgICAnc2gzLkNlbGxzKHJvdywgIkoiKS5WYWx1ZSA9ICIiCiAgICAgICAgICAgICdzaDMuQ2VsbHMocm93LCAiSyIpLlZhbHVlID0gIiIKICAgICAgICAgICAgJ3NoMy5DZWxscyhyb3csICJNIikuVmFsdWUgPSAiIgogICAgICAgICAgICAnc2gzLkNlbGxzKHJvdywgIk8iKS5WYWx1ZSA9ICIiCiAgICAgICAgICAgICdzaDMuQ2VsbHMocm93LCAiUCIpLlZhbHVlID0gIiIKCiAgICAgICAgRW5kIElmCiAgICBOZXh0CiAgICB0MyA9IFRpbWUKICAgIFdvcmtib29rcyhTY3Jib29rKS5DbG9zZQoKICAgIEFwcGxpY2F0aW9uLkNhbGN1bGF0aW9uID0geGxDYWxjdWxhdGlvbkF1dG9tYXRpYwogICAgQXBwbGljYXRpb24uU2NyZWVuVXBkYXRpbmcgPSBUcnVlCiAgICBEZWJ1Zy5QcmludCAi6Lui6KiYIgogICAgRGVidWcuUHJpbnQgIk9wZW4iLCA4NjQwMCAqICh0MSAtIHQwKQogICAgRGVidWcuUHJpbnQgIkdldElEcyIsIDg2NDAwICogKHQyIC0gdDEpCiAgICBEZWJ1Zy5QcmludCAiU2hlZXQxIiwgODY0MDAgKiAodDMgLSB0MikKICAgIE1zZ0JveCAoIuWujOS6hiIpCkVuZCBTdWIKClByaXZhdGUgU3ViIEdldGxEcyhCeVZhbCBzbmFtZSBBcyBTdHJpbmcsIEJ5UmVmIGRpY3QgQXMgT2JqZWN0KQoKICAgIERpbSBtYXhyb3cgQXMgTG9uZwogICAgRGltIHJvdyBBcyBMb25nCiAgICBEaW0ga2V5IEFzIFZhcmlhbnQKICAgIERpbSBzaDMgQXMgV29ya3NoZWV0CiAgICBTZXQgc2gzID0gV29ya3NoZWV0cyhzbmFtZSkKICAgIG1heHJvdyA9IHNoMy5DZWxscygoUm93cy5Db3VudCksICJBIikuRW5kKHhsVXApLnJvdyAgICAnSUQKICAgIEZvciByb3cgPSAyIFRvIG1heHJvdwogICAgICAgIGtleSA9IHNoMy5DZWxscyhyb3csICJBIikKICAgICAgICBkaWN0KGtleSkgPSBzbmFtZSAmICJ8IiAmIHJvdwogICAgTmV4dApFbmQgU3ViCg==