
はじめまして、トフィーです。
色々と皆様の置換方法や、パワーポイントの操作、エクセルの操作を参考にしてパワーポイントの一括置換プログラムを作成しようとしていますが、
下記のコードですと、一括置換が出来ますが10単語を一括置換するだけで約10分掛かります。
何か、もっと早く置換が出来るプログラミングは出来ないのでしょうか?
(エクセルのマクロから書きました。)
宜しくお願い致します。
Private Sub run_click()
translate '下記のコードから置換
End Sub
Private Sub translate()
c = 0
myFLD = loc.Text
' 複数のパワーポイントを同じフォルダーで探し、一つずつ開きます
Set myApp = CreateObject("PowerPoint.Application")
myApp.Visible = True
With myApp.FileSearch
.LookIn = myFLD
.FileName = "*.ppt"
If .Execute > 0 Then
For Each myF In .FoundFiles
With myApp.Presentations.Open(myF)
'エクセルから単語読み込み 列1の単語を列2の単語で置換
On Error Resume Next
For c = 0 To 10
myWD1 = Range("B" & c + 3)
myWD2 = Range("C" & c + 3)
'置換開始
For Each myS In myApp.ActivePresentation.Slides
For Each mySP In myS.Shapes
mySP.TextFrame.TextRange _
= Replace(mySP.TextFrame.TextRange, myWD1, myWD2)
Next
Next
Next c
.Save
.Close
'パワーポイントを閉じる
End With
Next
End If
End With
myApp.Quit
Set myApp = Nothing
MsgBox "END"
End Sub

A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
時間がかかるのは同じかとは思いますが、こんな方法も。
Dim myArr As Variant
Sub Chikann()
Dim myApp As Object 'PowerPoint.Application
Dim myS As Object 'PowerPoint.Slide
Dim mySP As Object 'PowerPoint.Shape
Dim i As Long
myFLD = Loc.Text
'検索パターンB列,C列から配列に代入
myArr = Range("B3:C13")
Set myApp = CreateObject("PowerPoint.Application")
myApp.Visible = True
With myApp.FileSearch
.LookIn = myFLD
.Filename = "*.ppt"
.Execute
For i = 1 To .FoundFiles.Count
With myApp.Presentations.Open(.FoundFiles(i))
For Each myS In .Slides
For Each mySP In myS.Shapes
With mySP
If .HasTextFrame Then
If .TextFrame.TextRange.Text <> "" Then
Hennkann .TextFrame.TextRange
End If
End If
End With
Next
Next
.Save
.Close
End With
Next i
End With
myApp.Quit
Set myApp = Nothing
MsgBox "END"
End Sub
Sub Hennkann(txtRng As Object) 'PowerPoint.TextRange
Dim allRng As Object 'PowerPoint.TextRange
Dim tmpRng As Object 'PowerPoint.TextRange
Dim i As Long
'渡されたTextRangeの中から検索置換
For i = 1 To UBound(myArr, 1)
Set allRng = txtRng
Set tmpRng = allRng.Replace(FindWhat:=myArr(i, 1), _
Replacewhat:=myArr(i, 2), WholeWords:=True)
Do While Not tmpRng Is Nothing
Set allRng = allRng.Characters(tmpRng.Start + tmpRng.Length, _
allRng.Length)
Set tmpRng = allRng.Replace(FindWhat:=myArr(i, 1), _
Replacewhat:=myArr(i, 2), WholeWords:=True)
Loop
Next i
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
位置指定の文字マッチングと同...
-
VBA 置換文字がみつからない時
-
vbs 連続した8タブを空白に変換...
-
正規表現で、特定の文字列を含...
-
C言語でテキストファイルの内容...
-
Eclipse 改行後のタブ
-
フォントの色を保持したままセ...
-
ダブルクォーテーション置換時...
-
複数行に渡る文字列の置換
-
正規表現 特定の文字列を含む行...
-
textファイルにある文字列の置...
-
Excel VBA 教えてください。 VB...
-
コマンドラインスイッチ -pe 's...
-
ダブルコーテーション 、"を二...
-
Excel VBA リストに一致したデ...
-
秀丸で繰り返す文字の行を削除...
-
\\(円)記号を置換したい
-
Excel・ユーザーフォームの情報...
-
word VBA 改ページの繰り返しに...
-
UTF-8のTextファイルの置換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 置換文字がみつからない時
-
正規表現で、特定の文字列を含...
-
csvデータ ダブルクォーテ...
-
各項目がダブルクォーテーショ...
-
Excel VBA リストに一致したデ...
-
スペースで区切られた氏名から...
-
秀丸エディタで、「-」や「ー」...
-
EXCELマクロを用いてグラフの系...
-
csvデータのダブルクォーテーシ...
-
C#で空白行を削除する方法
-
EXCEL警告「置換対象のデータが...
-
xmlファイル内の文字列置換
-
正規表現 特定の文字列を含む行...
-
テキストボックスの文字列を置...
-
○文字目に文字挿入
-
C言語でテキストファイルの内容...
-
複数のパワーポイントファイル...
-
c# ビルド直前にコードを置換で...
-
Excel・ユーザーフォームの情報...
-
\\(円)記号を置換したい
おすすめ情報