c:\test\のフォルダーの中にデータCSVファイルが複数あります
データはA列の1行目からです
aaa@ezweb.ne.jp
bbb@docomo.ne.jp
ccc@yahoo.co.jp
c:\test\のフォルダー以外の参照ファイルのsheet2のA列1行目から
ezweb.ne.jp
docomo.ne.jp
のドメイン文字が複数あります
参照ファイルのsheet2にあるドメインと同じドメインがあれば
c:\test\フォルダーにあるファイルのデータの同じ行のC列に参照のドメイン文字だけを
表示させるマクロをお願いします
答え
A列 C列
aaa@ezweb.ne.jp ezweb.ne.jp
bbb@docomo.ne.jp docomo.ne.jp
ccc@yahoo.co.jp
bbb@docomo.ne.jp docomo.ne.jp
上書き保存します。
保存しないなら.Close SaveChanges:=Trueをコメントアウトしてください。
エクセルブックで保存するならすべてのコメントアウトを戻してください。
式のまま保存するなら'.Value = .Valueだけをコメントアウトしてください。
Sub Macro1() Const refer = "C:\参照ファイル.xlsx" Const path = "C:\temp" Const fileExp = ".csv" 'Const saveExp = ".xlsx" 'Const saveType = xlExcel8 Dim ref_wb, f, i Set ref_wb = Workbooks.Open(refer) For Each f In CreateObject("Scripting.FileSystemObject").GetFolder(path).Files If (Right(f.Name, Len(fileExp)) = fileExp) Then With Workbooks.Open(f.path) .Activate For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row With Cells(i, "C") .Formula = "=IF(ISERROR(VLOOKUP(RIGHT(A" & i & ",LEN(A" & i & ")-FIND(""@"",A" & i & ")),'[" & ref_wb.Name & "]sheet2'!$A:$A,1,FALSE)),"""",RIGHT(A" & i & ",LEN(A" & i & ")-FIND(""@"",A" & i & ")))" '.Value = .Value End With Next i '.SaveAs Filename:=Left(f.Name, Len(f.Name) - Len(fileExp)) & saveExp, FileFormat:=saveType .Close SaveChanges:=True End With End If Next ref_wb.Close End Sub
[追記]変数名とパス名をすこし変更しました。
ありがとうございます
1度上手くいったんですが
2度目からマクロ実行すると「ファイルが開いています」のメッセージがでて
その先に進まないです。