• ベストアンサー

VB6 指定したセルの画像のサイズ変更

お世話になります すでにエクセルに画像が複数張り付けられている状態で、 指定したセルに存在している画像のサイズのみ変更したいのですが、 皆目見当がつきません。 色々調べると、新規に張り付けた時の処理は見つかるのですが、 今回の様に、すでに存在していて、かつ、一括ではない場合のサンプルを見つけられませんでした。 判っている条件は以下となります 1.画像はJpeg形式で張り付いています 2.サイズは全て異なります 3.張り付いているセルの位置は全て判っています    ⇒ Cells(5,10) Cells(10、10)・・・・・ 4.画像はセルより大きく、複数のセルにまたがって張り付いております 5.サイズ変更はアスペクト比を保ったまま変更 6.画像の重なりはございません ActiveSheet.Cells(YY1, XX1).Selectまでは何となく理解できております

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

  • ベストアンサー
回答No.1

こんばんは。 ご要望のプログラミングのポイントは2つあると思います。 1)レンジ・オブジェクトから画像オブジェクトは参照できないので、レンジ(セル)から直接画像を指定することはできないです。 画像オブジェクトのセル・プロパティを1つずつ調べて、指定のセルに存在するかどうか、探索しなければなりません。 2)サイズの変更は、shapeオブジェクトのScaleHeight(高さ),ScaleWidth(幅) メソッドを使います。 両方を同じ倍率で変更すれば、縦横比を保ってサイズを変えられます。 下にプログラム例を記述します。 画像のあるセルと、倍率を引数で指定して呼び出すサブプロシージャです。 引数 rg は、画像の存在する左上のセルのレンジを指定します。 引数 z は変更する倍率を倍精度数で指定します。 ”Worksheets("****")” のアスタリスク部は、検索するシート名に変更してください。 (すみませんが、急いで作ったためプログラムの動作確認はできておりません。ご自分で確認をお願いします。) お試しくださいマセ。 Sub PictureZoom(rg as Range,z as Double) Dim shp as Shape Dim nme as String For Each shp In Worksheets("****").Shapes '指定セル上の画像を探す If shp.TopLeftSell.Address = rg.Address then nme = shp.Name Exit For End If Next 'サイズ変更 Set shp=Worksheets("****").Shapes(nme) shp.ScaleHeight z, msoFalse shp.ScaleWidth z, msoFalse set shp=Nothing End Sub

usami33
質問者

お礼

お礼が遅れてすみませんでした。 教えていただいた内容をもとに改良して、無事作成することが出来ました アドバイスありがとうございました。

