|
こんにちは
コード記載のファイルと比較するファイルは同じフォルダにする事
コード記載のファイルにUserFom1を作りそこにコンボボックスを
ひとつ用意して下さい。(複数のシートを選択します。)
下記を標準モジュールに記載
Public Sh As String
Sub Test()
Dim MyFi As Variant, MyPh As String, i As Long
Dim Wb(1) As Workbook, Ch As Boolean, Ws As Worksheet
Dim C As Range, Ma As Variant, Ws1 As Worksheet, NowWb As Workbook
Dim Co As Long
Ch = True: Co = 1
MyPh = ThisWorkbook.Path & "\"
ChDir MyPh
MyFi = Application.GetOpenFilename("Excelファイル (*.xls),*.xls", , , , True)
If VarType(MyFi) = 11 Then Exit Sub
If UBound(MyFi) <> 2 Then Exit Sub
Application.ScreenUpdating = False
Set Wb(0) = Workbooks.Open(MyFi(1))
Set Wb(1) = Workbooks.Open(MyFi(2))
If Wb(0).Sheets.Count > 1 Then
Call Chekc(Wb(0))
ElseIf Wb(1).Sheets.Count > 1 Then
Call Chekc(Wb(1))
Ch = False
End If
Application.ScreenUpdating = True
UserForm1.Show
If Sh = "" Then GoTo End_Len
If Ch Then
Set Ws = Wb(0).Worksheets(Sh)
Set Ws1 = Wb(1).Worksheets(1)
Else
Set Ws = Wb(1).Worksheets(Sh)
Set Ws1 = Wb(0).Worksheets(1)
End If
Application.ScreenUpdating = False
Set NowWb = Workbooks.Add(1)
For Each C In Ws.Range("F1", Ws.Range("F65536").End(xlUp))
Ma = Application.Match(C.Value, Ws1.Columns(6), 0)
If Not IsError(Ma) Then
C.EntireRow.Copy NowWb.Worksheets(1).Cells(Co, 1)
Co = Co + 1
End If
Next C
Application.ScreenUpdating = True
End_Len:
Wb(0).Close False
Wb(1).Close False
Set Ws = Nothing: Set Ws1 = Nothing
Set Wb(0) = Nothing: Set Wb(1) = Nothing
Set NowWb = Nothing
End Sub
Private Sub Chekc(Wb1 As Workbook)
Dim ii As Long
For ii = 1 To Wb1.Sheets.Count
UserForm1.ComboBox1.AddItem Sheets(ii).Name
Next ii
End Sub
下記をUserForm1のモジュールに記載
Private Sub ComboBox1_Change()
If Me.ComboBox1.Value = "" Then
MsgBox "シート名を選択して下さい。"
Else
Sh = Me.ComboBox1.Value
Unload Me
End If
End Sub
流れ:Sub Test()を実行すると「ファイル開く」が出ますので、該当のファイルを2つ選択して「開く」を押す。
UserForm1が表示しますのでコンボボックスでシートを選択(複数あるシートを選択させます)
後は新しいファイルを作りコピーします。
ではお試しを
|
|