• ベストアンサー

マクロでコメントの所有者名を一括で変換する

エクセルでコメントを入力したとき 山県有朋: abcdefgh のようにコメント入力者の名前が入力されると思います。 実はその組織の都合で所有者が変わりました。 コメントの数が少ないのなら手で所有者を変えることができるんですが、量が多いのでマクロでできないかと思っています。 どうすればよいでしょうか sub ee each r in comments r.author="新しい所有者" end sub でやってもできませんでした。 方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんばんは。 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 で書式を操作することは可能は可能ですけど...

関連するQ&A

  • エクセルのマクロ

    選択状態にあるセル(どのセルも一文字のみ入力されている)に"●"以外が入力されていたら、全て消去する。 上記を実行するマクロとして以下を試してみましたが、うまくいきません。どこがおかしいのでしょうか? Sub test()  For Each cell In Selection   If Selection.Value <> "●" Then   Selection.ClearContents   End If  Next End Sub

  • 一括保護のマクロにパスワードをかける方法

    エクセル作った表、20シートを一括保護・解除をマクロを使い(どなたかの回答をコピーして)作成しました。保護・解除はできたのですが、このマクロにパスワードをかけ、保護の解除が他の人に出来ないようにしたいのですが、どのようにすれば良いのでしょうか? つかったマクロは・・・ 『保護』 Sub シートの保護() 'Dim~として変数を宣言する Dim myWS As Worksheet 'myWSを「ワークシート」として宣言 'ブック中のシート全部を1枚ずつ以下の作業を繰り返す For Each myWS In Worksheets With myWS 'myWSで .EnableSelection = xlUnlockedCells 'ロックしていないセルを選択出来るように .Protect '保護する End With 'With myWSに対する締め Next myWS 'Forに対応するもの End Sub 『解除』 Sub シートの保護解除() Dim myWS As Worksheet Application.ScreenUpdating = False For Each myWS In Worksheets myWS.Unprotect Next myWS Application.ScreenUpdating = True MsgBox "シート保護解除しました。" End Sub 『Workbook』 Private Sub Workbook_Open() Dim myWS As Worksheet For Each myWS In Worksheets With myWS .EnableSelection = xlUnlockedCells .Protect End With Next myWS End Sub この3つです。VBA初心者で、わかりにくい説明ですが、よろしくお願いいたします。

  • エクセルのマクロ

    Sub test() Dim x As Range  For Each x In Selection    If x.Value <> "●" And Selection.Font.ColorIndex = 0 Then    x.Value = "○"  End If Next End Sub 上記は、選択されているセルのフォントが黒でかつ"●"が入力されていない場合は"○"を入力する、というマクロですがうまく動作しません。どうすれば正常に動作するようになるでしょうか?

  • マクロを組むとこんなエラーが出るようになりました

    捺印君:Vel 1.25→(エクセルのフリーソフトです) PicturesクラスのPasteプロパティを取得出来ません。 予期せぬエラーが発生しました。 とエラーが出ます。 ちなみに組んでいるマクロは下記です Sub 全シートの保護() Dim Sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each Sh In Worksheets Sh.Protect Password:=myPassword Next End Sub Sub 全シートの解除() Dim Sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each Sh In Worksheets Sh.Unprotect Password:=myPassword Next End Sub このマクロがおかしいからエラーが出るんですよね? 違うマクロにすれば問題ないでしょうか? ちなみにマクロは「全シートの保護一括解除」と「一括保護」で パスワード付きの物をとなっております。

  • エクセルマクロで複数列のセルを選択した時でも正しく動作するようにしたい

    エクセルマクロで複数列のセルを選択した時でも正しく動作するようにしたい。 今、3列目に入力された値によって15列から17列の値を自動入力するように次の マクロを作りました。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 3 Then Exit Sub For Each r1 In Selection If r1.Cells(1, 1) <> "部品表" Then Cells(r1.Row, 15) = "-" Cells(r1.Row, 16) = "-" Cells(r1.Row, 17) = "-" End If Next End Sub 3列目のみのセルをペーストすると正しく動作しますが、1列目から3列目のセルにペーストすると何も動きません。 正しく動くようにするには、どう修正すればいいでしょうか?

  • エクセルのマクロについて教えてください。

    エクセルのマクロについて教えてください。 エクセルの各シートごと一気にシート保護したいという質問に対して下記の回答が来ました。 Sub macro1() ’全シート一括保護 Dim W As Worksheet For Each W In Worksheets W.Protect ("1234") ’パスワード1234 Next W End Sub Sub macro2() ’全シート一括保護解除 Dim W As Worksheet For Each W In Worksheets W.Unprotect ("1234") ’パスワード1234 Next W End Sub 上記はプログラムで全てて入力でやらないとできませんか?マクロボタンから操作して上記のように設定する方法は ありませんか? 英語が苦手です。 また大文字、小文字が間違っても設定はできないのでしょうか?スペースも1行あるのとないのでは 意味が違うのでしょうか? 上記の意味を教えてください。 宜しくお願い致します。

  • エクセル シート保護後コメントの挿入ができない

    win2000 officeXpです 以前こちらで、ファイルを開く時に 全シートの保護を行うマクロを教えたいただいたのですが、セルへのコメントの挿入ができなくなりました。 できる方法があればご教授ねがいます。 以下はその際教えていただいたマクロです。 Private Sub Workbook_Open() Dim sh As Worksheet For Each sh In Worksheets sh.EnableOutlining = True sh.Protect UserInterfaceOnly:=True Next sh End Sub

  • RNKU関数をマクロで記述したいのですが?

    RNKU関数をマクロで記述したいのですが? マクロを勉強しようと思いネットや本を見ながら試行錯誤しております。RANK関数と同じことをしようと思い調べながら実行したのですがうまくいきません。型が一致しませんと出るのですが、ヘルプを見ても良く分からなかったので、だれか教えて頂けませんでしょうか。 Sub Macro1() Range("A1:A17").Select For Each r In Selection Range("B1:B17") = Application.WorksheetFunction.Rank(r, Selection, 1) Next r End Sub A列の順位をB列に表示しようとしました。

  • マクロで保護をかけているけど、幅の変更ができない

    マクロ初心者です。 複数のシートに下記の様なマクロで保護をかけています。 Sub シートの保護() Dim myWS As Worksheet For Each myWS In Worksheets With myWS .EnableSelection = xlUnlockedCells .Protect Password:="****" End With Next myWS End Sub マクロで保護がかかっている状態で、高さや幅を変更したいのですが、 どのようにマクロを変更すれば良いのかわかりません。 教えていただけますでしょうか?

  • Excelマクロ 負の数(例-20)を赤にしたい

    こんにちは。 Excel2003でA1からB20までのセルに正と負の数字が混在しています。 負の数字 (-20などマイナス記号が入ったまま) を赤にしたいのです。 調べてマクロを組みましたが書き方がわからないところがあります Sub Macro() Dim r As Range With Range("A1:B20") For Each r In .Cells <-----ここの書き方 If .Cells < 0 Then <-----ここの書き方 With r.Font .ColorIndex = 3 End With End If Next End With End Sub どこを修正すれば良いでしょうか おわかりの方お教えください。

専門家に質問してみよう