• ベストアンサー

エクセル図形間のテキストのコピー方法は?

 エクセル97のマクロの記述の質問です。  Sheet1とSeet2にそれぞれ図形があり、Sheet1の図形上のテキストをSheet2の図形にコピーしたいのですが、どう記述すればよいでしょうか?  図形をオブジェクトとして指定するのかと漠然と思うのですが、特定の図形のオブジェクトの名前をどうやって知(取得す)ればいいのかも、判りません。  よろしくご指導願います。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

>Sheet1とSheet2にそれぞれ図形があり、・・・ まず、Sheet1とSheet2の図形の個数が問題になりますが同数としています。 図形の指定方法としては、indexとnameが考えられます。 ●最初はindexで指定する方法です(上のマクロ) Sheet1とSheet2の図形はインデックス(作った順と考えていいでしょう)で照合できるなら、このように書けます。 しかし、図を貼り付けたり、削除を繰り返し、Sheet間でインデックスが対応しない場合はこの方法は使えないでしょう。 ●2つ目は図形の名前を使う方法です(下のマクロ) 下の例では、(名前ボックスを使い)  Sheet1で図形を選択して、四角形に Shikaku_S1_1、Shikaku_S1_2、Shikaku_S1_3  Sheet2で図形を選択して、四角形に Shikaku_S2_1、Shikaku_S2_2、Shikaku_S2_3 として、マクロで操作しやすい名前を付けて対応を付けやすくしています。(3個でテスト) 『Shikaku_S1_1』で『S1をS2に置き換え』を行えば『Shikaku_S2_1』が定義できます。 このようにして図形同士の対応を付けて、テキストを受け渡しています。 ご参考に。(Excel97です) 'indexで指定 Sub ShapeTextCopy1()   Dim i As Integer 'カウンタ   Dim shapeText As String '図形内のテキスト   Application.ScreenUpdating = False   For i = 1 To Worksheets("Sheet1").Shapes.Count     'シート1の図形のテキストを取り出す     With Worksheets("Sheet1")       .Activate       .Shapes(i).Select       shapeText = Selection.Characters.Text     End With     'シート2の同じインデックスの図形のテキストにセットする     With Worksheets("Sheet2")       .Activate       .Shapes(i).Select       Selection.Characters.Text = shapeText     End With   Next   Application.ScreenUpdating = True End Sub 'nameで指定 Sub ShapeTextCopy2()   Dim shp As Shape '図形   Dim shpName1 As String '図形の名称(Sheet1)   Dim shpName2 As String '図形の名称(Sheet2)   Dim shapeText As String '図形内のテキスト   Application.ScreenUpdating = False   For Each shp In Worksheets("Sheet1").Shapes     'シート1の図形のテキストと図形名を取り出す     Worksheets("Sheet1").Activate     shp.Select     shpName1 = Selection.Name     shapeText = Selection.Characters.Text     'シート2の対応する名前の図形のテキストにセットする     With Worksheets("Sheet2")       .Activate       shpName2 = Application.Substitute(shpName1, "S1", "S2")       .Shapes(shpName2).Select       Selection.Characters.Text = shapeText     End With   Next   Application.ScreenUpdating = True End Sub

TK1961
質問者

お礼

 ありがとうございました。  無事に思ったような動作をさせる事が出来ました。 また、何かありましたら、よろしくお願いします。

TK1961
質問者

補足

 急な仕事が入ったので、反応が遅くて申し訳ありません。 割り込み仕事が終わったら、改めてお礼させていただきます。

その他の回答 (1)

  • paradiso
  • ベストアンサー率27% (44/159)
回答No.1

こんなカンジです。 ActiveSheet.Shapes("AutoShape 1").Select Selection.copy Sheets("Sheet2").Select ActiveSheet.Paste ご覧のように AutoShape 1 とあります。 これは「オートシェイプ」で作成した図形ですが、じゃあどの図形がオートシェイプの何番なの、というのは図形を選択した時点で左上の「名前ボックス」(セルの番地が表示されたりするところ)に「オートシェイプ 1」など表示されます。

TK1961
質問者

お礼

 早速試させていただきましたが、残念ながら、この方法ですと図形そのものがコピーされてしまいました。  しかし、図形の名前が判る方法を教えていただいたのは大収穫でした。 面白いことに、日本語表現でちゃんと指定できるんですね。 ありがとうございました。

TK1961
質問者

補足

 急な仕事が入ったので、反応が遅くて申し訳ありません。 割り込み仕事が終わったら、改めてお礼させていただきます。

