質問編集履歴

1

コードは<Code>で表記、リンクもオブジェクトを使ってみやすく工夫した

2019/12/19 14:49

投稿

hSpringsteen
hSpringsteen

スコア7

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Powerpoint for Macで、Excelに表組に書かれた置換文字列対応表にしたがって、スライド内の文字列を一括検索・置換したい。マクロで実現できればと思っている
4
4
 
5
- 近いイメージ:rf)https://ppdtp.com/powerpoint/vba-bulk-find-replace-text/
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
-  Dim XL, XLBK As Object
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 XLBK = XL.Workbooks.Open(ThisWorkbook.Path & "/text置換.xlsx")
128
-
129
-
130
-
131
- rf)http://vba.best-answer.info/excel/014.html
132
-
133
- https://www.relief.jp/docs/vba-createobject-excel-sheet-returns-workbook.html
134
-
135
- https://garafu.blogspot.com/2018/09/vbscript-excel.html
136
-
137
- https://docs.microsoft.com/ja-jp/office/troubleshoot/office/getobject-createobject-behavior
138
-
139
- https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet
140
-
141
- https://www.vba-ie.net/function/getobject.php
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