質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.42%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

1922閲覧

C#でPowerPoint内の文字を書き換えたい

mooz999

総合スコア18

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/07/16 12:14

C#を使用して、PowerPoint内の文字の書き換えをしたいのですが、ネットで探しても良い情報が無く困っております。

外部ライブラリは使用せず、Microsoft.Office.Interop.PowerPointを使用して書き換えを実施しようと考えているのですが、経験のある方いらっしゃるでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

実は外部ライブラリーを使用するのも良くない訳ではありません、ツールの選択は一番ですから、例えば私の愛用のSpire.Presentation for .NETは、スライドに対して一般的な操作は基本的に何でもできます。そんなにこだわりのないなら無料版もいい選択です。これをダウンロードして参照に追加すれば、文字列の書き換えなどは簡単にできるはずです。そして書き換えに必要とするコードは紹介します。

using Spire.Presentation; using System.Text.RegularExpressions; namespace ReplaceTextWithRegex { class Program { static void Main(string[] args) { //プレゼンテーションインスタンスを作成する Presentation ppt = new Presentation(); //サンプルドキュメントをロードする ppt.LoadFromFile("Sample.pptx"); //最初のスライドを取得する ISlide slide = ppt.Slides[0]; //選択したテキストとその行末以降のテキストを新しいものとして置き換える Regex regex = new Regex("ABC.*"); string newvalue = "ABC DEF"; foreach (IShape shape in slide.Shapes) { shape.ReplaceTextWithRegex(regex, newvalue); } //結果ドキュメントを保存する ppt.SaveToFile("ReplaceTextWithRegex.pptx", FileFormat.Pptx2013); } } }

投稿2022/06/01 07:25

enj0ylife

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

PIA(Microsoft.Office.Interop.PowerPointなど)を使うのであれば、VBAと同じ操作体系のため、そちらで情報を探すと多少は見つかると思います。

参考として、自分がよく見るPowerPointのVBAに関するサイトと今回の内容と関連しそうな記事を載せておきます。

パワーポイントマクロ・PowerPoint VBAの使い方
半角文字を全角に一括変換するPowerPointマクロ:パワーポイントマクロ・PowerPoint VBAの使い方-TextFrame・TextRange

階層構造イメージ PowerPoint.Application Presentation Slide Shape TextFrame / TextFrame2 TextRange / Office.TextRange2 Text(文字列)

いくつか補足として

  • 置き換えたい文字がグループ化された図形や、表の中に含まれる場合は図形(Shape)が入れ子となっているため、階層を辿る必要があります(パターンが多く、なおかつ統一的に辿る方法は無いため、必要であれば)
  • 一つの図形の中で複数の書式が使用され、それぞれの書式を保持したい場合は単純なPowerPoint.TextRange.TextOffice.TextRange2.Textの書き換えではなく、ReplaceメソッドやRunsでの書式毎への分解が必要になります。

投稿2019/07/16 22:13

imihito

総合スコア2166

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.42%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問