人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

質問です
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


●質問者: inosisi
●カテゴリ:コンピュータ インターネット
✍キーワード:AAA CCC co.jp CSV DoCoMo
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● TransFreeBSD
●100ポイント ベストアンサー

上書き保存します。

保存しないなら.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度目からマクロ実行すると「ファイルが開いています」のメッセージがでて

その先に進まないです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