パワーポイントのたくさんの単語の文字の置き換えをしたく、自動のマクロ機能で記録したのですが、何度やってもVBAになりません。
どうやったらいいのでしょうか?
同じ用途のマクロをエクセルで作ったのですが、こちらをうまく利用できますか?
業務でいろいろな資料を翻訳ソフトを使って、他国語に翻訳しています。
すべてがうまく翻訳されるわけではなく、辞書登録してもいくつかの単語は毎回同じ言葉に訳されてしまうので、現在は、手作業で置き換え作業しています。
工数がかかってしまうので、マクロ機能で一括置き換えがしたいのです。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
そこからですか。
では、もう一度修正コードを全部。●Excelのワークシートに 置換前 置換後 を下のように並べておいて
A B
1 原油 石油
2 空白 白
3 生命 生活
●ExcelでAlt+F11→挿入→標準モジュールに以下を貼り付け
Dim myArr As Variant
Dim VBReg As Object
Dim Matches As Object
Sub Chikann2()
Dim cntRow As Long
Dim myRng As Range
Dim objPPT As Object 'PowerPoint.Application
Dim myPre As Object 'PowerPoint.Presentation
Dim Sld As Object 'PowerPoint.Slide
Dim Shp As Object 'PowerPoint.Shape
Dim myRow As Object 'PowerPoint.Row
Dim myCell As Object 'PowerPoint.Cell
Dim iShp As Object 'PowerPoint.Shape
'A,B列の置換パターン配列に
cntRow = Range("A" & Rows.Count).End(xlUp).Row
Set myRng = Range("A1:B" & cntRow)
myArr = myRng.Value
'パワポ起動
On Error GoTo Mikidou
Set objPPT = GetObject(, "PowerPoint.Application")
With objPPT
.Activate
Set myPre = .ActivePresentation
End With
On Error GoTo 0
Set VBReg = CreateObject("VBScript.RegExp")
'図形ループ
For Each Sld In myPre.Slides
For Each Shp In Sld.Shapes
With Shp
' 普通のオブジェクトの場合
If .HasTextFrame Then
Hennkann .TextFrame.TextRange
' 表の場合
ElseIf .HasTable Then
For Each myRow In .Table.Rows
For Each myCell In myRow.Cells
Hennkann myCell.Shape.TextFrame.TextRange
Next
Next
' グループオブジェクトの場合
ElseIf .Type = msoGroup Then
For Each iShp In .GroupItems
With iShp
If .HasTextFrame Then
Hennkann .TextFrame.TextRange
End If
End With
Next
End If
End With
Next
Next
Set iShp = Nothing
Set myCell = Nothing
Set myRow = Nothing
Set Shp = Nothing
Set Sld = Nothing
Set myPre = Nothing
Set objPPT = Nothing
Set Matches = Nothing
Set VBReg = Nothing
Exit Sub
Mikidou: MsgBox "パワポファイル開いといて"
End Sub
Sub Hennkann(txtRng As Object) 'PowerPoint.TextRange
Dim i As Long
Dim m As Integer
Dim j As Integer
Dim txtRng2 As Object 'PowerPoint.TextRange
If txtRng.Text <> "" Then
'渡されたTextRangeの中から検索置換
For i = 1 To UBound(myArr, 1)
If Len(myArr(i, 1)) > 0 Then
With VBReg
.Pattern = myArr(i, 1)
.IgnoreCase = False
.Global = True
If .test(txtRng.Text) Then
For m = 1 To txtRng.Paragraphs.Count
Set txtRng2 = txtRng.Paragraphs(m)
If .test(txtRng2.Text) Then
Set Matches = .Execute(txtRng2.Text)
For j = Matches.Count - 1 To 0 Step -1
With Matches(j)
With txtRng2.Characters(.FirstIndex + 1, .Length)
.Text = VBReg.Replace(.Text, myArr(i, 2))
End With
End With
Next j
End If
Next m
End If
End With
End If
Next i
End If
End Sub
すみません、そんなレベルなんです…。
回答本当にありがとうございました!
貼り付けてみたらできて、涙ものの大感動でしたっ!!
エクセルの置き換えマクロも手入力の置き換えを
自動で記録したレベルなんです。
まだまだ、お聞きしたいことがあるのですが、よかったら回答をお願いできないでしょうか?
AとB行に置き換えたい文字を入れたデータファイルは作りました。
しかし、そのファイルには3枚シートがあり、そのうちの1枚が文字データ表になります。
そのシートを指定することはできますでしょうか?
また、同シートを使って、エクセルで他のエクセルファイル内を
一括で置き換えるVBAもあるのでしょうか?
さらに、同様にそのエクセル置き換えデータを使用した
ワードのファイルも一括で置き換えはできるのでしょうか?
現在、ワードも手入力で置き換えしたものを自動で記録したマクロを使用しています。
たくさんの質問で申し訳ありません。
ぜひともよろしくお願いします。
No.4
- 回答日時:
●シートを指定するのは簡単です。
例えばシート名を指定する場合、以下のように変更します。
[変更前]
cntRow = Range("A" & Rows.Count).End(xlUp).Row
Set myRng = Range("A1:B" & cntRow)
↓
[変更後]
With Worksheets("Sheet1") 'シート名がSheet1の場合
cntRow = .Range("A" & Rows.Count).End(xlUp).Row
Set myRng = .Range("A1:B" & cntRow)
End With
●Excelの置換のコードは、各文字のフォントを気にする必要が
ないので相当短くなります。
このサイトで別スレを立ててください。その場合は
必ず具体的に質問してください。
●Wordの置換のコードの研究は、このサイトではないほうが
いいような気がします。
ここのシステムはどうもコードを連続してアップしたりするのが
面倒なんです。
再回答いただきありがとうございます!
早速明日やってみます。
エクセルやワードの件もありがとうございます。
コードを教えてくれるようなサイトもあるのですね。
知りませんでした!
No.2
- 回答日時:
Sub Hennkannの中の1行を訂正します。
参照設定不要にしたつもりだったのに..
誤
Dim txtRng2 As TextRange
↓
正
Dim txtRng2 As Object 'PowerPoint.TextRange
でお願いします。
No.1
- 回答日時:
Excel VBAから、現在開いているPowerPointファイルの置換を行う例です。
●ExcelのA列に置換前、B列に置換後
[正規表現を使っていますので、正規表現のワイルドカードも
使用可能です。検索で調べてください。]
A B
1 原油 石油
2 空白 白
3 生命 生活
●Excel VBAで
Dim myArr As Variant
Dim VBReg As Object
Dim Matches As Object
Sub Chikann2()
Dim cntRow As Long
Dim myRng As Range
Dim objPPT As Object 'PowerPoint.Application
Dim myPre As Object 'PowerPoint.Presentation
Dim Sld As Object 'PowerPoint.Slide
Dim Shp As Object 'PowerPoint.Shape
Dim myRow As Object 'PowerPoint.Row
Dim myCell As Object 'PowerPoint.Cell
Dim iShp As Object 'PowerPoint.Shape
'A,B列の置換パターン配列に
cntRow = Range("A" & Rows.Count).End(xlUp).Row
Set myRng = Range("A1:B" & cntRow)
myArr = myRng.Value
'パワポ起動
On Error GoTo Mikidou
Set objPPT = GetObject(, "PowerPoint.Application")
With objPPT
.Activate
Set myPre = .ActivePresentation
End With
On Error GoTo 0
Set VBReg = CreateObject("VBScript.RegExp")
'図形ループ
For Each Sld In myPre.Slides
For Each Shp In Sld.Shapes
With Shp
' 普通のオブジェクトの場合
If .HasTextFrame Then
Hennkann .TextFrame.TextRange
' 表の場合
ElseIf .HasTable Then
For Each myRow In .Table.Rows
For Each myCell In myRow.Cells
Hennkann myCell.Shape.TextFrame.TextRange
Next
Next
' グループオブジェクトの場合
ElseIf .Type = msoGroup Then
For Each iShp In .GroupItems
With iShp
If .HasTextFrame Then
Hennkann .TextFrame.TextRange
End If
End With
Next
End If
End With
Next
Next
Set iShp = Nothing
Set myCell = Nothing
Set myRow = Nothing
Set Shp = Nothing
Set Sld = Nothing
Set myPre = Nothing
Set objPPT = Nothing
Set Matches = Nothing
Set VBReg = Nothing
Exit Sub
Mikidou: MsgBox "パワポファイル開いといて"
End Sub
Sub Hennkann(txtRng As Object) 'PowerPoint.TextRange
Dim i As Long
Dim m As Integer
Dim j As Integer
Dim txtRng2 As TextRange
If txtRng.Text <> "" Then
'渡されたTextRangeの中から検索置換
For i = 1 To UBound(myArr, 1)
If Len(myArr(i, 1)) > 0 Then
With VBReg
.Pattern = myArr(i, 1)
.IgnoreCase = False
.Global = True
If .test(txtRng.Text) Then
For m = 1 To txtRng.Paragraphs.Count
Set txtRng2 = txtRng.Paragraphs(m)
If .test(txtRng2.Text) Then
Set Matches = .Execute(txtRng2.Text)
For j = Matches.Count - 1 To 0 Step -1
With Matches(j)
With txtRng2.Characters(.FirstIndex + 1, _
.Length)
.Text = myArr(i, 2)
End With
End With
Next j
End If
Next m
End If
End With
End If
Next i
End If
End Sub
回答ありがとうございます。
早速、試してみます。
この言語を、日本語部分も含めて、全部貼り付けたらマクロが動くということでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- 英語 会社で英語を使うことになっての英語の勉強方法 5 2022/07/03 11:49
- Excel(エクセル) Excelで校閲をする方法はあるでしょうか(取扱説明書への掲載禁止用語の確認) 3 2022/06/11 22:51
- 英語 「羊たちの沈黙」を原書で読んだ方、もしくは英語に堪能な方に質問します 3 2022/06/02 00:04
- Excel(エクセル) ランダムで四択の問題を作る場合にvbaで何を学べばいいでしょうか。 1 2022/04/14 16:45
- 文学・小説 「羊たちの沈黙」を読んだことがある方に質問です 6 2022/06/02 00:10
- フリーソフト 文章の単語を一括で置換する方法やツール 3 2022/07/28 06:58
- Excel(エクセル) 記録マクロのみでできますか? 7 2022/08/07 20:38
- Excel(エクセル) 現在のセルの文字列を右隣のセルの名前にするマクロをつくりたい 4 2023/01/12 09:01
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
パワーポイントのVBAでテキストボックスに値を変更させたいです
Visual Basic(VBA)
-
パワーポイントの一括置換:複数の単語をエクセルリストから読み込む
Visual Basic(VBA)
-
複数のパワーポイントファイルに対して指定した文字を置換する方法
Visual Basic(VBA)
-
-
4
VBAでエクセルに入力された複数のセルの文字列をパワポに一つずつ文字の置き換えを行いたいです。 ネッ
Visual Basic(VBA)
-
5
【VB.NET】 パワポ操作を非表示で
Visual Basic(VBA)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
VBAで既存のパワポのファイルを開くには?
Access(アクセス)
-
8
パワーポイントでスライドごとに別々のファイルで保存
PowerPoint(パワーポイント)
-
9
ExcelVBAにて既に開かれているPowerpointをアクティブにするには?
Excel(エクセル)
-
10
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
11
PowerPointVBAでスライドマスター上での編集
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Wordチェックボックス作り方(...
-
カンマ区切り形式ではなく、セ...
-
TeraPadに一括置換のプラグイン...
-
word 編集の制限 保護されたま...
-
エクセルでアルファベット5段階...
-
エクセルで置換リストを別ブッ...
-
Ctrl+Hで置換にならない
-
アクセスの一部データ置換の方法
-
ExcelのROUND関数を一括解除し...
-
Wordで一括して改ページする方法
-
お問い合わせのメールアドレス...
-
エクセルVBAでマルチページの切...
-
キングファイルの背表紙を作成...
-
VBAでマルチページのページ指定...
-
パワーポイントで参照ページを...
-
<IFRAME>でコンテンツ部分のみ...
-
室内用で日本製のお勧めのAVセ...
-
とんかつ屋のゴマすりとソース
-
UserForm.showでマルチページ1...
-
自分のHPのウイルスチェック方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切り形式ではなく、セ...
-
文字を一括で置換するソフト・...
-
txtファイル内の指定の単語の数...
-
エクセルで置換リストを別ブッ...
-
エクセルでアルファベット5段階...
-
Wordチェックボックス作り方(...
-
ExcelのROUND関数を一括解除し...
-
秀丸エディタ タブをカンマに...
-
Ctrl+Hで置換にならない
-
WORDで一括置換
-
エクセル 置換中の値の更新
-
置換(検索場所に「ブック」を...
-
入力済みの文字中にある句読点...
-
Wordで一括して改ページする方法
-
マクロで文字列をブック全体に...
-
エクセルで例えば、関数を使っ...
-
パワーポイントの置き換えマクロ
-
大学数学の代数の問題です。 ・...
-
正規表現の置換で一部の文字列...
-
HTMLタグを一括消去する方法
おすすめ情報