ブック全体の文字列を置換するVBAを作ったのですが、
セルの文字だけではなく図形も対象にするにはどのように
したら良いのでしょうか?
よろしくお願いもうしあげます。
Sub WholeBookChange_Sub(FromX, ToX)
Dim s As Variant, flag As Boolean
Dim SheetMei As String
Application.StatusBar = "現在" & FromX & "から" & ToX & "へ変換中です。"
For Each s In Sheets
SheetMei = s.Name
Sheets(SheetMei).Select
Cells.Replace what:=FromX, Replacement:=ToX, LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False
Next s
End Sub
No.4ベストアンサー
- 回答日時:
こんばんは。
>使用しているExcel2003ではTextFrame2が認識されないようです。
実は、バージョンによって違うので、ここの部分に不安になりました。
Microsoft 側から、正式なマイグレーションが出ていないので、経験的に覚えていくしかありませんね。
Excel2000 ~Excel 2003 までですと、このようになります。
(両方で、チェック済みです)
なお、Replace 関数は、テキストコンペア・モードにしています。
Sub WholeBookChange_Sub(FromX As Variant, ToX As Variant)
Dim sh As Worksheet
Dim shp As Object
Dim s As String
For Each sh In ActiveWorkbook.Worksheets
For Each shp In sh.Shapes
With shp
s = ""
On Error Resume Next
s = .DrawingObject.Text
On Error GoTo 0
If s <> "" Then
.DrawingObject.Text = Replace(s, FromX, ToX, , , vbTextCompare)
End If
End With
Next shp
Next sh
End Sub
No.3
- 回答日時:
こんにちは。
Excel のバージョンはいくつですか?このご質問は、Excelのバージョンに影響されるはずです。
回答ありがとうございます。
Excel2000の(職場の)環境で動かします。
正月休み中は自宅のExcel2003で動作確認をやっています。
No.2
- 回答日時:
回答番号:No.1は、検証不足のようでした。
Sub test2()
Dim strtb As String
Dim i As Long
For i = 1 To ActiveSheet.Shapes.Count
With ActiveSheet.Shapes(i)
On Error Resume Next
strtb = .TextFrame2.TextRange.Text
On Error GoTo 0
If strtb <> "" Then
With .TextFrame2.TextRange
.Text = Replace(strtb, "あ", "A")
End With
End If
End With
strtb = ""
Next
End Sub
回答ありがとうございます。
回答いただいたVBAを試してみましたが、うまく行きません。
使用しているExcel2003ではTextFrame2が認識されないようです。
教えていただいたVBAを参考にし、
strtb = .TextFrame2.TextRange.Textのところを
strtb = .TextFrame.Characters.Textに、
With .TextFrame2.TextRangeのところを
With .TextFrame.Charactersに変更してみたところ
まだすべて確認したわけではありませんが、一応動きました。
No.1
- 回答日時:
下記のようなコードで、図形のテキストが抽出できます。
抽出したテキストを「置換」にかければよいとおもいます。
Sub testテキスト抽出1()
Dim strtb As String
Dim i As Integer
For i = 1 To ActiveSheet.Shapes.Count
On Error Resume Next
With ActiveSheet.Shapes(i).TextEffect
If .Text <> "" Then
strtb = .Text
End If
End With
On Error GoTo 0
MsgBox strtb
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カンマ区切り形式ではなく、セ...
-
文字を一括で置換するソフト・...
-
Wordチェックボックス作り方(...
-
txtファイル内の指定の単語の数...
-
エクセルで置換リストを別ブッ...
-
秀丸エディタ タブをカンマに...
-
キーワード入れ替えして文章作...
-
入力済みの文字中にある句読点...
-
エクセル 置換中の値の更新
-
秀丸で、複数の置換を1ステッ...
-
ExcelのROUND関数を一括解除し...
-
お問い合わせのメールアドレス...
-
スタイルシートの意味が分って...
-
パワーポイントの置き換えマクロ
-
エクセル 数式 不等号を反転
-
エクセルの表の相対番地を絶対...
-
パワーポイントで参照ページを...
-
エクセルVBAでマルチページの切...
-
リンクをアップデートするしな...
-
キングファイルの背表紙を作成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切り形式ではなく、セ...
-
エクセルで例えば、関数を使っ...
-
エクセルでアルファベット5段階...
-
文字を一括で置換するソフト・...
-
Wordチェックボックス作り方(...
-
txtファイル内の指定の単語の数...
-
Ctrl+Hで置換にならない
-
ExcelのROUND関数を一括解除し...
-
エクセル 置換中の値の更新
-
Excelで、10000,20000,30000と...
-
秀丸エディタ タブをカンマに...
-
マクロで文字列をブック全体に...
-
エクセルで置換リストを別ブッ...
-
パワーポイントの置き換えマクロ
-
アクセスのテーブル上でデータ...
-
WORDで一括置換
-
Wordで一括して改ページする方法
-
vbaで実行後、指定のセルに戻す...
-
文字列の<>で囲まれた文字列...
-
置換(検索場所に「ブック」を...
おすすめ情報