質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1352閲覧

Shapes.AddPicture メソッドで画像で見えなくなる罫線を見えるようにしたい

hokosugi

総合スコア63

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/01/29 23:11

Shapes.AddPictureメソッドで画像を張り付けると下のサンプル画像のようにtop/left側の罫線が見えなくなってしまいます(写真No.15~18まで分かりやすいよう白紙の写真を張り付けました)。

写真No.15~18まで

vba

1 2Set objShape = a_sheet.Cells(k, "B").Parent.Shapes.AddPicture( _ 'a_sheetはエクセルシート 3 Filename:=pict, _ 'pictは画像 4 LinkToFile:=False, _ 5 SaveWithDocument:=True, _ 6 Left:=a_sheet.Cells(k, "B").Left, _ 7 Top:=a_sheet.Cells(k, "B").Top, _ 8 Width:=a_sheet.Cells(k, "B").MergeArea.Width, _ 9 Height:=a_sheet.Cells(k, "B").MergeArea.Height)

何か良いヒントを頂けると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

消えてしまうということは、たぶん普通の外枠罫線の左と上ですよね。

今回の場合、例えば太罫線にすることでも罫線が見えるようになると思うのですが、画像が表示されていないときの見た目はイマイチになってしまいます。

というわけで、今の罫線のまま罫線が見えるようにしたいのなら、画像の位置とサイズを調整して貼り付ける必要があります。


提示いただいたコードでは、画像の貼り付け座標(TOP/LEFT)は対象セルのTOPとLEFTに合わせています。
また画像の大きさ(WIDTH/HEIGHT)も、結合セルの大きさに合わせています。

つまりセルの左上ピッタリに、セルと同じ大きさの画像を貼り付けているんですね。
画像が罫線に被って見えないのはこのためです。

ですので、貼り付ける位置を少し右、少し下にずらしてあげれば罫線が見えるようになります。

Dim rng As Range Set rng = Cells(k, "B") Set objShape = rng.Worksheet.Shapes.AddPicture( _ Filename:=pict, _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=rng.Left + 1, _ Top:=rng.Top + 1, _ Width:=rng.MergeArea.Width, _ Height:=rng.MergeArea.Height)

ただし、これだけでは今度は下と右の罫線に画像が被ってしまいます。
ですので、ずらした分だけ大きさも小さくしてあげましょう。

Dim rng As Range Set rng = Cells(k, "B") Set objShape = rng.Worksheet.Shapes.AddPicture( _ Filename:=pict, _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=rng.Left + 1, _ Top:=rng.Top + 1, _ Width:=rng.MergeArea.Width - 1, _ Height:=rng.MergeArea.Height - 1)

これで画像は少しだけ小さくなりますが、きれいにセルの内側ピッタリになると思います。

参考になれば幸いです。

投稿2019/01/30 05:30

jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hokosugi

2019/01/30 07:20

ご回答ありがとうございます。 なるほど、top,left,width,heightはsingle型だからピクセル単位で調整できるのですね。 実際実行して罫線が見えるようになりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問