• Source
    1. Option Explicit
    2.  
    3. Sub 別ブックのすべてのセルを取得2()
    4.  
    5. Dim startTime As Double
    6. Dim middleTime As Double
    7. Dim processTime As Double
    8.  
    9. startTime = Timer '開始時間取得
    10.  
    11. Application.ScreenUpdating = False '画面描画を停止
    12. Application.EnableEvents = False 'イベントを抑止
    13. Application.DisplayAlerts = False '確認メッセージを抑止
    14. Application.Calculation = xlCalculationManual '計算を手動に
    15.  
    16. Dim Excel As New Application
    17.  
    18. 'エクセルを不可視で開く
    19. Excel.Visible = False 'エクセル可視/不可視設定
    20. Excel.DisplayAlerts = False '警告メッセージをオフ
    21.  
    22. '------------------------------------------------------------------------ここまで
    23. '↑ここまでは上記サンプルコードと同一↑
    24. 'メイン処理0の時間をイミディエイトウィンドウに出力
    25. middleTime = Timer
    26. processTime = middleTime - startTime
    27. Debug.Print "メイン処理0の終了:"; processTime & "秒" & vbCrLf
    28. 'Call メイン処理0の終了
    29.  
    30. Dim ws As Worksheet
    31. Dim filename As String
    32. Dim mb As Workbook
    33.  
    34. '貼り付け先のブック
    35. filename = ThisWorkbook.path & "\" & "ワークシート.xlsm"
    36. Set mb = Workbooks.Open(filename)
    37.  
    38. '------------------------------------------------------------------------1ここから
    39. Dim FullPath1 As String, FullPath2 As String, FullPath3 As String, FullPath4 As String
    40. FullPath1 = "C:\Users\名前\Desktop\Excelフォルダ" & "\" & "配信スケジュール .xlsm" ' "救急患者集計.xlsm"
    41. FullPath2 = "C:\Users\名前\Desktop\Excelフォルダ" & "\" & "未納本文.xlsm" ' "救急患者集計.xlsm""未納整理簿.xlsm"
    42. FullPath3 = "C:\Users\名前\Desktop\Excelフォルダ" & "\" & "未納本文.xlsm" ' "救急患者集計.xlsm""未納整理簿.xlsm"
    43. FullPath4 = "C:\Users\名前\Desktop\Excelフォルダ" & "\" & "未納本文.xlsm" ' "救急患者集計.xlsm""未収金折衝状況表.xlsm"
    44.  
    45. FullPath1 = "D:\goo\excel\goo446\配信スケジュール.xlsm"
    46. FullPath2 = "D:\goo\excel\goo446\未納本文.xlsm"
    47. FullPath3 = "D:\goo\excel\goo446\未納本文.xlsm"
    48. FullPath4 = "D:\goo\excel\goo446\未納本文.xlsm"
    49.  
    50. Dim Fullpath As Variant
    51. Dim Frsheet As Variant
    52. Dim Tosheet As Variant
    53. Dim Title As Variant
    54. Dim i As Long
    55. Fullpath = Array(FullPath1, FullPath2, FullPath3, FullPath4)
    56. Frsheet = Array("sheet5", "未納本文", "全部1", "未納本文")
    57. Tosheet = Array("kyu", "nyu", "gai", "折衝取込")
    58. Title = Array("未納本文処理1の終了:", "全部1処理2の終了:", "未納本文処理3の終了:", "全部1をふくめた完了までの所要時間:")
    59. For i = 0 To 3
    60. Call copy_sheet(Excel, Fullpath(i), Frsheet(i), mb, Tosheet(i))
    61. middleTime = Timer
    62. processTime = middleTime - startTime
    63. Debug.Print Title(i); processTime & "秒" & vbCrLf
    64. Next
    65.  
    66. Application.Calculation = xlCalculationAutomatic '計算を自動に
    67. Application.DisplayAlerts = True '確認メッセージを開始
    68. Application.EnableEvents = True 'イベントを開始
    69. Application.ScreenUpdating = True
    70.  
    71.  
    72. Excel.DisplayAlerts = True '警告メッセージをオン
    73. Excel.Quit 'Excel終了
    74.  
    75. Set Excel = Nothing '参照を解放
    76. MsgBox "書き換えました"
    77. End Sub
    78.  
    79. Private Sub copy_sheet(ByRef Excel As Application, ByVal Fullpath As String, ByVal Frsheet As String, ByRef mb As Workbook, ByVal Tosheet As String)
    80. Dim Fwb As Workbook
    81. Dim SourceRng As Range
    82. Dim TargetRng As Range
    83. Set Fwb = Excel.Workbooks.Open(Fullpath, ReadOnly:=True) '読取り専用で開く
    84. Set SourceRng = Fwb.Worksheets(Frsheet).UsedRange
    85. mb.Worksheets(Tosheet).Cells.Clear
    86. Set TargetRng = mb.Worksheets(Tosheet).Range("A1")
    87.  
    88. SourceRng.Copy
    89. TargetRng.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats
    90. TargetRng.PasteSpecial Paste:=xlPasteColumnWidths
    91. Application.CutCopyMode = False
    92. Fwb.Close
    93. End Sub
    94.