タイトル列を検索して指定した列を消す

タイトル列を検索して、指定したタイトルと一致した列は削除します。
カンマ区切りで複数タイトルを指定できます。

消すのと反対に、タイトル列を検索して指定した列を残す 処理もあります。

【例】
処理パラメータ

実行前の「工業データ」

実行後の「工業データ」

以下の関数を使用していますので、リンクから関数をコピーします。
ファイルの有無を確認する IsFileExists()
タイトル列の検索 TitlenameToColumn(), TitlenameToColumnStr()
列名と列番号の変換 ColumnIdxToStr()
最終列を取得(最右端から) GetLastColumn()
ナンバリングしたファイル名を作成する FilenameAddNumber()

Sub DelSpecifiedTitle(filename As String, title As Variant)
	Dim wb As Workbook
	Dim ws As Worksheet
	Dim last_column As Long
	Dim idx As Long
	Dim result As String
	Dim new_filename As String

	Dim ret_long As Long
	Dim ret_str As String

	' ファイルの確認
	If IsFileExists(filename) = True Then
		' ブックを開く
		Set wb = Workbooks.Open(filename)
		' シートを取得
		Set ws = wb.Sheets(1)

		For idx = LBound(title) To UBound(title)
			' タイトル名から列名を取得
			result = TitlenameToColumnStr(ws, CStr(title(idx)))

			If result <> "" Then
				ws.Columns(result).Delete
			End If
		Next idx

		' ファイルは上書きしないように、新しいファイルを作成        
		new_filename = FilenameAddNumber(filename)
		wb.SaveAs filename:=new_filename
		wb.Close
	Else
		MsgBox filename & "は存在しません", vbExclamation
	End If
End Sub

元ファイルが上書き保存されてしまうことを防止するため、新しいファイルを作成しています。
不要な場合は、保存の部分を以下のように修正してください。

		' ファイルは上書きしないように、新しいファイルを作成
		new_filename = FilenameAddNumber(filename)

		wb.SaveAs filename:=filename

コメント