| 
    
     |  | 以下のマクロで動かしています。 素人記述です。
 なんとか、無駄を省いたスマートな記述にできればと思います。
 【43794】で書いてくださったソースに
 うまくきれいにはめてすっきりさせていただけないでしょうか?
 それを元に勉強したいと思います。
 
 
 1.マクロ11
 
 Sub test1()
 Set WS1 = Worksheets("元")
 Set WS2 = Worksheets("OK")
 Set WS3 = Worksheets("OK2")
 Dim Rtn As Integer
 
 
 Workbooks.Open Filename:="甲.xls"
 
 With Worksheets("甲").Range("A1") '★ここのWithを整理したい。
 .Range("A1:B4").Copy Destination:=WS2.Range("A1")
 .Range("A1:B4").Copy Destination:=WS3.Range("A1")
 End With
 
 With Worksheets("joblog").Range("G6")
 .AutoFilter Field:=7, Criteria1:="ftime"
 .CurrentRegion.SpecialCells(xlVisible).Copy WS2.Range("A6")
 
 .AutoFilter Field:=7, Criteria1:="ntime"
 .CurrentRegion.SpecialCells(xlVisible).Copy WS3.Range("A6")
 
 .AutoFilter Field:=7, Criteria1:="<>ftime", Operator:=xlAnd, _
 Criteria2:="<>ntime"
 .CurrentRegion.SpecialCells(xlVisible).Copy WS1.Range("A1")
 
 .AutoFilter
 End With
 Workbooks("甲.xls").Close
 
 ’★ここで、「甲.xlsは変更されています。保存しますか?」のMsgボックスが出てくるが、自動的にNo(保存しない)を選択して閉じたい
 
 WS1.Activate
 End Sub
 
 
 2.マクロ12(1-2-1と1-2-2をくっつけました)
 Sub FromTo作成()
 Set WS1 = Worksheets("元")
 Set WS4 = Worksheets("抽出")
 Set WS4 = Worksheets("エラー")
 
 Dim FT As String
 
 With WS1.Range("A1")
 FT = (WS1.Range("N2").Value = WS1.Range("P2").Value)
 
 If FT = "False" Then
 .Range("N1:N65536").Copy Destination:=WS2.Range("A1")
 .Range("P1:P65536").Copy Destination:=WS2.Range("B1")
 .Range("D1:D65536").Copy Destination:=WS2.Range("F1")
 .Range("X1:X65536").Copy Destination:=WS2.Range("G1")
 
 Else
 .Range("N1:N65536").Copy Destination:=WS2.Range("A1")
 .Range("O1:O65536").Copy Destination:=WS2.Range("B1")
 .Range("Q1:Q65536").Copy Destination:=WS2.Range("C1")
 .Range("D1:D65536").Copy Destination:=WS2.Range("F1")
 .Range("X1:X65536").Copy Destination:=WS2.Range("G1")
 End If
 End With
 
 WS4.Activate
 
 End Sub
 
 |  |