画像を貼り付けた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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Excel マクロ 画像をリンクせずかつ圧縮して貼りつける方法を教えてください
Excel(エクセル)
-
VBAで画像圧縮はできますか?
Visual Basic(VBA)
-
エクセルに画像を貼付け縮小する作業をマクロにしたいのですが、
Excel(エクセル)
-
-
4
エクセルのシートに貼りつけたbmpをjpegに
その他(Microsoft Office)
-
5
エクセルマクロで図の圧縮を行うには
PowerPoint(パワーポイント)
-
6
VBAでエクセルのシート上の画像のリサイズと配置を行いたい
Excel(エクセル)
-
7
画像を削除したい(VBA)
Word(ワード)
-
8
VBAで文字列を数値に変換したい
Excel(エクセル)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
エクセルに画像貼り付けると重い!!軽くできないですか?
Excel(エクセル)
-
11
VBAを何回も作り直して、容量が増えた
Excel(エクセル)
-
12
PowerPointのVBAで、図形を縮小後、画質を落とさずに出力する方法
PowerPoint(パワーポイント)
-
13
VBAでJPGサイズ変更
Visual Basic(VBA)
-
14
VBAで、JPG写真の撮影日時を読み出す関数?
Excel(エクセル)
-
15
エクセルのVBAでクリップボードにコピーした画像をpng(or jpg or bmp)保存したい
Visual Basic(VBA)
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの特定行の削除
-
WINDOWS CMDからゴミ箱のファ...
-
FTPのgetとputの使いわけ。
-
vbsからのExcelマクロ呼び出し...
-
OneDrive必要なものでしょうか
-
EXCELVBAにて文字列にして「01...
-
iCloud for Windowsをアンイン...
-
複数のExcelファイルにある同名...
-
VBSでフォルダ内の最新のファイ...
-
バインダーの作り方
-
ファイルが移動してもリンクの...
-
excel vbaのdir関数で正しいフ...
-
Delphi
-
エクセルの一時ファイルが保存...
-
秀丸エディタでHTMLの部分のURL...
-
5000個のtiffファイルをpdfへ変...
-
Googleドライブについて
-
エクセルのファイル:「自分」が...
-
batファイルで親フォルダのコピー
-
エクセルの固定範囲にCSVを貼り...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
iCloud for Windowsをアンイン...
-
vbsからのExcelマクロ呼び出し...
-
CSVファイルの特定行の削除
-
EXCELVBAにて文字列にして「01...
-
OneDrive必要なものでしょうか
-
Excel: ファイル名になぜ、[...
-
ファイルが移動してもリンクの...
-
複数のExcelファイルにある同名...
-
VBAにおいて、ファイルの移...
-
彼女の過去の恋愛に嫉妬してし...
-
Googleドライブについて
-
WINDOWS CMDからゴミ箱のファ...
-
[Unity]シーンファイルの中が消...
-
エクセルの拡張子XLSのファイル...
-
batでファイル名を変更したい(...
-
Excelに貼り付けた画像を圧縮す...
-
エクセルのファイル:「自分」が...
-
5000個のtiffファイルをpdfへ変...
-
VBA ファイル一覧を取得して全...
-
HTMLのリンクで、EXCELをIEでは...
おすすめ情報