[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シート内の画像を個別に保存 指定列のセルから名前』(フリスク)
お力を貸して頂けないでしょうか?
A列に商品名、B列に商品写真が貼り付けている状態です。
B列の商品写真を個別に保存をしたい。
保存名はA列を使用。
例えば
A1 B1
リンゴ リンゴの写真
ミカン ミカンの写真
・ ・
・ ・
・ ・
・ ・
リンゴの写真をリンゴ.PNG又はリンゴ.JPGとして
指定フォルダに保存していきたい。
マクロを使用して何とか今日中に間に合わせたいのです。
皆様からのご教授をお願い致します。
< 使用 Excel:Excel2019、使用 OS:Windows10 >
ある場合にその画像を任意のフォルダに保存する
という処理でできると思うのでぜひ。
(初心者です) 2023/03/15(水) 15:57:21
沢山引っかかりどれが正解なのかわからなくなりました。
もう少しヒントを頂きたいです。
(フリスク) 2023/03/15(水) 16:18:45
これは、まさしくまるごとマクロ作成依頼ということ。
なので、>「vba 画像 取得」で検索してみて
などのアドバイスは聞き入れられません。
そういうことです。
(図星) 2023/03/15(水) 16:22:19
そうなのです。なんとか間に合わせたいのです。。
マクロに無知な私です。
ワガママな依頼という事は十二分に痛感しております。
何卒、皆様の知恵をお貸しください。
(フリスク) 2023/03/15(水) 16:28:32
ファイル名はどうにもならないけど、画像を取り出すだけなら・・・ https://teachme.jp/90980/manuals/9635165
セル範囲を画像として保存する方法はCopyPictureでできそうですが、画像だけってなるとAPI使わないと難しそう。
http://vbatips.blog37.fc2.com/blog-entry-26.html
(稲葉) 2023/03/15(水) 16:33:58
(図星) 2023/03/15(水) 16:35:44
(稲葉)様の頂いたこの知恵で閃いたのですが
ZIP返還の方法はB列の上から順に画像を抽出しimage01と連番を振っていると仮定すれば
後はファイル名を変更するフリーソフトで何とか解決できるかと思いました。
ただ確実にB列の上から順番に抽出しているという根拠があればですが。。。。
(フリスク) 2023/03/15(水) 17:01:14
>やはり地道にファイル名を変更するしかないでしょうか
地道にやれば良いんじゃないですかね、 自分の仕事だし。
(ほぼ同じ) 2023/03/15(水) 17:51:52
PowerShell経由で行けました アクティブシートのB列にシェイプがあれば、 A1のファイル名.pngでこのブックと同じフォルダ直下に保存していきます。 Sub test() Dim sp As Shape Dim pt As String pt = ThisWorkbook.Path & "\" For Each sp In ActiveSheet.Shapes If Not Intersect(sp.TopLeftCell, Range("B:B")) Is Nothing Then Call 画像保存(sp, pt & sp.TopLeftCell.Offset(, -1).Value & ".png") End If Next MsgBox "完了しました" End Sub Private Function 画像保存(sp As Shape, filepath As String) Dim cmd As String sp.Copy cmd = cmd + "Add-Type -AssemblyName System.Windows.Forms;$ImagePath = '" & filepath & "'; [Windows.Forms.Clipboard]::GetImage().Save($ImagePath, [System.Drawing.Imaging.ImageFormat]::png)" 'WScriptから、PowerShellにコマンドを渡す。260文字以内 'Command:="powershell -NoLogo -ExecutionPolicy RemoteSigned -Command " '↑がPowershellの定型文 'WindowStyle 1表示 0非表示 'WaitOnReturn True同期実行 False非同期実行 ※但し、Runの場合のみ。exeでは必ず同期実行になる With CreateObject("WScript.Shell") .Run Command:="powershell -NoLogo -ExecutionPolicy RemoteSigned -Command " _ & cmd _ , WindowStyle:=0 _ , WaitOnReturn:=False End With End Function
(稲葉) 2023/03/15(水) 18:28:16
難しく考えず標準機能でも行けた・・・ https://daitaideit.com/vba-shapes-export-picture/ Sub test() Dim sp As Shape Dim pt As String pt = ThisWorkbook.Path & "\" For Each sp In ActiveSheet.Shapes If Not Intersect(sp.TopLeftCell, Range("B:B")) Is Nothing Then Call 画像保管チャート(sp, pt & sp.TopLeftCell.Offset(, -1).Value & ".png") End If Next MsgBox "完了しました" End Sub Sub 画像保管チャート(sp As Shape, filepath As String) With ActiveSheet.ChartObjects.Add(0, 0, sp.Width, sp.Height) sp.CopyPicture Format:=xlBitmap 'オートシェイプを画像としてコピー .Chart.Parent.Select 'チャートを選択 .Chart.Paste 'チャートに貼り付け .Chart.Export filepath 'チャートを、画像として保存 .Delete 'チャートを削除 End With End Sub (稲葉) 2023/03/15(水) 20:02:19
With ActiveSheet.ChartObjects.Add(0, 0, sp.Width, sp.Height) sp.CopyPicture Format:=xlBitmap 'オートシェイプを画像としてコピー .Chart.Parent.Select 'チャートを選択 .Chart.Paste 'チャートに貼り付け .Chart.Export filepath 'チャートを、画像として保存 .Delete 'チャートを削除 End With End Sub 頂いたプログラムを1単語づつ調べまして xlBitmapをxlScreenに変更したら動きました。 原因はわかりませんが、うまく作業が終了しましたこと報告させていただきます。 返事とお礼が遅れましたこと、遅い時間まで考察して頂いたこと併せまして感謝を申し上げます。 助かりました、ありがとうございましす。 (フリスク) 2023/03/22(水) 11:16:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.