- ベストアンサー
エクセルのマクロでワードアートのテキスト抽出
KenKen_SPの回答
> はたしてこんなのはマクロで可能なのでしょうか? VBA の質問なら、自分でどこまでやって何を調べたかを提示 した方が良いのでは? # 丸投げが好まれないのは当然ありますが、一方で回答者は # 質問者のスキルが予測できます。回答の仕方も変わってくる # ということです。 ■ ポイント 1. シェープがワードアートかどうか? Type プロパティーの値が msoTextEffect かどうかで判定。 2. シェープがグループ化されているか GroupItems.Count がエラーになるかどうかで判定。 3. シェープの多重グループ化 単一シェープの情報取得サブプロシージャを作成して、 その中で 上述2. のグループ化判定を行い、グループ化 されていれば再帰処理すれば良い。 分からない部分はネットや参考書で調べ、適当に希望どおりの 動作となるよう作り込んでみて下さい。 以下ソースはシート名などの情報もついでに調べてます。 ’ 貼り付け先は標準モジュール ’ テストはほとんどしてません Option Explicit Private g_Buf() As String Private g_Cnt As Long ' // 全ワークシート内に配置されたワードアートの情報取得 ' Public Sub EnumWordArtInfo() ' 初期化 g_Cnt = -1 Dim wb As Workbook Dim sh As Worksheet Dim shp As Shape Set wb = ActiveWorkbook For Each sh In wb.Worksheets For Each shp In sh.Shapes Call pvGetWordArtInfo(shp) Next Next If g_Cnt >= 0 Then Dim buf As Variant buf = Application.Transpose(g_Buf) Set sh = wb.Worksheets.Add(After:=wb.Worksheets( _ wb.Worksheets.Count)) With sh.Range("A1:E1") .Value = Array("SheetName", "Address", "GroupName", _ "ShapeName", "Text") .Font.Bold = True End With sh.Range("A2").Resize(UBound(buf), UBound(buf, 2)).Value = buf sh.Range("A:D").EntireColumn.AutoFit Else MsgBox "ワードアートが無い?", vbInformation End If Erase g_Buf, buf Set sh = Nothing Set wb = Nothing End Sub Private Sub pvGetWordArtInfo(ByRef shp As Shape, _ Optional ByVal sGroupName As String _ ) On Error Resume Next Dim n As Long n = shp.GroupItems.Count If Err.Number = 0 Then ' グループ化されたシェープの場合は再帰処理する On Error GoTo 0 Dim i As Long For i = 1 To n Call pvGetWordArtInfo(shp.GroupItems.Item(i), shp.Name) Next i Else ' グループ化されていない場合 Err.Clear If shp.Type = msoTextEffect Then ' ワードアート各種情報取得 g_Cnt = g_Cnt + 1 ReDim Preserve g_Buf(4, g_Cnt) g_Buf(0, g_Cnt) = shp.Parent.Name ' シート名 g_Buf(1, g_Cnt) = Range(shp.TopLeftCell, _ shp.BottomRightCell).Address ' 配置位置 g_Buf(2, g_Cnt) = sGroupName ' グループ名 g_Buf(3, g_Cnt) = shp.Name ' シェープ名 g_Buf(4, g_Cnt) = shp.TextEffect.Text ' テキスト End If End If End Sub
関連するQ&A
- Word文書のワードアートのテキストをマクロで変更
お世話になります。 Word文書のワードアートのテキストをExcelマクロで変更する方法を教えてください。 Wordアプリケーションへの参照と、該当Word文書への参照と、変更したいテキストがあります。 試したこと: 1)Word2007で、マクロを記録してからワードアートのテキストを変更してみたが、マクロには何も記録されなかった。 2)該当Word文書のShapes や InlineShapes を参照してMsgboxで表示してみたが、テキストボックスに設定したテキストしか画面に表示されなかった。 何をやっているのか?: 教室のパンフレットを作ろうとしています。同じような書式で、曜日とか時間とか講座名とか費用とか・・だけ違うパンフレットを大量に作るのですが、いちいちデータを変更していると面倒なので、 Excelシートにデータを出力しておいて、Wordで作った雛形のなかの、曜日とか時間とか講座名とか費用とかの部分だけ変換してやればいいじゃないか、と考えたわけです。 そこで、Excelシートのどのシートのどのセルに、曜日とか時間とか講座名とか費用とか・・・が入っているかというデータを用意しまして、そのブック(ブックM)に、こんなマクロを作ったのです。 1.Excelデータ(ブックD)をオープン 2.ワード文書の雛形をオープン 3.ブックMの1行目から順に・・・ 3-1.曜日とか時間とか・・という項目名などを取得 3-2.ブックDから該当するデータを取得 3-3.データの先頭や末尾の、不要な部分を適宜切捨て 3-4.ワード文書で置換を実行 こんな感じのマクロです。 ワード文書の雛形には、「開講する講座:#講座名#(#コース名#)」などと記述してありますので、 #講座名#を「陶芸を楽しむ」 #コース名#を「入門」 などと変更してやれば、パンフレットが出来上がるのです。 しかし、ワードアートのテキストを#講座名#にしておいても変更されないし、マクロの記録もできないし・・で困っております。 お答えをいただければ幸いです。
- 締切済み
- オフィス系ソフト
- エクセル ワードアートのテキストにセルの値を表示
ワードアートのテキストの内容に例えばA1のセルの値を表示したいです。 A1を変更すればワードアートもかわるように。 テキストボックスならできますよね それをワードアートで・・・できますか? マクロでもよいです。 よろしくおねがいします。
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロで」・・・
マクロの超初心者です。 1度研修で習った程度です。 a.xlsというブックでマクロを動かし、 既にいくつかシートがあるb.xlsを開いて最後のシートの次に新しいシートを作り、 既にあるc.xlsの1つ目のシートにあるデータをb.xlsの新しく作ったシート に貼り付け、b.xlsとc.xlsのブックは閉じるようにすることはできますか?(b.xls,c.xlsは最初閉じている) どのような感じにa.xlsでマクロを組めばよいのでしょうか? 今起動しているブックではないブックを起動したりできるのかも不明です。
- ベストアンサー
- オフィス系ソフト
- EXCEL2007でワードアートが表示されない・・・
EXCEL2007でマクロを使用して新しいブックを作成したところ、その新しいブックではワードアートやテキストなどが表示されません。印刷プレビューでは表示されます。ワードアートなどをシートに挿入した状態で図の挿入など別のウィンドウを開くとそのワードアートはチカチカ点滅表示します。 2007以前のEXCELの操作方法は検索できたのですが、2007での操作方法がわかりません。 どなたか教えてください。 よろしくお願いします。
- 締切済み
- Windows XP
- エクセル2007を使ったワードアートのコピー貼り付けについて。
エクセル2007を使ったワードアートのコピー貼り付けについて。 エクセルを開くとシート2の(B2)、シート3の(C3)、シート4の(D4)、シート5の(E5)にワードアートで作った「注意」の文字が貼ってあります。使うにはこの文字を消して使いたいと思います。ただしシート5の分だけは消さないで残しておき(シート非表示)エクセルを閉じる直前にそれを利用して、シート2からシート4の元の位置に貼っておきたいと思います。自動マクロでは作れなかったのでどうしたらよいのでしょうか。
- ベストアンサー
- Visual Basic
- エクセル・マクロ
(同じフォルダの)複数のブックの中に複数のシートがあり、シートの名前が(一部)共通しています(例:赤組のA、赤組のB・・・)。別のブックに、同じ名称(例:赤組)を含むシートをコピーしてまとめたい(シート1が赤組のA、シート2が赤組のB・・・)のですが、どのようなマクロを記すれば良いでしょうか。宜しくお願いいたします。
- ベストアンサー
- その他MS Office製品
- エクセルマクロのことです
通常使っていたマクロを間違えて消してしまい、その上再構築できなくて困っています。 こんなマクロだったですが。 ブック内に複数のシートが入っています。新しくSheetを追加してA2セル(他のセルの時もあります)をアクティブにします。 Alt+F8→実行でA2セルから下へ、そのブック内の全ての「シート名」が書き出されるというマクロだったのです。 マクロ初心者です、どなたかアドバイスをお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル:複数ブックをマクロを使い同一条件で集約・抽出したい
教えて下さい 複数のエクセルブックがあります(全て1フォルダーに集約してある) それぞれA列に日付、B列に金額が入っている 複数あるブックを指定する日付で次から次へと検索しその金額とファイル名を新しいブックに縦に全てコピー(抽出)したい ちなみに、必ず条件にあうデータがそれぞれのブックにあるとは限りません 無い場合もあります 無い場合は特に抽出する必要はありません ========================================================= 例:2007/12のデータを抽出したい ★抽出結果イメージ A B C 1 2007/12 200 ああああ.xls 2 2007/12 300 いいいい.xls 3 2007/12 100 うううう.xls 4 ・ ・ ・ 5 ・ ・ ・ 6 ・ ・ ・ 7 ・ ・ ・ ========================================================= このような場合、マクロでできますか?マクロは初心者です 教えてください よろしくお願いします 複数あるブックとは数的に60とかあります ちなみに現状はファイルを一つ一つ開き、指定日付を検索し見つけだし その行をコピーペーストしています たくさんブックがあるので、これをしていると目がチカチカしてきてしまいます この作業がマクロでできると、すごく感激なのですが・・・ どなたか、お知恵・お力をおかしくださいませ
- ベストアンサー
- オフィス系ソフト
- エクセルVBAで、ワードアート削除するには?
エクセルマクロ初心者でして、どうかご迷惑おかけするかもしれませんが、どうか助けていただけないでしょうか? エクセルマクロで名刺作ってまして、ワードアートをA1に作成して、A2~B6にコピーして作ってます。 しかし、ワードアートの一部分が間違えて変更する際に、A2~B6を 削除するのが大変なんですよ・・・ セルA2~B6のワードアートを指定して削除するVBAは、どうやってつくるのか、どなたか教えていただけないでしょうか? 一括削除だったら、原画のA1まで消えてしまって・・・( ̄~ ̄)ンー
- 締切済み
- オフィス系ソフト
- エクセルのマクロでシートを表示させる
マクロ初心者です。 1つのブックに20シート入っているのですが、 チェックBOXにチェックを付け、該当するシートのみを表示させるマクロを教えてください。 sheet1以外の下記のシートA~Dは非表示になっており sheet1にはシート名 A B C D というチェックBOXがあり、 例えば、Bにチェックを入れるとBのシートが表示され、 AとDなど複数チェックが入るとチェックしたシートが表示される様な マクロがありましたら、教えてください。 マクロの記録で読み込ませているのですが、複数シートの為、限界を感じております。 よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
お礼
正直できるとは思いませんでした・・・すごいとしかいいようがありません。。。 ソースを見てもわからないことだらけですので、1から時間をかけて勉強します。本当にありがとうございました。