関連するQ&A

  • VB6での画像のサイズ変更に関して

    お世話になります VB6での画像のサイズ変更に関して教えていただけないでしょうか 機能としては、画像を読み込み、指定サイズ枠内のサイズで一旦フォームに表示して画像を確認 問題なければ、エクセルに保存なのですが フォーム表示時にサイズを変更したにも関わらず、 エクセルに保存すると、元画像のサイズで保存されてしまいます。 表示と保存を同じtwip幅にするにはどのようにしたらよろしいでしょうか ******** 画像読み込み&リサイズ抜粋 Me.CDialog.CancelError = True Me.CDialog.Flags = cdlOFNExplorer + cdlOFNLongNames + cdlOFNHideReadOnly + cdlOFNNoChangeDir + cdlOFNFileMustExist Me.CDialog.Filter = strMessage(33) & "(*.jpg;*.bmp)|*.jpg;*.bmp" Me.CDialog.Filename = "" Me.CDialog.ShowOpen Me.CDialog.Flags = 0 If Err Then Err.Clear On Error GoTo 0 Exit Sub End If If Trim(Me.CDialog.Filename) = "" Then On Error GoTo 0 Exit Sub End If ' 画像の比率を保って、画像をセットする Me.PImage(Index).Stretch = False ' 一旦元の大きさで読み込み指定 Me.PImage(Index).Visible = False ' 一旦非表示にする Me.PImage(Index).Picture = LoadPicture(Me.CDialog.Filename) ' 縦方向基準縮尺変更 If Me.PImage(Index).Height > Report_PImageHei Then Me.PImage(Index).Stretch = True HWTemp = Me.PImage(Index).Height Me.PImage(Index).Height = Report_PImageHei Me.PImage(Index).Width = Me.PImage(Index).Width * Me.PImage(Index).Height / HWTemp End If ' 横方向基準縮尺変更 If Me.PImage(Index).Width > Report_PImageWid Then HWTemp = Me.PImage(Index).Width Me.PImage(Index).Stretch = True Me.PImage(Index).Width = Report_PImageWid Me.PImage(Index).Height = Me.PImage(Index).Height * Me.PImage(Index).Width / HWTemp End If ********* エクセルへの出力抜粋(上記と別関数) Clipboard.Clear Clipboard.SetData Me.PImage(i).Picture WB.ActiveSheet.Cells(YY1, XX1).Select WB.ActiveSheet.Paste pict = Selection.Name Clipboard.Clear

  • 画像のサイズ変更

    こんにちは。 似た内容の質問がいくつかありましたが少し内容が違いますので ご了承ください。 現在、デジカメで撮影した画像をパソコンに取り込み、HPにアップする 為に現サイズ1600×1200pixelある画像を全て450pixelに サイズ変更しています。 手順としまして取り込み後、ひとつひとつをphotoshop4.0にて開き 解像度の変更で行っていますが、あまりに変更したい画像が多いため 時間がかかります。 ひとつのフォルダの中身を一括に指定したサイズに変更できる ソフトはないでしょうか? OSはXPです。形式はJPEGです。

  • デジカメ画像のサイズ変更の方法。

    Flashを利用したフォトアルバムで使用する為、 JPEGで保存してある画像を 横240ピクセル×縦180ピクセル にサイズ変更したいのです。 私のパソコンにAdobe PhotoDeluxeがインストールされていたのでそれでサイズ変更をしてみたのですが、 Jpeg形式のままの保存ができませんでした。 1、Jpeg形式のままサイズを上記サイズに変更するにはどのような方法があるでしょうか? フリーソフトなどありましたら教えてください。 2、また、複数枚の画像を一括でサイズ変更する方法もあれば教えてください。 3、横サイズの画像はよいのですが、縦の画像については240×180の白い地の上に縦型の画像を貼り付けて作らなくてはならないらしいのですが、その方法もいまいちわかりません。 一度にたくさんの質問で申し訳ありませんがよろしくお願いいたします。 説明に不備があれば補足いたします。

  • 画像サイズを変更することはできますか

    JPEG形式かGIF形式の画像のサイズを CGIで変更(縮小)することはできるのでしょうか? もし可能であれば参考ページを教えていただきたいのですが・・・ よろしくお願いしますm(_ _)m

    • 締切済み
    • CGI
  • 画像サイズをまとめて変更するソフト

    タイトルどおり画像サイズをまとめて変更するソフトを探しています 縦横比をそのままにしてです 1枚1枚変更するソフトはあると思いますがまとめてできるものを探しています 教えて下さい

  • 画像から指定サイズをトリミング

    お世話になっております。 主に、デジカメ等で撮った写真から携帯の待ち受け用にトリミングするツールを探しております。 いろいろ試してみたのですが、使いやすいものが見つかりません。 私の所望するイメージとしては 画像読み込み  ↓ 予めトリミングサイズを指定 …★  ↓ 画像上に指定したサイズのトリミングフレームが現れる (元画像上でドラッグ&ドロップにより動かすことが可能)…★  ↓ アスペクト比を保存したまま元画像の拡大・縮小可 (このときフレームは影響を受けずそのまま)…★  ↓ 拡大縮小と切り出し場所を調整し、切り出し実行 ★マークのあるところが特に望んでいる機能です。 以前のバージョンの「簡易待ち受け画像メーカー」というツールでは、これが出来た気がしたのですが、 現在のバージョンは3つ目の機能が無くなり、拡大縮小が縦方向・横方向独立になってしまっている模様でした(しかも微調整なので、大きく変更したいときは面倒?)。 もし適当なツールをご存知でしたらご教授下さい。 よろしくお願い致します。

  • JPEG画像を一度にサイズを変更したい

    100くらいのJPEG画像を一度に一定の小さいサイズを変更したいのですが…よろしくお願いします。

  • 画像ファイルのサイズ変更

    CGI(PERL)を使用して、画像データ(JPEG,GIFなど)のサイズ(ファイルサイズも変わるかな。)を変更して,サーバーに保存したいと考えています。どなたかヒントだけでも,お願いします。

  • 動画、アスペクト比を維持でのサイズ変更は?

    関係無いかも知れませんがOSはビスタで 動画でのアスペクト比を現状維持で サイズを変更する方法を教えて頂きたいんです 正確に言うと、サイズが違う物に対しては 左右に黒いラインを入れて調節したいんですが その計算方法が知りたいんです 私はネットからDL(ダウンロード)した動画を よく編集するんですが DLした複数の動画を切り出し結合するのに 『Avidemux』を使用してます ただ、当然ですがDLした場合 動画ごとにサイズが違う為 『Avidemux』でも、そのままだとサイズが違うから 編集出来ないと言うエラーが出て出来ません そこで少し工夫して、一旦『Avidemux』で 一定のサイズに調整して出力 それを再編集で結合しようと考えました 尚、この状態だけでは再編集は不可能なんですが その件は、今回の質問では該当しないんで省かせて頂きます しかし、当然の事ながら この様にサイズを変更すると、アスペクト比は崩れる訳ですが それを左右に黒いラインを入れて調整したいと言う事なんです これは例えば…なんですが、テレビ番組で例えると シリーズで放送した番組を結合したい場合で言うなら 水戸黄門で、印籠シーンを特集したと仮定します しかし、最近の放送は16:9のアスペクト比ですが 昔の映像は4:3です、そうすると もしネットからDLした動画で、これを結合しようとすると 当然ですがサイズが違う場合が多いですから それを上記で書いた様な特定のサイズに変更 しかしサイズを変更するとアスペクト比が崩れますから アスペクト比を現状維持と考えると 左右に黒いラインを入れて調整したいと言う事なんです つまり、地デジテレビで現在の放送を見ると 画面に丁度画面に合いますが アナログ時代の放送を見ると、左右に黒いラインが入り 但し、アスペクト比は現状維持で見れる訳で それを同じ様な編集を『Avidemux』で実行したいんです ただ、ここで問題なのが 『Avidemux』で出力するサイズに関しては一定してますが 当然の事ながら、ネットからDLする動画のサイズは様々です 但し、多いのは拡大扱い…つまり DLする動画の方がサイズが小さい事が多いんですが まれにDL動画の方が大きい事も考えられます それで、どの様なサイズでも調整出来る様に 黒いラインの数字を計算する方法を教えて下さい

  • 大量の画像ファイルのサイズを変更するソフト

    大量の画像を一気に変更したいです。 いろんな横×縦のサイズの画像があるのですが、すべての画像の縦横比を統一にして、横を100ピクセルにする ことができるソフトってありますか? もし知っている方がいらっしゃいましたらよろしくお願いします。