Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2162 / 13645 ツリー ←次へ | 前へ→

【69598】エクセルに貼りつけてある画像をコピーしたい takataka 11/8/6(土) 7:47 質問[未読]
【69600】Re:エクセルに貼りつけてある画像をコピー... かみちゃん 11/8/6(土) 9:23 発言[未読]
【69608】Re:エクセルに貼りつけてある画像をコピー... takataka 11/8/9(火) 18:59 お礼[未読]
【69601】Re:エクセルに貼りつけてある画像をコピー... UO3 11/8/6(土) 18:07 回答[未読]
【69609】Re:エクセルに貼りつけてある画像をコピー... takataka 11/8/9(火) 19:03 お礼[未読]

【69598】エクセルに貼りつけてある画像をコピーし...
質問  takataka  - 11/8/6(土) 7:47 -

引用なし
パスワード
   沢山のエクセルファイルがあって、すべてが特定のシート(仮に"sheet1")のE5セルに画像が貼りつけてあります。
この画像は縮小や拡大がされていますが、その%をmsgboxで表示し、確認後、エンターキーを押すと、100%にして、コピー(ctl+c)処理をするようなプログラムはできないでしょうか?
その後は、フォトショップに、その大きさでペイストしたいと思っています。
(こちらは、手作業で考えています)
どなたか、教えていただけませんか?
よろしくお願いします。

【69600】Re:エクセルに貼りつけてある画像をコピ...
発言  かみちゃん E-MAIL  - 11/8/6(土) 9:23 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>この画像は縮小や拡大がされていますが、その%をmsgboxで表示し、確認後、エンターキーを押すと、100%にして、コピー(ctl+c)処理をするようなプログラムはできないでしょうか?

たりあえず、以下のような過去ログは、参考になりますでしょうか?
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=57318;id=excel

【69601】Re:エクセルに貼りつけてある画像をコピ...
回答  UO3  - 11/8/6(土) 18:07 -

引用なし
パスワード
   ▼takataka さん:

こんにちは

シート上の図をデータとして取り出す、あるいは保存する方法はかみちゃんさんからご紹介がありました。
一方、図の縮小率(拡大率)について、興味がありましたので、オブジェクトブラウザで調べたり、
図を変数に格納した上で、ローカルウィンドウで、その中身を調べたりしたのですが、率、あるいは
元の図のサイズに関するプロパティは見当たりませんでsタ。で、ネットを検索してみますと、質問箱の
過去ログがありました。
www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=57952;id=excel

これをベースにして、テストプロシジャを作ってみました。
シート上の "Picture 1" という図にかんして倍率を表示し、メッセージに対して貼り付けOKなら
そのときのアクティブセルの位置に、元の大きさで貼り付けます。

なお、倍率は、本来は縦、横 それぞれ異なる可能性もありますが通常は縦横比率を維持しておられると
思いますので「横」の倍率のみを表示しています。

Sub Sample()
  Dim myW As Double, myH As Double, myRatio As Double
  Dim oW As Double, oH As Double
  
  Application.ScreenUpdating = False
  With ActiveSheet.Shapes("Picture 1")
    myW = .Width
    myH = .Height
    '図を元の大きさに変更
    .ScaleHeight 1, msoTrue
    .ScaleWidth 1, msoTrue
    oH = .Height
    oW = .Width
    .Copy
    '縮小後のサイズに戻す
    .Width = myW
    .Height = myH
  End With
  Application.ScreenUpdating = True
  myRatio = WorksheetFunction.Round(myW / oW * 100, 0)
  If MsgBox("縮小/拡大率は" & myRatio & "% です" & vbLf & _
       "アクティブセルの場所に貼り付けますか?", vbYesNo) = vbYes Then ActiveSheet.Paste
  Application.CutCopyMode = False
  
End Sub

【69608】Re:エクセルに貼りつけてある画像をコピ...
お礼  takataka  - 11/8/9(火) 18:59 -

引用なし
パスワード
   ▼かみちゃん さん:

かみちゃんさん

どうもありがとうございます。
やってみました。非常に驚いています。
助かります。
お礼が遅れてしまいすみませんでした。

後の方のご返事と組み合わせて工夫してみます。
このたびは、本当にありがとうございました。

>こんにちは。かみちゃん です。
>
>>この画像は縮小や拡大がされていますが、その%をmsgboxで表示し、確認後、エンターキーを押すと、100%にして、コピー(ctl+c)処理をするようなプログラムはできないでしょうか?
>
>たりあえず、以下のような過去ログは、参考になりますでしょうか?
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=57318;id=excel

【69609】Re:エクセルに貼りつけてある画像をコピ...
お礼  takataka  - 11/8/9(火) 19:03 -

引用なし
パスワード
   ▼UO3 さん:

どうもありがとうございました。
先の方のご提案とあわせて組み合わせで作ってみます。

大量にデータ処理をする関係もありますので、
お教えいただいたプログラムをベースに
もう少しフローを詰めてみます。

でも、大きく前進できました。
本当にありがとうございました。

今後ともよろしくお願いいたします。


>▼takataka さん:
>
>こんにちは
>
>シート上の図をデータとして取り出す、あるいは保存する方法はかみちゃんさんからご紹介がありました。
>一方、図の縮小率(拡大率)について、興味がありましたので、オブジェクトブラウザで調べたり、
>図を変数に格納した上で、ローカルウィンドウで、その中身を調べたりしたのですが、率、あるいは
>元の図のサイズに関するプロパティは見当たりませんでsタ。で、ネットを検索してみますと、質問箱の
>過去ログがありました。
>www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=57952;id=excel
>
>これをベースにして、テストプロシジャを作ってみました。
>シート上の "Picture 1" という図にかんして倍率を表示し、メッセージに対して貼り付けOKなら
>そのときのアクティブセルの位置に、元の大きさで貼り付けます。
>
>なお、倍率は、本来は縦、横 それぞれ異なる可能性もありますが通常は縦横比率を維持しておられると
>思いますので「横」の倍率のみを表示しています。
>
>Sub Sample()
>  Dim myW As Double, myH As Double, myRatio As Double
>  Dim oW As Double, oH As Double
>  
>  Application.ScreenUpdating = False
>  With ActiveSheet.Shapes("Picture 1")
>    myW = .Width
>    myH = .Height
>    '図を元の大きさに変更
>    .ScaleHeight 1, msoTrue
>    .ScaleWidth 1, msoTrue
>    oH = .Height
>    oW = .Width
>    .Copy
>    '縮小後のサイズに戻す
>    .Width = myW
>    .Height = myH
>  End With
>  Application.ScreenUpdating = True
>  myRatio = WorksheetFunction.Round(myW / oW * 100, 0)
>  If MsgBox("縮小/拡大率は" & myRatio & "% です" & vbLf & _
>       "アクティブセルの場所に貼り付けますか?", vbYesNo) = vbYes Then ActiveSheet.Paste
>  Application.CutCopyMode = False
>  
>End Sub

2162 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free