過去に2度、Excel2003を利用して工事写真帳を作成する方法を質問させていただきました。最近、社内でExcel2010を使用している人が多くなり、修正した写真帳でも不具合が発生するようになり、その原因を調べているのですが同じ症例がなかなか見当たりません。そこで今回もまたお知恵を拝借したいと思い投稿しました。
【仕様】工事写真帳は複数シート構成、1シートはA4サイズで縦に3枚の画像が読み込めます。画像の右側には摘要欄があります。画像を読み込む位置をダブルクリックするとセルのサイズ(写真サイズにしてあります)を取得して画像サイズを変更して格納します。
【問題点】一度保存したファイルを開くと画像がぼける。図の書式設定の[サイズ]を確認すると、サイズと角度の高さ=9.59cm、幅=13.69cm(読み込むセルのサイズ)、原型のサイズの高さ=0.38cm、幅=0.42cmとなっています。元の画像サイズは640×480なので、マクロを実行中、どこかのタイミングで画像の一部をトリミングし、縦横サイズを小さくした画像をセルサイズにまで拡大していることが原因だということまではわかりました。ただ、すべてのシートがこの状態なわけではなく、正常に表示されているシートもあります。この場合も画像のサイズと角度の高さ=9.59cm、幅=13.69cm(読み込むセルのサイズ)、原型のサイズの高さ=9.59cm、幅=13.69cmと元の画像より小さくなっています。
コードは次の通りです。どこに問題があるか、ぜひアドバイスをお願いします。
Private Sub Workbook_SheetBeforeDoubleClick(ByVal sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim pict As Shape
Dim fname
With Target
If .Column <> 3 Then Exit Sub '3列目でなかったら終了
fname = Application.GetOpenFilename _
("画像ファイル,*.gif;*.jpg;*.bmp", 1, "画像ファイルを指定して下さい") '画像読込
If fname = False Then Exit Sub
Set pict = sh.Shapes.AddPicture(Filename:=fname, linktofile:=True, _
SaveWithDocument:=True, Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height)
pict.LockAspectRatio = False '指定された図形のサイズ比率を保持しない
pict.Placement = xlMove 'オブジェクトをセルと共に移動する
.Offset(, 3).Select '摘要欄(右へ3)へ移動
End With
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
ご呈示のコードだけだとそのようなことは起こらないようです。
また、トリミングのコードはここには無いようなので他で記述しているのではありませんか。
linktofile:=True で取り込んだ画像がサイズ縮小されて保存先のフォルダーにある画像サイズが変わったりするのかと何度も調べてみたのですが、調べた限りでは何の変化もみられませんでした。
なお、そのままのコードでは2010版で実行できず、少し修正して調べました。
時間を割いて調べてくださり感謝いたします!
VBAはネットで調べたコードをアレンジして使ったり、今回のように質問し、いただいた回答をそのまま使っているレベルなので詳しくはないのですが、質問に記載したコードは[コードの表示]-「ThisWorkbook」に記述されているものをすべてコピー&ペーストしたものです。
問題点に心あたりがあると言えば、もともとExcel2003で作成した写真帳をExcel2010で開き、[名前を付けて保存]でExcel2010で保存したものをフォームとして運用しているからかな~?というくらいなんですが…。
linktofile:=Trueについて調べたところ、『Trueで元のファイルとのリンクを設定、Falseで独立した画像』とあったのですが、これは元画像が保存されているPC以外でファイルを開く場合にはFalseとした方が良いのでしょうか?
「Module」にかかれたコードの場合、F8(ステップイン)で一行ずつ変数の値などを確認するのですが、「ThisWorkbook」はできない?のでどこに問題があるのかわからない状況です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スクリーンショットをエクセル...
-
Excel2010マクロ/挿入した画像...
-
グーグルドライブ、勝手に共有...
-
【ExcelVBA】各セルをダブルク...
-
line
-
QRコードを保存する方法を教え...
-
Google マップのマイマップの移行
-
メールをwordに変換して保存したい
-
ギガファイル便のアップロード...
-
JPG画像をDVDプレーヤー...
-
エクセルVBAを使用し、指定のパ...
-
Outlook:予定表アイテ...
-
Windows7で画像を印刷すると、...
-
TIF JPGの画像回転ソフト
-
画像をペイントでモザイクして...
-
ブログの絵文字の出し方が分か...
-
ネット上の画像を壁紙にする方法
-
GoogleドライブOCR機能が使えな...
-
強制終了で消えたメモ帳の内容...
-
Excelで作成したファイルをOneD...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スクリーンショットをエクセル...
-
アメーバブログのアメンバー限...
-
FC2ブログ 写真の大きさを縮小...
-
画像を出来るだけ劣化させない...
-
画像リンクを別ウインドウでサ...
-
みなみけ待ち受け画面
-
fc2ブログのヘッダーの画像変更
-
Livedoorブログで写真、文章が...
-
このマスクサイズあってないで...
-
Excel2010マクロ/挿入した画像...
-
FC2ブログのサムネイルサイズ変更
-
スマホ用ホームページのヘッダ...
-
Macのプレビューを使い、PDF内...
-
ライブドア ブログ 画像
-
ファインピクス撮った画像を小...
-
グーグルドライブ、勝手に共有...
-
line
-
【ExcelVBA】各セルをダブルク...
-
QRコードを保存する方法を教え...
-
外国人のコメント欄でよく、コ...
おすすめ情報