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

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

このQ&Aのポイント
  • Excel VBAを使用して、挿入した図の名前を取得する方法について教えてください。
  • 挿入した図の名前を変更するために、挿入時に自動で付けられる名前を取得する必要があります。
  • 最背面の図の名前を表示するコマンドや図挿入直後の選択状態の間に有効なコマンドはあるものの、目的に合った名前の取得方法がありません。

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

  • ベストアンサー
  • kon555
  • ベストアンサー率52% (1761/3379)
回答No.1

2の”Selection.Name”コマンドを、ボタン押し以外で起動するのはダメですか? https://zenn.dev/masahiro_toba/articles/dacbcc6424dfeb#

ken-nosuke
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

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

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

ken-nosuke
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

下記は、あまり詳しくはない者の言うことですが、 「図の名前」というのは、(対応した位置に)ラベルでも設けて、(見る人のために)内容をテキストで表示するものしかないのでは? 質問で言っているのは、その画像の由来・出所のファイルのある場所とファイル名ではないかと察するが、これは、挿入をVBAでして、そのVBAコードでも残ってないと、判らないのでは。 WEBなどの中の写真等は、HTML文の中に出所=見に行って持ってくるデータのあり場所=実体のあり場所が残っていると思うが。 ーー WEB記事にあった、シートの写真についての、 Sub 処理の名前取得() MsgBox Selection.Name End Sub Sub 表示の名前取得() MsgBox Application.Caller End Sub ーーー も要領を得ない。 画像挿入のVBAの Sub test01() Worksheets("Sheet1").Pictures.Insert "C:\Users\XXXX\Pictures\PC0406666.JPG" End Sub の引数部分は、VBAでやったとして、このコードが残ってないと判らないでしょう。 残っていても、どれがどれかの対応も割り出さないと判らないだろう。 ーー この情報は、エクセルブック情報として、(保存して)あってもよさそうに思うが、今は小生レベルでは、「無い」としか知らない。 WEB情報が見つけにくいと、以前から思っている事項です。

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 ********************************* みたいなイメージは沸くのですがこれ以上わかりません。 ご教授よろしくお願いします。

専門家に質問してみよう