- ベストアンサー
エクセル図形間のテキストのコピー方法は?
- みんなの回答 (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
その他の回答 (1)
- paradiso
- ベストアンサー率27% (44/159)
こんなカンジです。 ActiveSheet.Shapes("AutoShape 1").Select Selection.copy Sheets("Sheet2").Select ActiveSheet.Paste ご覧のように AutoShape 1 とあります。 これは「オートシェイプ」で作成した図形ですが、じゃあどの図形がオートシェイプの何番なの、というのは図形を選択した時点で左上の「名前ボックス」(セルの番地が表示されたりするところ)に「オートシェイプ 1」など表示されます。
お礼
早速試させていただきましたが、残念ながら、この方法ですと図形そのものがコピーされてしまいました。 しかし、図形の名前が判る方法を教えていただいたのは大収穫でした。 面白いことに、日本語表現でちゃんと指定できるんですね。 ありがとうございました。
補足
急な仕事が入ったので、反応が遅くて申し訳ありません。 割り込み仕事が終わったら、改めてお礼させていただきます。
関連するQ&A
- excelで図形をマクロで消すのには
excelでマクロを使用して 条件に合わせて図形をコピーして 帳票に貼り付けています。 そこで、次の帳票を作ろうとしたときに 先ほどコピーした図形を削除したいのですが マクロで削除する方法はありませんでしょうか? コピー~貼り付けなので毎回、名前が変わってしまうので 名称を指定して削除ができません。 なにかいい方法をお教えくださいませ。
- ベストアンサー
- オフィス系ソフト
- excelでマクロで図形をコピー、張り付ける
Excelの画面で 挿入→図形で 作成した図形をマクロを使って コピーし、任意の箇所に張り付けたいのですが、図形が認識されないのか マクロが動作しません。どうしたらできるでしょうか?
- ベストアンサー
- Windows Vista
- Excelのマクロでコマンドボタンを選択する方法
Excelのマクロでコマンドボタンを選択する方法 マクロの記述でオブジェクトのコマンドボタンのみを選択するにはどうしたらいいでしょうか? 別のマクロが登録されているボタンを削除するのが目的です。 オブジェクトは他にもテキストや直線などがあり、コマンドボタンのみの特定の仕方がわかりません。 シートも複数あり、コマンドボタンもまちまちな名前がついています。 WinXP Excel2000
- ベストアンサー
- その他MS Office製品
- エクセルのテキストボックスをVBで操作できない
こんにちわ。 VBからエクセルを開いて、帳票を出力したいのですが、 エクセルはフォーマットシートを用意して、そのシートをコピーして書き込むようにしています。 セル単位での書き込みでは問題ないのですが、図形描画のツールボックスにある、「テキストボックス」への書き込みの仕方がどうしてもわかりません。 エクセルのマクロ記録を使って、調べたのところその場合一回目はきちんと書き込んでくれますが、二回目はなぜか「オブジェクト変数 または WITHブロック変数が設定されていません」というエラーが出ます。 なにか開放しなければならないのでしょうか? 一応、実行したマクロを載せておきます。 g_sheetwk.Shapes("text1").select Selection.Characters.Text = "aaaaaa" また、rangeオブジェクトか、shapeオブジェクトにsetしようと試みても、「型が一致しません」と言われてしまいます。 解決策があればお願いいたします。
- ベストアンサー
- Visual Basic
- VBA Shapes コピーと名前
どうも、お世話になっています。 VBA初心者です。 エクセルのワークシート上の ActiveSheet.Shapes("Picture 1") を コピペするマクロを 作っているのですが あらたにコピーされた図形の名前を設定できますか。 出来たオブジェクトを選択するマクロができなくて困っています。 ご教授願います。
- ベストアンサー
- オフィス系ソフト
- ワード2007へのテキストボックスのコピーについて教えてください。
ワード2007へのテキストボックスのコピーについて教えてください。 エクセル2007作成のシートにあるテキストボックスをコピーしてワード2007に貼付けると図形として取り扱われ、編集ができません。ワード2003では図形にはならず、そのまま使えたのですが、対処を教えてください。
- 締切済み
- その他MS Office製品
- Excel VBAで「このシートにこの図形があった場合」
Excelで、VBAを使っています。 あるシートに、名前をつけた特定の図形が「あった場合」 削除させたいのですが(無い場合もある)、 この「あった場合」というのはどうやって指定すれば良いのでしょうか? 調べてみたのですがよくわかりませんでした。 ご存知の方いらしたらよろしくお願いいたします。
- ベストアンサー
- Visual Basic
- 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
- 締切済み
- その他(データベース)
お礼
ありがとうございました。 無事に思ったような動作をさせる事が出来ました。 また、何かありましたら、よろしくお願いします。
補足
急な仕事が入ったので、反応が遅くて申し訳ありません。 割り込み仕事が終わったら、改めてお礼させていただきます。