関連するQ&A

  • excelで図形をマクロで消すのには

    excelでマクロを使用して 条件に合わせて図形をコピーして 帳票に貼り付けています。 そこで、次の帳票を作ろうとしたときに 先ほどコピーした図形を削除したいのですが マクロで削除する方法はありませんでしょうか? コピー~貼り付けなので毎回、名前が変わってしまうので 名称を指定して削除ができません。 なにかいい方法をお教えくださいませ。

  • excelでマクロで図形をコピー、張り付ける

    Excelの画面で 挿入→図形で 作成した図形をマクロを使って コピーし、任意の箇所に張り付けたいのですが、図形が認識されないのか マクロが動作しません。どうしたらできるでしょうか?

  • Excelのマクロでコマンドボタンを選択する方法

    Excelのマクロでコマンドボタンを選択する方法 マクロの記述でオブジェクトのコマンドボタンのみを選択するにはどうしたらいいでしょうか? 別のマクロが登録されているボタンを削除するのが目的です。 オブジェクトは他にもテキストや直線などがあり、コマンドボタンのみの特定の仕方がわかりません。 シートも複数あり、コマンドボタンもまちまちな名前がついています。 WinXP Excel2000

  • エクセルのテキストボックスをVBで操作できない

    こんにちわ。 VBからエクセルを開いて、帳票を出力したいのですが、 エクセルはフォーマットシートを用意して、そのシートをコピーして書き込むようにしています。 セル単位での書き込みでは問題ないのですが、図形描画のツールボックスにある、「テキストボックス」への書き込みの仕方がどうしてもわかりません。 エクセルのマクロ記録を使って、調べたのところその場合一回目はきちんと書き込んでくれますが、二回目はなぜか「オブジェクト変数 または WITHブロック変数が設定されていません」というエラーが出ます。 なにか開放しなければならないのでしょうか? 一応、実行したマクロを載せておきます。 g_sheetwk.Shapes("text1").select Selection.Characters.Text = "aaaaaa" また、rangeオブジェクトか、shapeオブジェクトにsetしようと試みても、「型が一致しません」と言われてしまいます。 解決策があればお願いいたします。

  • VBA Shapes コピーと名前

    どうも、お世話になっています。 VBA初心者です。 エクセルのワークシート上の ActiveSheet.Shapes("Picture 1") を コピペするマクロを 作っているのですが あらたにコピーされた図形の名前を設定できますか。 出来たオブジェクトを選択するマクロができなくて困っています。 ご教授願います。

  • ワード2007へのテキストボックスのコピーについて教えてください。

    ワード2007へのテキストボックスのコピーについて教えてください。 エクセル2007作成のシートにあるテキストボックスをコピーしてワード2007に貼付けると図形として取り扱われ、編集ができません。ワード2003では図形にはならず、そのまま使えたのですが、対処を教えてください。

  • Excel VBAで「このシートにこの図形があった場合」

    Excelで、VBAを使っています。 あるシートに、名前をつけた特定の図形が「あった場合」 削除させたいのですが(無い場合もある)、 この「あった場合」というのはどうやって指定すれば良いのでしょうか? 調べてみたのですがよくわかりませんでした。 ご存知の方いらしたらよろしくお願いいたします。

  • EXCEL  VBA シートコピー、名前変更他

    EXCEL  VBA (1)シートコピー、名前変更 (2)他の固定のbookへ転送をVBAで記述 book1のsheet1を開き、そのsheetをコピーしたものをABCというsheet名に替え、 それをbook2のsheetの後ろへ移動するというマクロをPersonalに作ろうとしていますが、 インデックスエラーとか【アプリケーション定義または、オブジェクト定義のエラー】とかインデックスエラーとか になります。 book1のsheet1とかは、マクロを使う場合は、固定的な名前でなくいろいろそのときどきでかわる名前ですが、 マクロを使って、そのsheetをコピーしたものをABCとしてbook2のsheetの後ろへ移動したいということです。 よろしくお願いします。

  • エクセルで図形をセレクト

    アクティブシート内の全てのオブジェクト(線や図形)をセレクト状態にするマクロを教えて頂けますでしょうか。

  • エクセルで複数のシートのコピー方法は

    エクセルで シート1~シートN までの複数シートを シート名(集計)にコピーする マクロで関数組む方法を指導願います 条件1 シート名は 作業のつど 名前が 変更します 条件2 シートの形式は全部同じです エクセル 2000

専門家に質問してみよう