C01.公報データのコピー
処理すべき公報データをそのまま修正すると条件を変えて処理するときに毎回公報データをコピーする必要があり、面倒である。
また、処理項目以外を除いて処理したいこともある。
そこで、元の公報データをコピーし、このコピーした公報データを処理するようにしている。
マクロは以下のとおり。
Sub 対象公報コピー()
'
'対象公報をコピーし、公報番号以外のノイズ行を削除する
'
'変数を宣言
Dim dKOHO As Variant
Dim SHEETNAME01 As String, SHEETNAME02 As String
Dim NY1 As Long, NX1 As Integer, NY2 As Long, NX2 As Integer
Dim y As Long, k As Integer, flg As Integer
'シート名称設定
SHEETNAME01 = "対象公報"
SHEETNAME02 = "公報コピー"
'
'クリア
Worksheets(SHEETNAME02).Activate
Cells.Select
Selection.Delete Shift:=xlUp
'
'================
'対象公報をコピーする
'================
'処理範囲の行列数を取得
Sheets(SHEETNAME01).Select
Cells(1, 1).Select
ActiveCell.CurrentRegion.Select
NY1 = Selection.Rows.Count
NX1 = Selection.Columns.Count
'コピー
Range(Cells(1, 1), Cells(NY1, NX1)).Copy
Sheets(SHEETNAME02).Select
Cells(1, 1).Select
ActiveSheet.Paste
'
'========================
'公報番号以外のデータがあれば削除する
'========================
'公報種別名を配列に読込む
dKOHO = Array("WO", "特開", "特表", "実開", "実登", "特許", "特公", "実公")
'MsgBoxd dKOHO(7)
'処理範囲の行列数を取得
Sheets(SHEETNAME02).Select
Cells(1, 1).Select
ActiveCell.CurrentRegion.Select
NY2 = Selection.Rows.Count
NX2 = Selection.Columns.Count
'公報番号以外をクリア
For y = 2 To NY2
flg = 0
For k = 0 To 7
If Left(Cells(y, 1), 2) = dKOHO(k) Then flg = 1
Next k
If Len(Cells(y, 1)) > 13 Then flg = 0
If flg = 0 Then Rows(y).Clear
Next y
'公報番号でソート
Range(Cells(1, 1), Cells(NY2, NX2)).Sort Key1:=Cells(1, 1), Order1:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
'
'データがなければ終了する
'処理範囲の行列数を取得
Sheets(SHEETNAME02).Select
Cells(1, 1).Select
ActiveCell.CurrentRegion.Select
NY2 = Selection.Rows.Count
NX2 = Selection.Columns.Count
If NY2 = 1 Then
MsgBox "データがありません。対象公報の有無、処理コード指定表の設定(全コードが設定されてるいるかなど)を確認してください。"
End
End If
'
'==============
Cells(1, 1).Select
'MsgBox "終了しました"
'
End Sub