プロが教えるわが家の防犯対策術!

これまでシート上のオートシェイプをVBAを使用し別シートにコピペしていたのですが、
Excel2013から2019へバージョンアップすると反映しなくなってしまいました。
別のテキストは全て反映されています。(Excel2013ではシェイプも全て反映。)

 ・新しいブックにデータ、シェイプを再度作成しマクロをコピー
 ・オプションー詳細設定のオブジェクト表示 → すべて
 ・グラフィックアクセラレータを無効にチェック
 ・オブジェクトの選択と表示 → 目のアイコン有

以上の対応はしましたが直りません。
もし別案があればご教授願います。
よろしくお願いいたします(>_<)

A 回答 (3件)

投稿後気が付きました


>上記データが取得できない場合はコピペ不可という認識であっていますか?
取得できていないシェイプがあると言う事でしょうか?
取得できない場合は、違う方法になるかと、
しかしそれは、オートシェイプではないと言う事になるのではないかと思います。

ごめんなさい。本日はこの辺で、、
    • good
    • 0

#1です


.Typeの1は、図形・オートシェイプ
28はグラフィックとなります。
Nameは、B列です。Rectangular Callout 4 など
これは、一意のはずです。

>オートシェイプをコピーしたいとの事なので
補足お礼の結果にある1のシェープいずれかだと推測します。

コピペのコードが分らないので推測ですが、名前、または、
ShapeのあるアドレスなどでShapeを特定取得してCopyしているのではないでしょうか

または、#1に示したFor のようにシートにあるすべてのShapeに対してIf ~~.Name Thenなどで
取得、特定しているのではないかと推測します。

テストしたリストのアドレスからShapeを特定して
対象のShapeをどのように現行処理で取得されているか、判れば
現行に合うように(コード側)変更すれば、コピペできると思います。

新たに特定Shapeを取得(コピペ)する必要がある場合は、
Shapeに対して一意の.Nameや状況によっては、.TopLeftCell.Addressで特定して
コピペしてみてください。
    • good
    • 0

こんばんは、


残念ながら、事象を検証できないので、想像で、、
まず、>Excel2013から2019へバージョンアップする は、
Office32bitから64bitなのかな?

>オートシェイプをVBAを使用し別シートにコピペしていたのですが
どの様に抽出(特定)してコピペしていたのでしょうか?
Nameプロパティなどで特定したいたのであれば、
下記コードで現状のShape各プロパティを確認して、実行コードを確認してみては
いかがでしょう。

一部のプロパティなので必要に応じて追加してください。

Sub Shape_Test()
  Dim shp As Shape
  Dim n As Long: n = 1
  For Each shp In ActiveSheet.Shapes
    With Sheets(1)
      .Cells(n, "A") = shp.Type
      .Cells(n, "B") = shp.Name
      .Cells(n, "C") = shp.ShapeStyle
      .Cells(n, "D") = shp.TopLeftCell.Address
    End With
    n = n + 1
  Next shp
End Sub

新規シートを追加して、インデックス1(一番左のタグ位置)にして
該当のシェープのあるシートをアクティブシート(選択)にして、
上記プロシージャを実行して各シェープのプロパティを確認してみては、
該当コードを修正して取得できるようなら
コピペも可能なのではないでしょうか、、
    • good
    • 1
この回答へのお礼

ありがとう

回答頂き有難うございます。
私はVBA初心者ですので、Nameプロパティなのか知識がありません。
Nameプロパティかどうなのか確認方法はありますか?
>Office32bitから64bit
 こちらについては未確認です。確認します!

自分の持っているファイル(シェイプが反映するファイル)で実行コードを確認しました。

1 Rectangular Callout 4 0 $AE$2
1 Rectangular Callout 5 0 $C$60
1 Smiley Face 1 0 $F$9
1 Plaque 2 0 $F$12
1 Pentagon 12 0 $F$38
1 Pie 15 0 $G$18
1 Flowchart: Or 23 0 $F$21
28 Graphic 28 0 $F$32
1 Flowchart: Or 17 0 $F$24
1 Flowchart: Or 18 0 $F$29
28 Graphic 19 0 $F$34
1 Pentagon 13 0 $F$52
28 Graphic 14 0 $F$46
1 Flowchart: Or 16 0 $F$43
28 Graphic 20 0 $F$48
1 Pie 21 0 $G$15

このように表示されたのですが、該当コードを修正する必要が
あるのでしょうか?
上記データが取得できない場合はコピペ不可という認識であっていますか?
知識足らずですみません。。

お礼日時:2020/09/15 22:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!