No.3ベストアンサー
- 回答日時:
> エクセル内でスクリプトを組んで、一発(スタートボタン)で出力
出来ないことは無いですよ。
エクセルでは主にVBAと呼ばれる言語を使うのですが、
要するに外部アプリケーションを起動して、貼り付けてやればOKってことです。
以下は、JTRIMを起動して、貼り付けて、Alt+F4を押して
保存するかどうか聞く、までのサンプルです。
Sub Sample()
Dim APPID As Double
Dim APPWait As Long
Selection.Copy
APPID = Shell("フルパス\JTrim.exe", vbNormalFocus)
APPWait = Timer
Do While Timer < APPWait + 1
DoEvents
Loop
AppActivate APPID
Application.SendKeys "^V", True
Application.SendKeys "%{F4}", True
End Sub
出力したい図を選択した状態で上記を走らせると、
JTRIMを起動して、貼り付けてくれます。
あとはこれをボタンなりリボンなりスマートアイコンに登録してやれば
お望みの「一発(スタートボタン)」に出来ると思いますよ。
この回答への補足
私の希望している流れなので、早速やってみましたが、APPID = Shell("フルパス\JTrim.exe", vbNormalFocus)のところで引っかかって動きません。私の仕様は'Windows7Home(32bit)です。これの関係でしょうか、それともJTRIMの置き場所の関係でしょうか?書いていただいたVBAを張付けて動かすのがやっとのレベルです。なんとか修正して頂けないでしょうか。宜しくお願いいたします。
補足日時:2013/07/29 15:31APPID = Shell("フルパス\JTrim.exe", vbNormalFocus)のフルバスのところにJTrimのアドレスを入れればいいのですね。完成しました。望みが叶いました。有難うございました。有難うございました。
No.7
- 回答日時:
#4~です。
しつこくて済みません。レジストリが「思います」では無責任かと思って試してみました。
#4のコードには、#6のQuality設定が有効でした。添付の画像(元サイズは1331×855ピクセル)でファイルサイズが、Quality90の時71KB、75の時47KB、15の時24KBでした。この手の画像では90と75は画質の顕著な差は認められませんでした。
また、#5のコードについては、#6のQuality設定は無効でした。
なお、GDI+を用いて、Quality設定も任意に行える方法(APIが少々高レベルになってきますが)を下記#5で、KenKenSPさんが回答されています。
http://oshiete.goo.ne.jp/qa/5124395.html
この回答への補足
いやー、すごい内容と思いますが、高度過ぎて理解出来ません。書いていただいたVBSを張り付けて動かすのがやっとのレベルなのです。申し訳ありませんでした。有難うございました。
補足日時:2013/07/29 15:45No.6
- 回答日時:
#4,5です。
たびたびすみません。グラフィックフィルターの圧縮率設定は、Windows7Home(64bit)の場合下記だと思います。
圧縮率のデフォルトは、間違えて覚えていましたが、75でした。画質が眠い訳ですね。
書き換える場合は、自己責任でお願いします。
\HKEY_CURRENT_USER\Software\Microsoft\Shared Tools\Graphics Filters\Export\JPEG\Options\Quality
古い記事には下記だとありましたが、そちらには該当項目がありませんでした。
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Graphics Filters\Export\JPEG\Options\Quality
素晴らしい回答と思い、やってみたのですが、動きません。私の使用がWin7の32bitのせいと思います。もったいない話ののですが、過去のデータが使えなくなるため、32にしています。高度な知識に敬服してお礼を申し上げます。有難うございました。
No.5
- 回答日時:
#4です。
すごく簡単なコードがあったのを思い出しました。ワークシート上で空のセル一個だけを選択して、挿入・グラフで白紙のグラフを作成します。
(他にはグラフが存在しないことを前提にしています)
この白紙グラフ上に図形を描画します。
下記コードでJPEGで保存できます。
'Activateしないとエラーになる様です。
Sub test()
ActiveSheet.ChartObjects(1).Activate
ActiveChart.Export GetDesktopPath & "\graph.jpg"
End Sub
Private Function GetDesktopPath() As String
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("Wscript.Shell")
GetDesktopPath = wScriptHost.SpecialFolders("Desktop")
Set wScriptHost = Nothing
End Function
No.4
- 回答日時:
VBAで行う例です。
目的の図を選択してから、Sub 動作テスト()を実行します。昔のコレクションを引っ張り出してみると、動作しない!Officeのグラフィックフィルターの在処がWindows7(64bit)では変わっていたのが原因でした。環境に合わせて修正する必要があります。Windows7Home(64bit), XL2010(32bit)で試しています。
Private Type FLTIMAGE
StructSize As Integer
Type As Byte
Reserved1(0 To 8) As Byte
hImage As Long
Reserved3(0 To 19) As Byte
End Type
Private Type FLTFILE
Reserved1 As Integer
Ext As String * 4
Reserved2 As Integer
Path As String * 260
Reserved3 As Currency
End Type
'Office(32bit)のグラフィックフィルターAPI
'XP(32bit)の時はここにありました
'C:\Program Files\Common Files\Microsoft Shared\Grphflt\JPEGIM32.FLT"
'Windows7Home(64bit)では下記にあります。
Private Declare Function GetFilterInfo Lib _
"C:\Program Files (x86)\Common Files\microsoft shared\GRPHFLT\JPEGIM32.FLT" _
(ByVal Ver As Integer, ByVal Reserved As Long, _
phMem As Long, ByVal flags As Long) As Long
'jpegの圧縮率は85%固定で変更するにはレジストリをいじる必要があったと思います。
'Web検索してみましたが発見できていません。
Private Declare Function ExportGr Lib "JPEGIM32.FLT" _
(ff As FLTFILE, fi As FLTIMAGE, ByVal hMem As Long) As Long
Private Const SaveExt As String = "Jpeg保存,*.Jpg"
Private Declare Function OpenClipboard Lib "user32" _
(ByVal hWndNewOwner As Long) As Long
Private Declare Function GetClipboardData Lib "user32" _
(ByVal uFormat As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Const CF_ENHMETAFILE = 14
Private Declare Function CopyEnhMetaFile Lib "gdi32" _
Alias "CopyEnhMetaFileA" _
(ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
Private Declare Function DeleteEnhMetaFile Lib "gdi32" _
(ByVal hemf As Long) As Long
Private Declare Function GlobalFree Lib "kernel32" _
(ByVal hMem As Long) As Long
Sub 動作テスト()
Dim myPath
myPath = GetDesktopPath & "\fltTest.jpg"
Call Selection.CopyPicture(xlPrinter, xlPicture)
If SaveCBPictureAs(myPath) Then
MsgBox "保存しました", vbInformation, Dir(myPath)
Else
MsgBox "失敗しました"
End If
End Sub
Function SaveCBPictureAs(ByVal SavePath As String) As Boolean
Dim fi As FLTIMAGE
Dim ff As FLTFILE
Dim hemf As Long
Dim hMem As Long
If OpenClipboard(0) Then
hemf = CopyEnhMetaFile( _
GetClipboardData(CF_ENHMETAFILE), vbNullString)
CloseClipboard
End If
If hemf = 0 Then
Exit Function
End If
ff.Path = SavePath & vbNullChar
With fi
.StructSize = LenB(fi)
.Type = 1
.hImage = hemf
End With
' フィルタ呼び出し
If GetFilterInfo(3, 0, hMem, &H10000) And &H10 Then
If ExportGr(ff, fi, hMem) = 0 Then
SaveCBPictureAs = True
End If
End If
If hMem Then GlobalFree hMem
DeleteEnhMetaFile hemf
End Function
'最近のWindowsではフォルダーへのアクセス権の問題があるので、便宜上Desktopを対象にしています。
Private Function GetDesktopPath() As String
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("Wscript.Shell")
GetDesktopPath = wScriptHost.SpecialFolders("Desktop")
Set wScriptHost = Nothing
End Function
No.2
- 回答日時:
ANo.1です。
画像ファイルフォルダーにはpng形式で保存されるようですね。(Excel2010で確認)
ブログ側でpng形式でも対応可能ならそのまま使ってもいいですし、jpegでなければ・・・ということならJTrimに取り込んでjpeg形式で保存し直してもいいでしょう。
この他にも、当該ExcelファイルをPDF形式のファイルで保存してPDFファイルの中から画像選択ツールで図を選択することで図だけ取り出すことも可能ですし、Windows7やWindows8ならExcelファイルを表示させておいてSnipping Toolで図だけキャプチャして取り出すことも可能です。
確かにできます。ただ、JTrimに取り込んでjpeg形式で保存し直す回数が多いので、少しかもしれないが、便利にしたいと考えているのです。贅沢言ってすみません。有難うございました。
No.1
- 回答日時:
このような質問をされるなら、使っているExcelのバージョンも明記してください。
Excelファイルを開き「名前を付けて保存」します。この時ファイルの種類を「Webページ(*.htm;*.html)」とします。
これで保存すると、ファイル名と同名の画像フォルダが自動的に作成され、その中に当該Excelのシート中の図形がgif形式で保存されているはずです。
jpeg形式でなくてもブログにアップする目的ならgif形式でも充分でしょう。
早速のご回答有難うございました。やってみますと、図が沢山出てきました。その中に目的のものが確かにありました。目的を達成する方法としては一番シンプルかもしれませんが、この際、他の方法も勉強してみようと思います。有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- 教育ソフト・学習ソフト エクセルでマニュアルの図や表をつくる方法を教えてください。 仕事で自分用にエクセルを使用してマニュア 1 2023/02/10 23:02
- Excel(エクセル) エクセルVBAで図形のテキストを取得してセルに入力 2 2022/10/05 23:09
- Excel(エクセル) エクセルからビジオのリンク貼り付け 1 2023/03/30 17:51
- Excel(エクセル) エクセルの値を元に図形の色を変えたい 2 2022/05/11 01:37
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/22 11:43
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- iPhone(アイフォーン) i phone に一括で連絡先を登録する一番簡単な方法 2 2023/02/18 19:36
- PowerPoint(パワーポイント) 2016EXCEL→2016PowerPointにコピペすると図形がゆがみます 5 2022/03/31 11:44
- Excel(エクセル) エクセルで作った文章を図で貼り付けたが元のエクセルが削除したので図からエクセルに戻したい 4 2022/07/05 08:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作成した図形を保存...
-
Word文書をページ単位で画像と...
-
【ワード】挿入した画像のファ...
-
イラレからワードへ綺麗に画像...
-
エクセルの表でフォルダの絵を...
-
ワードで作った文書の一部を画...
-
携帯でjpegファイルを見たいん...
-
VBAで画像圧縮はできますか?
-
ワード文書をビットマップ形式...
-
Excelへの画像貼り付けがビット...
-
エクセルに貼付けられた画像を...
-
Excelに画像を貼り付けたいので...
-
エクセルにリサイズした写真を...
-
WordやExcelの表や画像を、jpg ...
-
Power Pointで作成した画像を解...
-
アウトルックメールの添付ファ...
-
フォルダ内の画像ファイルが読...
-
携帯から送った画像がPCで見...
-
エクセルに貼り付けた画像の大...
-
JPEG画像が貼り付けできません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作成した図形を保存...
-
【ワード】挿入した画像のファ...
-
エクセルの表でフォルダの絵を...
-
Word文書をページ単位で画像と...
-
グラフを貼ってたらファイルの...
-
イラレからワードへ綺麗に画像...
-
VBAで画像圧縮はできますか?
-
エクセルに貼り付けた画像の大...
-
携帯でjpegファイルを見たいん...
-
WordやExcelの表や画像を、jpg ...
-
Microsoft EdgeでJPEG画像を保...
-
Excelへの画像貼り付けがビット...
-
ワードに楽譜を挿入したい
-
Power Pointで作成した画像を解...
-
ワードで作った文書の一部を画...
-
ワードに貼り付けられた画像の...
-
エクセルに劣化せず画像を挿入...
-
JPEG画像が貼り付けできません
-
カラーのPDFをメールで返送...
-
画像 ビットの深さ
おすすめ情報