質問編集履歴
1
コードは<Code>で表記、リンクもオブジェクトを使ってみやすく工夫した
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Powerpoint for Macで、Excelに表組に書かれた置換文字列対応表にしたがって、スライド内の文字列を一括検索・置換したい。マクロで実現できればと思っている
|
4
4
|
|
5
|
-
近いイメージ:
|
5
|
+
近いイメージ:[リンク内容](https://ppdtp.com/powerpoint/vba-bulk-find-replace-text/)
|
6
6
|
|
7
7
|
|
8
8
|
|
@@ -18,11 +18,21 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
コンパイルエラー「ユーザー定義型は定義されていません」
|
21
|
+
①番号リストコンパイルエラー「ユーザー定義型は定義されていません」
|
22
|
+
|
22
|
-
|
23
|
+
参照設定したのにもかかわらず、Dim XL As New Excel.Application に対し
|
24
|
+
|
23
|
-
ActiveX コンポーネントはオブジェクトを作成できません。
429エラー
|
25
|
+
②ActiveX コンポーネントはオブジェクトを作成できません。
429エラー
|
26
|
+
|
24
|
-
|
27
|
+
```VBA
|
28
|
+
|
29
|
+
Set XL = GetObject(, "Excel.Aplication")
|
30
|
+
|
31
|
+
```
|
32
|
+
|
33
|
+
③実行時エラー '424'オブジェクトが必要です
|
34
|
+
|
25
|
-
など
|
35
|
+
など
|
26
36
|
|
27
37
|
|
28
38
|
|
@@ -30,10 +40,12 @@
|
|
30
40
|
|
31
41
|
|
32
42
|
|
33
|
-
言語:VBA
|
34
|
-
|
35
43
|
文字列置換の後半部分は省略し、エクセルを読み込む部分を主に以下転記しました。
|
36
44
|
|
45
|
+
|
46
|
+
|
47
|
+
```VBA
|
48
|
+
|
37
49
|
Sub Replacement() 'エクセル 表を用いて文字列置換
|
38
50
|
|
39
51
|
Dim befword As String '置換前の文字列
|
@@ -64,7 +76,7 @@
|
|
64
76
|
|
65
77
|
End Sub
|
66
78
|
|
67
|
-
|
79
|
+
```
|
68
80
|
|
69
81
|
### 試したこと
|
70
82
|
|
@@ -86,6 +98,8 @@
|
|
86
98
|
|
87
99
|
|
88
100
|
|
101
|
+
```VBA
|
102
|
+
|
89
103
|
Dim XL As Object
|
90
104
|
|
91
105
|
Set XL = CreateObject("Excel.Application")
|
@@ -94,7 +108,13 @@
|
|
94
108
|
|
95
109
|
Set XLBK = CreateObject("Excel.Sheet")
|
96
110
|
|
97
|
-
あるいはCreateObject("Excel.Work")
|
111
|
+
'あるいはCreateObject("Excel.Workbook")
|
112
|
+
|
113
|
+
```
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
Rf)[リンク内容](https://www.relief.jp/docs/excel-vba-using-word-const.html)
|
98
118
|
|
99
119
|
|
100
120
|
|
@@ -104,61 +124,117 @@
|
|
104
124
|
|
105
125
|
|
106
126
|
|
127
|
+
■
|
128
|
+
|
107
|
-
|
129
|
+
Dim XL, XLBK As Object
|
108
130
|
|
109
131
|
→ Dim XL, XLBK
|
110
132
|
|
111
|
-
→Dim XL As Excel.Aplication
|
133
|
+
→Dim XL As Excel.Aplication
|
112
134
|
|
113
135
|
→Dim XL As Variant
|
114
136
|
|
115
|
-
|
137
|
+
→Dim XL As New Excel.Application
|
138
|
+
|
116
|
-
|
139
|
+
→Dim XL As Excel.Application、 Set XL As New Excel.Application
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
■Dim XLBK As Object
|
148
|
+
|
149
|
+
→ Dim XLBK As Excel.Workbook
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
|
117
|
-
Set XL = GetObject(ThisWorkbook.Path & "/text置換.xlsx").Application 'Excelは起動した上で走らせている
|
155
|
+
■Set XL = GetObject(ThisWorkbook.Path & "/text置換.xlsx").Application 'Excelは起動した上で走らせている
|
118
156
|
|
119
157
|
→Set XL = CreationObject(ThisWorkbook.Path & "/text置換.xlsx").Application
|
120
158
|
|
121
|
-
→
Set XL = GetObject(/Applications/Microsoft Excel.app/Contents/SharedSupport/Type Libraries/Microsoft Excel.tlb)
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
Set XL
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
http
|
136
|
-
|
137
|
-
https://
|
138
|
-
|
139
|
-
https://
|
140
|
-
|
141
|
-
https://
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
159
|
+
→
Set XL = GetObject("/Applications/Microsoft Excel.app/Contents/SharedSupport/Type Libraries/Microsoft Excel.tlb") 'オブジェクトライブラリーを直接読み込もうとしている
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
■Set XL = GetObject(ThisWorkbook.Path & "/text置換.xlsx").Application
|
166
|
+
|
167
|
+
→Set XLBK = XL.Workbooks.Open(ThisWorkbook.Path & "/text置換.xlsx")
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
rf)[リンク内容](http://vba.best-answer.info/excel/014.html)
|
174
|
+
|
175
|
+
[リンク内容](https://www.relief.jp/docs/vba-createobject-excel-sheet-returns-workbook.html)
|
176
|
+
|
177
|
+
[リンク内容](https://garafu.blogspot.com/2018/09/vbscript-excel.html)
|
178
|
+
|
179
|
+
[リンク内容](https://docs.microsoft.com/ja-jp/office/troubleshoot/office/getobject-createobject-behavior)
|
180
|
+
|
181
|
+
[リンク内容](https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet)
|
182
|
+
|
183
|
+
[リンク内容](https://www.vba-ie.net/function/getobject.php)
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
⑤参照設定が不要の可能性があるとのことで、ExecuteExcel4Macroを使用してみるがうまく読み込まない
|
192
|
+
|
193
|
+
そもそも処理が遅いようなので期待できない
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
```VBA
|
198
|
+
|
199
|
+
befword = ExecuteExcel4Macro("ThisWorkbook.Path & "/" & [text置換.xlsx]Sheet1'!R1C1")
|
200
|
+
|
201
|
+
```
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
Rf)[リンク内容](http://officetanaka.net/excel/vba/tips/tips28.htm)
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
⑥エクセルを開くまで最も進行したのが、
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
```VBA
|
216
|
+
|
217
|
+
Dim XL As Object
|
218
|
+
|
219
|
+
Set XL = CreateObject("Excel.Application")'⇦ここでエクセルを開くことはできる
|
220
|
+
|
221
|
+
Dim XLBK As Object
|
222
|
+
|
223
|
+
Set XLBK = CreateObject("Excel.Sheet")'⇦ここでPowerpointもExcelもフリーズし強制終了してしまいますが、、
|
224
|
+
|
225
|
+
'エクセルの反応はするので、何らかのリンクはできているはずなのですが。。
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
'エクセルを開いた上でSet XL = GetObject("Excel.Application")にするとすぐにフリーズします
|
230
|
+
|
231
|
+
```
|
232
|
+
|
233
|
+
|
158
234
|
|
159
235
|
### 補足情報(FW/ツールのバージョンなど)
|
160
236
|
|
161
|
-
|
237
|
+
|
162
238
|
|
163
239
|
Macbook Air:Mac OS Mojave , 1.6GHz Intel Core i5, memory 16GB
|
164
240
|
|