マクロ初心者です。
下記のコードはグーグルで検索してコードの継ぎ接ぎで作成しています。
処理内容は
【sub 画像 の処理について】
1、指定フォルダからフォルダ内の画像をすべて開く。
2、開いた画像名をセル「ax1」~順番に記入
3、画像は適当なところに貼り付ける
【sub 名前変更の処理について】
1、アクティブシートの画像をすべてに名前の変更を1からナンバリングする。
上記のような処理を行いたいのですが、
【画像】マクロを実行し【名前変更】の処理をすると
エクセル画面の「名前ボックス」セル番号とか表示される内容は
画像保存名のままでナンバリングできません。
オブジェクトだからなのでしょうか?
説明不足で恐縮ですがアドバイスをお願いします。
Sub 画像()
Dim strFileName As String, dirPath As String
Dim Obj As Object
Range("Ax1").Activate
dirPath = "C:\Users\画像\"
strFileName = Dir(dirPath & "*.JPG")
Do Until strFileName = ""
ActiveSheet.Pictures.Insert(dirPath & strFileName).Select
ActiveCell.Value = strFileName
ActiveCell.Offset(1, 0).Activate
strFileName = Dir()
Loop
End Sub
----------------------------------------------
Sub 名前変更()
Const conName As String = ""
Dim c As Long
Dim objShape As Object
For Each objShape In ActiveSheet.Shapes
If objShape.Type = msoPicture Then
c = c + 1
objShape.Name = conName & c
End If
Next
End Sub
No.2ベストアンサー
- 回答日時:
>→回答を頂いたように、パス名と画像ファイルをしているのでリンク画像という扱いになります。
であれば、
If objShape.Type = msoPicture Then
は、
If objShape.Type = msoLinkedPicture Then
となります。
msoPictureは、画像です。
msoLinkedPictureは、リンク画像です。
つまり、リンク画像の場合、If objShape.Type = msoPicture Then はFalseとなり
c = c + 1
objShape.Name = conName & c
が実行されません。
ちなみに、画像を挿入時に名前を変える場合と後から変える場合では
実際の処理結果に違いが出ます。
すでに、名前が存在した場合は、どうするかとか、、、
後からなら、既存のシェイプも条件を通れば、リネームされることになります。
このあたりの仕様を検討してプロセスを考えると良いかと思います。
ちなみに、後からシートにある画像に対してリネームを行うなら
同じモジュールにある場合。
Loop
Call 名前変更
End Sub
でOKかと、、
また、挿入時なら
Const conName As String = ""
Dim c As Long
Range("Ax1").Activate
strFileName = Dir(dirPath & "*.JPG")
Do Until strFileName = ""
ActiveSheet.Pictures.Insert(dirPath & strFileName).Select
c = c + 1
Selection.Name = conName & c ’ここでリネーム
ActiveCell.Value = strFileName
ActiveCell.Offset(1, 0).Activate
strFileName = Dir()
Loop
エラー対策が必要になるかと、、、
ファイルを選択して、、、ならファイルピッカー FileOpenPicker
フォルダ内すべてなら、、、フォルダピッカーを FolderPicker を使うと良いでしょう。
No.3
- 回答日時:
投稿して気が付きました。
13などの番号が間際らしかったのですね。
Shapeの種別に関する参考サイトです。
https://www.relief.jp/docs/excel-vba-list-msosha …
No.1
- 回答日時:
こんにちは、
>画像保存名のままでナンバリングできません。オブジェクトだからなのでしょうか?
If objShape.Type = msoPicture Then は、画像ならとなっていますが、貼り付けたjpgは画像(13)と確定していますか?
>ActiveSheet.Pictures.Insert(dirPath & strFileName).Select リンク画像 (11)になっているのではないでしょうか?
リンク貼り付けが問題になる場合は、貼り付け方を検討する必要があると思います。
このまま、リネームするのであれば、Typeを確認してみてはいかがでしょう。
Const conName As String = ""
Dim c As Long
Dim objShape As Object
For Each objShape In ActiveSheet.Shapes
Debug.Print objShape.Type ’を追加してイミディエイトウィンドウで確認(msoPictureは13です。)
If objShape.Type = msoPicture Then
c = c + 1
objShape.Name = conName & c
End If
Next
Qchan1962さん丁寧な回答ありがとうございます。
無事に自分のしたいマクロを組むことに成功しました。
説明不足なところが多くお手数をお掛けしました。
また近いうち質問することがあると思うので、
その際はまたよろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【EXCEL VBA】ダブルクリックで...
-
同じ画像を複数回表示させる
-
UWSCについて
-
画像のピクセルデータの取得
-
VBAのユーザーフォームのイメー...
-
jqueryスライダーを2段でスライ...
-
背景画像の繰り返しについて
-
【VBA】Excel2016で画像を一括...
-
vb.net 画像の透過について
-
VC++6.0でGDI+利用してメモリリ...
-
決められた4つの座標をランダム...
-
EXCEL VBA 複数のImageコントロ...
-
スマホでサイトの画像を長押し→...
-
UWCSでのランダムクリック入力...
-
HTMLで画像をポップアップで表...
-
UWSC 画像判定と条件分岐について
-
UWSC「画像が無い場合」
-
画像ファイルのストリーミング取得
-
画像中の一番手前の物体をエッ...
-
画像処理したBitmapをピクチャ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
背景画像の繰り返しについて
-
Excel ユーザーフォームで表示...
-
EXCEL VBA 複数のImageコントロ...
-
uwcs のマクロで画像認識をして...
-
VBAのユーザーフォームのイメー...
-
UWSC 画像判定と条件分岐について
-
【WPF】画像の切り替え
-
「using Windows」でエラーが出る
-
gif 画像上の ボタンに リン...
-
jqueryスライダーを2段でスライ...
-
同じ画像を複数回表示させる
-
UWSC「画像が無い場合」
-
UWSCでループ処理がうまくいき...
-
UWSCの色判定
-
【EXCEL VBA】ダブルクリックで...
-
画像のビット数を変更する方法
-
VBA シート毎に画像挿入
-
vb.net 画像の透過について
-
uwscの画像認識に失敗します。
-
C#で画像を他の画像に貼り付け...
おすすめ情報
早速の回答ありがとうございます。
>画像保存名のままでナンバリングできません。オブジェクトだからなのでしょうか?
If objShape.Type = msoPicture Then は、画像ならとなっていますが、貼り付けたjpgは画像(13)と確定していますか?
→マクロ起動後の画像は「図13」のように確定しています
>ActiveSheet.Pictures.Insert(dirPath & strFileName).Select リンク画像 (11)になっているのではないでしょうか?
→回答を頂いたように、パス名と画像ファイルをしているのでリンク画像という扱いになります。
「挿入タブ」から「画像」を複数選択するような通常動作である場合、
最初の質問のマクロ「名前変更」が実行され
開いた順番に1から10にナンバーリングされます
のようにしたいです。説明不足で申し訳ありません。