重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセルでコメントを入力したとき
山県有朋:
abcdefgh

のようにコメント入力者の名前が入力されると思います。
実はその組織の都合で所有者が変わりました。
コメントの数が少ないのなら手で所有者を変えることができるんですが、量が多いのでマクロでできないかと思っています。

どうすればよいでしょうか

sub ee
each r in comments
r.author="新しい所有者"
end sub

でやってもできませんでした。
方法を教えてください。

A 回答 (2件)

こんにちは。



私は、コメントは、以下のようにすればできるとは思うのですが、どうでしょうか?

Sub TestCommentsReplace()
Dim cm As Comment
Dim mStr As String
Const PREV As String = "山県有朋:"  
Const NEWC As String = "新しい所有者:" '「:」を忘れないで!
 For Each cm In ActiveSheet.Comments
 mStr = cm.Text
 cm.Shape.DrawingObject.Caption = Replace(mStr, PREV, NEWC)
 Next
End Sub
    • good
    • 0

こんばんは。



Comment オブジェクトの Author プロパティーは値の取得のみ可能です。
つまり、変更はできません。これを変更したいのであれば、コメントを
一度削除してから、同一内容で作成し直すことになります。

単純にコメントの1行目にある名前のみ変更したいなら、コメント文字列
の書式(文字色、ボールド、フォントサイズ等)が失われてしまいますが、

  Dim Cmt As Comment
  For Each Cmt In ActiveSheet.Comments
    Cmt.Text Replace$(Cmt.Text, "山県有朋", "WHO?")
  Next

で置換してしまうとか。本文中にも「山県有朋」がでてくるようなら、
多少工夫が必要で、置換前に1行目と2行目以降にテキストを切り分けて
おいてから1行目部分のみ置換します。

書式を維持するのはかなり面倒くさそう...ですね。

Cmt.Shape.TextFrame.Characters(開始位置, 終了位置).Font

で書式を操作することは可能は可能ですけど...
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!