- PR -

OWC11(スプレッドシート)内の文字列を検索したい

1
投稿者投稿内容
SANB
常連さん
会議室デビュー日: 2008/11/17
投稿数: 25
投稿日時: 2008-11-26 17:13
お世話になります。

C#.NETで開発しております。

早速質問なのですが、XMLスプレッドシート内のある文字列を検索し
他の文字列と置換する処理をしようとしております。
検索のところでつまずいています。
Renge.Findメソッドというものを見つけたのですがこれでできますでしょうか?
http://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.excel.range.find(VS.80).aspx
すみません。ご教授お願い致します。
なかむら
ベテラン
会議室デビュー日: 2008/11/11
投稿数: 67
お住まい・勤務地: 福岡
投稿日時: 2008-11-26 17:26
置換なら Replace というメソッドがありますよ。

http://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.excel.range.replace(VS.80).aspx

_________________
Nakamura Blog
SANB
常連さん
会議室デビュー日: 2008/11/17
投稿数: 25
投稿日時: 2008-11-26 17:56
>なかむら様

はい。置換はReplaceでやろうと思っていたのですがスプレッドシート内の文字列の検索の方法がわからないのです。
例えば、シートの中にabcという文字列があったらそこのセル番号を持ってきて他の値とリプレースという処理をしたいのですが、シート内の文字列の検索がわかりません・・・
SANB
常連さん
会議室デビュー日: 2008/11/17
投稿数: 25
投稿日時: 2008-11-26 18:49
あれ、ひょっとしてReplaceメソッドだけで検索もできて置換もできるんですか(汗)
なかむら
ベテラン
会議室デビュー日: 2008/11/11
投稿数: 67
お住まい・勤務地: 福岡
投稿日時: 2008-11-26 19:58
Replace だけで出来ると思います。
第1引数で検索対象の文字列を指定し、第2引数で置き換える文字列を指定すればいいかと。

例えばシート内の abc という文字列を def に置換する場合、次の手順になります。
1.シート全体を対象とした Range オブジェクトを取得。
2.取得した Range オブジェクトの Replace メソッド呼び出し。第1引数に"abc"、第2引数に "def" を指定。残りは適切なものを指定。


_________________
Nakamura Blog
SANB
常連さん
会議室デビュー日: 2008/11/17
投稿数: 25
投稿日時: 2008-11-26 20:32
ありがとうございます。

Spreadsheet sht = new Spreadsheet();
sht.XMLURL = "http://localhost/TmpFile/xxx.xml";

 sht.get_Range("A1","D4").Replace("aaa", "bbb");
こんな感じでやってみたのですができませんでした。
全体を対象としたオブジェクトとはどのように取得したらよろしいでしょうか?
なかむら
ベテラン
会議室デビュー日: 2008/11/11
投稿数: 67
お住まい・勤務地: 福岡
投稿日時: 2008-11-27 11:42
Spreadsheet に Cells プロパティまたは Rows プロパティは無いのでしょうか?
あと、Replace メソッドの引数を省略しない方法も試してみて下さい。

_________________
Nakamura Blog
SANB
常連さん
会議室デビュー日: 2008/11/17
投稿数: 25
投稿日時: 2008-12-08 19:40
お返事遅くなりました。申し訳ありません。

とりあえずリプレースは使わないでセル毎を読み込んでそのセルに直接文字列を埋め込む方法で一時的に解決しました。
リプレースを使ったやり方でもまた試してみようと思います。
1

スキルアップ/キャリアアップ(JOB@IT)