回答編集履歴

4

追記

2017/10/05 08:33

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -15,3 +15,59 @@
15
15
  ```
16
16
 
17
17
  因みに、「名前」はBook単位なので、```Sheets("Sheet1").Select```は不要ですね。
18
+
19
+
20
+
21
+ 追記
22
+
23
+ ---
24
+
25
+ 参考までに、Namesコレクションのようなコレクションの操作にはFor Eachを使用すると簡潔な記述になります。
26
+
27
+ ```VBA
28
+
29
+ Sub macro1()
30
+
31
+ Dim myPath As String
32
+
33
+ Dim myFile As String
34
+
35
+ Dim nm As Name
36
+
37
+
38
+
39
+ myPath = ThisWorkbook.Path & "\"
40
+
41
+ '指定フォルダのブックを順繰り拾う
42
+
43
+ myFile = Dir(myPath & "*.xlsx")
44
+
45
+ Do Until myFile = ""
46
+
47
+ 'ブックを開いて処理を行い保存して閉じる
48
+
49
+ Workbooks.Open myPath & myFile
50
+
51
+ For Each nm In ActiveWorkbook.Names
52
+
53
+ Select Case nm.Name
54
+
55
+ Case "該当するワード1", "該当するワード2"
56
+
57
+ nm.Delete
58
+
59
+ End Select
60
+
61
+ Next
62
+
63
+ ActiveWorkbook.Close savechanges:=True
64
+
65
+ myFile = Dir()
66
+
67
+ Loop
68
+
69
+ End Sub
70
+
71
+ ```
72
+
73
+ 「名前」の定義を全て削除したいなら、Select Case~による判定は不要ですし、削除したくないものを限定したいなら、CASE で削除したくないものを指定してelseで削除を行えば記述が少なくて済みます。

3

修正

2017/10/05 08:33

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -1,4 +1,4 @@
1
- Dir()への引数のパスが正しくありません。
1
+ パスとファイルの区切りに"\"がありません。(Dir()への引数のパスなど)
2
2
 
3
3
  以下のように変更してみて下さい。
4
4
 

2

修正

2017/10/05 08:06

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -6,6 +6,12 @@
6
6
 
7
7
  myFile = Dir(myPath & "\" & "*.xlsx")
8
8
 
9
+ Do Until myFile = ""
10
+
11
+ 'ブックを開いて処理を行い保存して閉じる
12
+
13
+ Workbooks.Open myPath & "\" & myFile
14
+
9
15
  ```
10
16
 
11
17
  因みに、「名前」はBook単位なので、```Sheets("Sheet1").Select```は不要ですね。

1

修正

2017/10/05 07:51

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ```VBA
6
6
 
7
- myFile = Dir(myPath & "\" & "*.xls*")
7
+ myFile = Dir(myPath & "\" & "*.xlsx")
8
8
 
9
9
  ```
10
10