Excel VBA質問箱 IV

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

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


75733 / 76738 ←次へ | 前へ→

【5437】Re:シートのJPEGファイル作成
回答  bykin  - 03/5/13(火) 22:07 -

引用なし
パスワード
   こんばんわ。

>実は、印字内容は縦方向の印刷内容で、JPEGを印刷したときにA4の縦用紙で印字できるように
>イメージを保存したいのです。
>これを
>>    Worksheets(JPG_Sheet).Range(JPG_Sele).CopyPicture xlPrinter
>>    Worksheets(JPG_Sheet).Range(JPG_Sele).CopyPicture xlScreen, xlBitmap
>に変更をすると印字方向は良いのですが、中身が真っ白です。
>なんでやろ?

最初この文章読んだとき、何のこっちゃ判らんかってんけど、実験してみて判りました。
A4縦サイズのセル範囲を対象にして実行してみても、コピーした図が小さく貼り付いてしもて
出力されるJPEGも横長の小さいもんになってまうんやね。

で、いろいろ実験してみたけど、これはエクセル君をちょっとびっくりさせんとあかんみたいです。
びっくりってのは、OnTime メソッドを使って外部から操作するってこと。
コードの記述は合ってるはずやのに、なぜか言うこときかんエクセル君に無理やり処理させるために、
わてがときどき使う奥の手です(^^;;

で、コード考えてみました。データを渡すのにモジュールレベルの変数を使ってます。

Private TempSheet As Worksheet
Private TargetArea As Range
Private TargetChart As ChartObject
Private CurrentSheet As Worksheet

Sub test()
  Dim JPG_Sheet As String
  Dim JPG_Sele As String
  
  JPG_Sheet = "Sheet1"
  JPG_Sele = "A1:I51"
  Set TargetArea = Worksheets(JPG_Sheet).Range(JPG_Sele)
  Set CurrentSheet = ActiveSheet
 
  With Application
    .ScreenUpdating = False
    TargetArea.CopyPicture xlPrinter
    Set TempSheet = Worksheets.Add
    With TempSheet
      Charts.Add.Location Where:=xlLocationAsObject, Name:=.Name
      Set TargetChart = .ChartObjects(1)
      With TargetChart
        .Border.LineStyle = xlLineStyleNone
        .Height = TargetArea.Height + (.Chart.ChartArea.Top) * 2
        .Width = TargetArea.Width + (.Chart.ChartArea.Left) * 2
      End With
    End With
    CurrentSheet.Activate
    .OnTime Now(), "test_main"
  End With
End Sub

Sub test_main(Optional ByVal Dummy As Boolean)
  With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
    TempSheet.Activate
    With TargetChart
      .Chart.Paste
      .Height = Selection.Height + (.Chart.ChartArea.Top) * 2
      .Width = Selection.Width + (.Chart.ChartArea.Left) * 2
      .Chart.Export Filename:="C:\Test.jpg", FilterName:="JPG"
    End With
    TempSheet.Delete
    CurrentSheet.Activate
    .DisplayAlerts = False
    .ScreenUpdating = False
  End With
End Sub

一応これでうまいこといってると思うねんけど・・・

test_main の (Optional ByVal Dummy As Boolean) ってのはマクロ実行ダイアログに
マクロが表示されないようにするための・・・奥の手(^^;;

うまいこといかんかったらかんにんな。
ほな。
5 hits

【5364】シートのJPEGファイル作成 ねこぽん 03/5/8(木) 13:31 質問
【5371】Re:シートのJPEGファイル作成 bykin 03/5/8(木) 22:25 発言
【5392】Re:シートのJPEGファイル作成 ねこぽん 03/5/9(金) 16:58 お礼
【5393】Re:シートのJPEGファイル作成 こう 03/5/9(金) 18:49 回答
【5413】Re:シートのJPEGファイル作成 ねこぽん 03/5/12(月) 11:25 お礼
【5416】Re:シートのJPEGファイル作成 bykin 03/5/12(月) 13:00 回答
【5430】Re:シートのJPEGファイル作成 ねこぽん 03/5/13(火) 13:02 お礼
【5411】Re:シートのJPEGファイル作成 bykin 03/5/11(日) 18:43 回答
【5414】Re:シートのJPEGファイル作成 ねこぽん 03/5/12(月) 11:36 お礼
【5422】Re:シートのJPEGファイル作成 bykin 03/5/12(月) 22:38 回答
【5431】Re:シートのJPEGファイル作成 ねこぽん 03/5/13(火) 14:19 お礼
【5437】Re:シートのJPEGファイル作成 bykin 03/5/13(火) 22:07 回答
【5439】Re:シートのJPEGファイル作成 bykin 03/5/14(水) 0:05 発言
【5449】Re:シートのJPEGファイル作成 ねこぽん 03/5/14(水) 15:16 お礼

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