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

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

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

C#

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

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

.NET Framework 4.0

Microsoft Windows用のソフトウェア開発環境/実行環境である .NET Frameworkの4番目のメジャーバージョンです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

4回答

4736閲覧

VBAにおけるワイルドカードを使った置換について

elvis

総合スコア29

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

C#

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

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

.NET Framework 4.0

Microsoft Windows用のソフトウェア開発環境/実行環境である .NET Frameworkの4番目のメジャーバージョンです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

2クリップ

投稿2015/12/09 07:02

編集2015/12/09 07:12

###前提・実現したいこと
ワイルドカードで検索しヒットした
文字列を取得したいです。

環境:Microsoft Word2010

###現状
VBAでワイルドカードを使った検索を行っています。

置換には以下の例の様に検索でヒットした単語を
使用しています。

※以下の単語で漢字のみを検索 [一-鶴] ※置換 見つかった漢字は「^&」です。 ※before 梅 うめ まつ 松 ※after 見つかった漢字は「梅」です。 うめ まつ 見つかった漢字は「松」です。

WordやExcelでダイアログを使用して
以上の事は実現できます。

しかしこの処理の後にヒットした文字列達(梅や松)を
使ってやりたい処理があります。

なので検索でヒットした文字列を取得するコードか、

もしくはそれらが格納されているオブジェクト
を知りたいです。

VBAでも.Netでも構いません。
ご教授ください。宜しくお願い致します

###仕掛中のC#のコード

using Word = Microsoft.Office.Interop.Word; private void FindLoop() { int intFound = 0; Word.Document document = this.Application.ActiveDocument; Word.Range rng = document.Content; rng.Find.ClearFormatting(); rng.Find.Forward = true; object findText = " [一-鶴] "; object missing = Type.Missing; rng.Find.Execute(ref findText, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); while (rng.Find.Found) { ※ここら辺で検索でみつかった文字列を取得したい string みつかった文字 = ""; rng.Find.Execute(ref findText, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); ※みつかった文字を使った処理を記述~ } MessageBox.Show("Strings found: " + intFound.ToString()); }

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

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

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

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

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

hsk

2015/12/09 07:10

WordやExcelのバージョンはどれになりますか? 2007とそれ以降とで、VBAからできることがかなり違いますので...
elvis

2015/12/09 07:11

Word2010になります。失礼致しました。
guest

回答4

0

お役に立てるかどうかはわかりませんが、このライブラリはいかがでしょうか
Spire.Doc for .NET

Imports Spire.Doc Namespace ReplaceString Friend Class Program Shared Sub Main(ByVal args() As String) Dim document As New Document() document.LoadFromFile("sample.docx") document.Replace("A", "B", False, True) document.SaveToFile("Replace.docx", FileFormat.Docx) System.Diagnostics.Process.Start("Replace.docx") End Sub End Class End Namespace

投稿2022/11/17 06:58

Gia2apo

総合スコア62

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

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

0

Rangeオブジェクトから値を取得できました。
C#からのオートメーションですと、Word.Range.Text から
ワイルドカードでヒットした単語そのものを取得できます。

投稿2015/12/29 06:08

elvis

総合スコア29

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

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

0

ベストアンサー

はじめまして。
求められている結果に繋がるかは分かりませんが、お力になれたら幸いです。

⚫word 置換について
findオブジェクトを使用して検索した物はReplacement オブジェクトに格納されています。
検索結果を置換する場合にはReplacement プロパティを使用します。

⚫︎文字列の引き渡し
LINQ機能を使用するといいと思いますがどうでしょうか?
またこちらで動的に使用する方法も分かりやすく記載されています。

また下記のリンクも参考になるかもしれませんので貼っておきます。
MSDNライブラリー
slide share

投稿2015/12/27 04:37

編集2015/12/27 04:40
minehan

総合スコア170

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

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

elvis

2015/12/29 06:07

ご回答ありがとうございます。 試行錯誤を繰り返した結果、Rangeオブジェクトから値を取得できました。C#からのオートメーションですと、Word.Range.Text からワイルドカードでヒットした単語そのものを取得できます。 minehan様から回答いただいた内容も参考にさせていただきます。 ありがとうございました。
guest

0

VBAでしたらこちらのページが詳しいかと思います。
VBAで正規表現を使う

投稿2015/12/25 05:22

編集2015/12/25 05:24
NaotoOmori

総合スコア10

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

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

elvis

2015/12/29 06:00

ありがとうございます。参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問