• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelvba 図の名前を取得する方法を教えて)

Excel VBAで図の名前を取得する方法

kkkkkmの回答

  • kkkkkm
  • ベストアンサー率65% (1646/2496)
回答No.3

以下のサイトを参考にしてみてはいかがですか Excel VBA(マクロ)で図形の名前を取得、変更する方法/Nameプロパティの使い方 https://sunagitsune.com/excelvbashapesname/ Excel VBA 図形(オートシェイプ)を取得する方法 https://officedic.com/excel-vba-autoshape-get/ For Each~Nextで取得して変更するサンプルコード

ken-nosuke
質問者

お礼

いろいろご指導ありがとうございます。 私のプログラムでは、No1の方の「ショートカットキーにマクロ登録」が最も使いやすい様なのでこちらを採用させていただきました。

関連するQ&A

  • エクセルVBAで複数の図に名前をつけたい

    エクセルVBAで複数の図に名前をつけたい エクセルで見出しと合計2カ所などウィンドウ枠固定を複数つける ことはできないので、かわる方法として図のリンク貼り付けを利用 しようと思い下記を作りました。 Sub test()   Range("A100", "R100").Select   Selection.Copy   Range("A1").Select   ActiveSheet.Pictures.Paste link:=True   ActiveSheet.Pictures.ShapeRange.Name = "合計1"   Range("A200", "R200").Select   Selection.Copy   Range("A2").Select   ActiveSheet.Pictures.Paste link:=True   ActiveSheet.Pictures.ShapeRange.Name = "合計2" ・・・(1) End Sub 必要に応じて合計1または合計2を削除します Sub 図1削除() ActiveSheet.Shapes("合計1").Delete End Sub Sub 図2削除() ActiveSheet.Shapes("合計2").Delete End Sub (1)のところで 「このメンバにアクセスできるのは、単一の図形の場合だけです」エラーになります。 エラーがでないように図に名前をつける方法をおしえていただけないでしょうか。 何卒よろしくお願い致します

  • Excelでセル上の画像を別のセルにコピーするには

    いつも楽しく勉強させていただいております。 つぎのような処理をしたいのですが、うまくいきません。 1.セル1の上にある画像をセル2の上にコピーする。 2.コピーした画像をセル2の高さと幅にフィットさせる。 まず、このようなマクロを考えてみました。 Range("A1").CopyPicture Range("C1").Select ActiveSheet.Paste ActiveSheet.Shapes(Selection.Name).LockAspectRatio = msoFalse ActiveSheet.Shapes(Selection.Name).Top = Range("C1").Top ActiveSheet.Shapes(Selection.Name).Left = Range("C1").Left ActiveSheet.Shapes(Selection.Name).Height = Range("C1").Height ActiveSheet.Shapes(Selection.Name).Width = Range("C1").Width これですと元の画像がA1のセルより小さい場合、周囲に余白がある形でコピーされてしまいます。 C1にコピーしたら余白はなしでC1の大きさいっぱいに画像を引き延ばしたい(あるいは縮小したい)のです。 そこで次のように変更してみました。 (上のプログラムと一番上の行のみが違います)。 ActiveSheet.Shapes("図 6").Copy Range("C1").Select ActiveSheet.Paste ActiveSheet.Shapes(Selection.Name).LockAspectRatio = msoFalse ActiveSheet.Shapes(Selection.Name).Top = Range("C1").Top ActiveSheet.Shapes(Selection.Name).Left = Range("C1").Left ActiveSheet.Shapes(Selection.Name).Height = Range("C1").Height ActiveSheet.Shapes(Selection.Name).Width = Range("C1").Width これもうまくいきません。 A1にある元の"図 6"は動かしたくないのに、勝手にB1の位置に移動してしまいます。 というのは、"図 6"という画像をコピーすると、同じ名前で画像ができちゃうんですね。 コピー元とコピー先の両方の画像に対して位置や高さを設定することになるようです。 ということで、 1.セル1の上にある画像をセル2の上にコピーする。 2.コピーした画像をセル2の高さと幅にフィットさせる。 これを実現させるにはどうしたらいいでしょう。

  • 描画した Line 番号の取得方法

    描画した Line 番号の取得方法 VB6 Excel,2000 線をVBで2本引き、その線をグループ化させようと考えています。 下記コードの Range(Array("LIne " & 線A, "LIne " & 線B))に 2本引いた線の番号を入れたいのですが引いた線のLine番号を 取得する方法が分かりません、宜しくお願いします。 Dim xlApp As Excel.Application Set xlApp = GetObject(, "Excel.Application") xlApp.ActiveSheet.Shapes.AddLine 50, 50, 100, 100 '線A xlApp.ActiveSheet.Shapes.AddLine 100, 50, 50, 100 '線B xlApp.ActiveSheet.Shapes.Range(Array("LIne " & 線A, "LIne " & 線B)).Select xlApp.Selection.ShapeRange.Group.Select Set xlApp = Nothing

  • VBAのGroup化について

    お世話になります。以下のマクロがうまく動きません。 ------------------------------------------------- Dim objShp1 As Shape For Each objShp1 In ActiveSheet.Shapes If objShp1.Name = "Picture 3" Then ActiveSheet.Shapes.Range(Array("A", "B", "Picture 3")).Select Selection.ShapeRange.Group.Select Selection.ShapeRange.ThreeD.RotationX = -180 Selection.ShapeRange.IncrementLeft 0 Selection.ShapeRange.IncrementTop 0 Else ActiveSheet.Shapes.Range(Array("A", "B")).Select Selection.ShapeRange.Group.Select <---------(1) Selection.ShapeRange.ThreeD.RotationX = -180 Selection.ShapeRange.IncrementLeft 0 Selection.ShapeRange.IncrementTop 0 End If Next ------------------------------------------------- このマクロは全体の一部分になりますが、(1)のところでエラーになります。 どこが間違っているのか、さっぱりわかりません。 すみませんが、お助けいただければ幸いです。

  • Excel 2010マクロで挿入した画像に名前が付けられない!

    Excel 2010マクロで挿入した画像に名前が付けられない! Excel 2002で作成・使用していた画像挿入修正マクロを、Excel 2010で実行したところ、 下記プログラムの下から二行目の「ActiveSheet.Shapes(na11).Name = "ga1"」部分で 「指定したコレクションに対するインデックスが境界をこえています」とのことで エラー!になります。 na11 = Selection.ShapeRange.ZOrderPosition ActiveSheet.Shapes(na11).Name = "ga1" 上記の部分のみを、Excel 2010で実行すると正常に作動します。 原因がわかりません。ご指導よろしくお願いいたします。 ※下記プログラムの「¥」は文字化けするため、全角に置き換えております。 ------------------------------------------------------ ' 画像(1)を自動配置する If Range("AQ18").Value = 0 Then Else san = Range("DA17").Value san2 = Right(san, Len(san) - InStrRev(san, "-") + 1) d = Left(san, Len(san) - Len(san2)) myPath = pa & "¥" & a & "¥" & a & " " & b & " " & k & "¥" & d & "¥" & d & "-PHOTO" & "¥" & d & "_web" Range("H42").Select ActiveSheet.Pictures.Insert(myPath & "¥" & san).Select ' 画像(1)を縮小し、名前を付ける Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Width = size1 Selection.ShapeRange.Rotation = 0# na11 = Selection.ShapeRange.ZOrderPosition ActiveSheet.Shapes(na11).Name = "ga1" End If --------------------------------------------------

  • エクセル VBA 画像操作

    VBAについて質問です。 画像を何枚かを重ねて、シート上に置いてあります。 VLOOKUPにて、画像番号を獲得して、その番号の画像を最上面へ移動させたいのですが ActiveSheet.Shapes.Range(Array("Picture 201")).Select ActiveWindow.SmallScroll ToRight:=-342 Selection.ShapeRange.ZOrder msoBringToFront ActiveSheet.Shapes.Range(Array("Picture 221")).Select ActiveWindow.SmallScroll ToRight:=-342 Selection.ShapeRange.ZOrder msoBringToFront ActiveSheet.Shapes.Range(Array("Picture 215")).Select ActiveWindow.SmallScroll ToRight:=-342 Selection.ShapeRange.ZOrder msoBringToFront ("Picture 215")の部分を、セルの値で変更したいのですが どうか、お力お貸しください。 よろしくお願いします。

  • エクセルVBAで、図の挿入をして図のフルパスを取得したい

    Excel97, Windows98SEを使用しています。 写真パス = Application.GetOpenFilename ActiveSheet.Pictures.Insert(写真パス).Select で、図の入っているフルパスを取得して、挿入しているのですが、 これだと図のファイルを選択する際にプレビューが出てきません。 「図の挿入」ダイアログから図を挿入し、その図のフルパスを 取得できる方法がありましたら教えて下さい。 よろしくお願いいたします。

  • 配列から値を取得する方法。

    配列から野菜の名前を取得して表示する方法を教えてください。 取得したい野菜の名前の番号はひとつずつ改行で区切って テキストファイル(*.txt)に保存しています。 例↓ 22 484 Array ( [0] => Array ( [no] => 22 [name] => とまと ) [1] => Array ( [no] => 1508 [name] => かぼちゃ ) [2] => Array ( [no] => 5482 [name] => せろり ) [3] => Array ( [no] => 1813 [name] => にんじん ) [4] => Array ( [no] => 54118 [name] => ナス ) [5] => Array ( [no] => 484 [name] => レタス ) )

    • ベストアンサー
    • PHP
  • VBAで、エクセルワークシート上の図を選択・削除したい

    VBAで、ワークシート上の図をすべて選択して削除するのは、どのように書いたら良いでしょうか?実際の図は一つなのですが、オートマクロで記述すると、 ActiveSheet.Shapes.Range(Array("Picture 3").Select のように、番号が変わってしまいます。

  • シート上にある図の名前をすべて取得したいのですがど

    シート上にある図の名前をすべて取得したいのですがどうすればいいでしょうか? エクセルVBのAコードを教えてください。 ********************************* Sub すべての図の名前を取得する() Dim i As Long For i = 1 To 図の数 Debug.Print 図.Name Next i End Sub ********************************* みたいなイメージは沸くのですがこれ以上わかりません。 ご教授よろしくお願いします。