過去に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も見ています
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
同率順位の発生しないランキン...
-
毎週追加して行くセルの数値を...
-
【マクロ】シートを非表示した...
-
Excel ショートカットで列、行...
-
エクセルについて
-
ショートカットキー
-
大容量があつかえるソフトを探...
-
エクセルにて時間帯にて自動で...
-
エクセルについて
-
(マクロ)シートを保護してもマ...
-
Googleスプレッドシートで、名...
-
エクセルの関数
-
Excelの警告について
-
エクセルを使ってQRコードを作...
-
【Excel】効率的な関数式の組み...
-
if関数。半角文字や全角文字で...
-
エクセルの数式について教えて...
-
FからI列で期限切れ及び期限7日...
-
(マクロ)値を返す時は subで...
-
(マクロ)参照渡しにて、違う...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スクリーンショットをエクセル...
-
ブログに画像をUPしたいが上...
-
ココナラにて「サムネイル」と...
-
FC2ブログ 写真の大きさを縮小...
-
seesaaブログに画像が、思った...
-
FC2ブログのサムネイルサイズ変更
-
ブログ記事に画像を入れた時の...
-
gooブログを使っているのですが、
-
FC2ブログ ウィンドウを縮...
-
アメーバブログのアメンバー限...
-
wordpressのスライドにつきまして
-
スマホ用ホームページのヘッダ...
-
ブログ用に画像サイズ変換がで...
-
このアプリの質問に回答する時...
-
ワードプレス
-
Livedoorブログで写真、文章が...
-
goo簡単HP。バナーのサイズつい...
-
このマスクサイズあってないで...
-
gooブログでのサムネイル画像サ...
-
画像のサイズとは? KBの数...
おすすめ情報