
過去に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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】数式を入力したい。...
-
同じ名前(重複)かつ 日本 ア...
-
if関数の複数条件について
-
excel
-
エクセルでフィルターした値を...
-
エクセルシートの見出しの文字...
-
表計算ソフトでの様式の呼称
-
Dir関数のDo Whileステートメン...
-
エクセルに写真が貼れない(フ...
-
エクセルのライセンスが分かり...
-
【関数】3つのセルの中で最新...
-
【関数】=EXACT(a1,b1) a1とb1...
-
【Officer360?Officer365?の...
-
エクセルの文字数列関数と競馬...
-
LibreOffice Clalc(またはエク...
-
【マクロ】【画像あり】4つの...
-
【マクロ】【画像あり】4つの...
-
セルにぴったし写真を挿入
-
オートフィルターの絞込みをし...
-
エクセルの複雑なシフト表から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スクリーンショットをエクセル...
-
gooメモで写真がく上げれま...
-
ブログの画像サイズについて。...
-
Livedoorブログで写真、文章が...
-
画像リンクを別ウインドウでサ...
-
Gooブログの画像を大きく出来ま...
-
ブログの写真サイズ
-
画像のサイズとは? KBの数...
-
プログの写真取り込み
-
ブログ作成に、ワードプレスを...
-
goo blog 画像サイズ
-
ImageMagickでの画像サイズ取得
-
画像のサイズ
-
iPhoneのアプリ(新)のアップ...
-
FC2ブログのサムネイルサイズ変更
-
このアプリの質問に回答する時...
-
写真を1メガ以内にする方法を教...
-
gooブログの画像の貼り付け
-
fc2ブログのヘッダーの画像変更
-
ペイントで画像の一分を切り取...
おすすめ情報