
画像を貼り付けたexcel ブックが何百個あります、印刷した時に画像が重くて、貼った画像が印刷できなかったりしますので、ブックに貼った画像を圧縮してブック保存することにしました。
excelブックを一つずつ開いて図を圧縮し保存するのが手間なので、マクロでできないかと、探してみたんですが、なかなか見つかれない。
ファイル開いて保存し閉じるマクロ見つけたんですが、画像の圧縮部分をどのように書けばいいのか
わからなくて、皆さんに助けを求め質問させていただきました。
excelに貼った画像枠の大きさはばらばらです、サイズを指定せずに、図形だけ圧縮、トリムしたいです。
マクロで圧縮トリムできるなら、画像の圧縮部分をどのように書けばいいのか教えてください。
よろしくお願いします。
下のマクロがファイル開いて保存し閉じるマクロです。
Private Sub CommandButton1_Click()
' フォルダ参照ダイアログを利用して、フォルダを特定する。
Dim folderName As Variant
Set folderName = CreateObject("Shell.Application") _
.BrowseForFolder( _
&O0 _
, "フォルダ選択" _
, &H1 + &H10 _
, "デスクトップ")
' フォルダが選択されたか否か判別する。
If folderName Is Nothing Then
MsgBox "中止します"
Exit Sub
End If
' 単純なループカウンタ
Dim lp1 As Long, lp2 As Long
' FileSystemObjectを作成する。
Dim Obj As Object
Set Obj = CreateObject("Scripting.FilesystemObject")
' 選択されたフォルダ配下に存在するファイル名を取出す為の変数
Dim fileName As String
Dim fileNames() As String
ReDim fileNames(0) As String
' 選択されたフォルダ配下に存在するファイル名を取出す
fileName = Dir(folderName.Self.Path & "\*.xls")
Do While fileName <> vbNullString
' ファイル名を配列に取込む。
ReDim Preserve fileNames(UBound(fileNames) + 1) As String
fileNames(UBound(fileNames)) = _
folderName.Self.Path & "\" & fileName
fileName = Dir()
Loop
' 全てのExcelファイルを順次開いて閉じる。
For lp1 = 1 To UBound(fileNames)
' 開いたファイルのブック名を取得する。
Dim bookName As String
bookName = Obj.GetFileName(fileNames(lp1))
' 開いたファイルの全シートを全て参照する。
For lp2 = 1 To Workbooks(bookName).Sheets.Count
' ***************
' 集計処理を行う
' ***************
Next
' 開いていたExcelファイルを保存して閉じる。
Workbooks(bookName).Close SaveChanges:=False
Next
' メモリを解放する。
Erase fileNames
' オブジェクトを破棄する。
Set Obj = Nothing
Set folderName = Nothing
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
VBAが趣味ならもうちょっと頑張ってみればいいだけですが
お仕事のようですから、手作業でさっさとやってしまったほうがいいでしょう。
1時間に100ファイル処理すれば何時間かで終わります。
1日に1時間ほどやれば3日で300ファイル終わります。
<方法>
ファイルを10個ほど開いておき、以下を10回分繰り返します
ファイル⇒ オプション ⇒ 詳細設定
→ 解像度(150、96 などを選択) → 項目確認 → 上書き保存
回答ありがとうございました。確かに、手作業でやっても終わる仕事ですが、vbaでやりたくてがんばってみました。
理由はよくわかりませんが、”FileFormat:=xlExcel8 ”この文追加することで圧縮保存できました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel マクロ 画像をリンクせずかつ圧縮して貼りつける方法を教えてください
Excel(エクセル)
-
VBAで画像圧縮はできますか?
Visual Basic(VBA)
-
エクセルマクロで図の圧縮を行うには
PowerPoint(パワーポイント)
-
-
4
VBAでセルを指定した画像のコピー&ペーストを繰り返したい
Excel(エクセル)
-
5
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
6
エクセルのシートに貼りつけたbmpをjpegに
その他(Microsoft Office)
-
7
Excel VBAでセル内の画像を選択したい
Excel(エクセル)
-
8
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
9
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
-
10
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
11
エクセルのマクロで印刷プレビューを閉じる方法
Excel(エクセル)
-
12
エクセルに画像を貼付け縮小する作業をマクロにしたいのですが、
Excel(エクセル)
-
13
ExcelVBAで画像のサイズを調べるマクロを作ろうと思っています
Access(アクセス)
-
14
VBA プロシージャの名前の取得
その他(Microsoft Office)
-
15
VBAでJPGサイズ変更
Visual Basic(VBA)
-
16
【ExcelVBA】図の縮小貼付時のトラブル
その他(Microsoft Office)
-
17
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
18
VBAエクセルに貼り付けた画像をセルにあった大きさにしたい(等倍)
Excel(エクセル)
-
19
エクセル(2013)VBA-図の縦横比を変えずにセルにおさまる最大限の大きさにする
Excel(エクセル)
-
20
エクセルに貼付けた写真の容量(何バイトなのか)を確認する方法はありますか?
その他(パソコン・スマホ・電化製品)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
彼女の過去の恋愛に嫉妬してし...
-
iCloud for Windowsをアンイン...
-
Excel2000でファイルが開けませ...
-
[Unity]シーンファイルの中が消...
-
HTMLのリンクで、EXCELをIEでは...
-
Excel: ファイル名になぜ、[...
-
DvRexで取り込んだAVIファイル...
-
文字化けを修正する方法
-
HPビルダー未使用ファイルの...
-
ファイルが移動してもリンクの...
-
ホームページ製作で
-
ノーツの添付ファイルの場所を...
-
docxをmht形式で保存したファイ...
-
エクセルのファイル:「自分」が...
-
resource.hに残る不要な#define
-
VB6.0のログファイル
-
Excelファイルの特定のシートを...
-
StuffIt Expanderでの不具合?
-
マウントしたディスクにcpで、...
-
【UWSC】WEBページ内コピーした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの特定行の削除
-
彼女の過去の恋愛に嫉妬してし...
-
Excel: ファイル名になぜ、[...
-
エクセルのファイル:「自分」が...
-
ファイルが移動してもリンクの...
-
iCloud for Windowsをアンイン...
-
EXCELVBAにて文字列にして「01...
-
WINDOWS CMDからゴミ箱のファ...
-
vbsからのExcelマクロ呼び出し...
-
[Unity]シーンファイルの中が消...
-
5000個のtiffファイルをpdfへ変...
-
複数のExcelファイルにある同名...
-
このファイルは外部のエディタ...
-
batでファイル名を変更したい(...
-
フォルダ内の複数のファイルの...
-
docxをmht形式で保存したファイ...
-
FTPのgetとputの使いわけ。
-
Googleドライブについて
-
VBA ファイル一覧を取得して全...
-
エクセル保存終了で一時ファイ...
おすすめ情報