父は助けが必要な問題で私に電話をかけました。彼は受け取ったWord文書を編集しましたが、非常に大きいため、郵送できないことがわかりました。ページ数は少ないですが、画像はありました。画像の1つは大きなファイルでなければならないことがすぐにわかりました。問題のある画像が見つかるまで、画像を1つずつ削除してもらいました。
しかし、これを行うにはもっと簡単な方法が必要ですよね?
写真の場合:
ファイル->「ファイルサイズを小さくする」から、すべてまたは選択した画像のみを圧縮するなど、さまざまなオプションを選択できます。また、画像に便乗している可能性のあるトリミングされた領域のデータをファイルから削除することもできます。
これは問題のある画像を特定するのに役立ちませんが、すべての画像を圧縮して、問題の可能性のある画像を排除するための簡単な方法です。
Wordファイルを保存します.docx
なので .Zip
そしてZipフォルダを開きますWord\media\
。
ファイルサイズが表示されます。
7-Zip などの圧縮ユーティリティを使用してWord(.docx)ドキュメントを開きます。フォルダ\ Word\media \を開くと、すべての埋め込みメディアファイルのリストがサイズとともに表示されます。
このマクロは、各画像のPPIを示し、サイズを縮小または拡大することを提案します。Microsoftコミュニティで見つけました。前述のように、マクロはRichard Michaelsによって作成されました。参考までに、各画像にコメントを付けるので、コメントが多いと混乱する可能性があります。
Sub PixelsMatter()
'Created by Richard V. Michaels
'http://www.greatcirclelearning.com
'Creating custom and off-the-shelf productivity apps for Office
On Error GoTo ErrHandler
Dim doc As Word.Document, rng As Word.Range, iRng As Word.Range
Dim shp As Word.Shape, iShp As Word.InlineShape
Dim PixelCount As Integer, FullWidth As Integer, PPI As Integer
Dim Mac As Boolean
Set doc = Word.ActiveDocument
Set rng = Word.Selection.Range
'Check only the range selected, else check entire body of the document
If rng.Start = rng.End Then Set rng = doc.Content
#If Win32 Or Win64 Then
'this is a PC
PixelCount = 96
#Else
'this is a Mac
PixelCount = 72
Mac = True
#End If
For Each iShp In rng.InlineShapes
'only looking for embedded or linked pictures
If iShp.Type = wdInlineShapeLinkedPicture Or iShp.Type = wdInlineShapePicture Then
'determining original width before scaling
FullWidth = iShp.Width / (iShp.ScaleWidth / 100)
'calculate PPI density based on the current scaled size of inserted image
PPI = FullWidth / (iShp.Width / PixelCount)
Select Case PPI
Case Is < 150
iShp.Range.Comments.Add iShp.Range, "PPI is " & PPI & " and will result in poor print quality. " & _
"We suggest either reducing the size of the picture in the document or replacing with a higher quality source image."
Case Is < 200
iShp.Range.Comments.Add iShp.Range, "PPI is " & PPI & ", which is marginal for a good print quality. " & _
"We suggest you print a sample and check if the print quality is satisfactory for your needs. " & _
"Higher print quality can be achieved by either reducing picture size or replacing with a higher quality source image."
Case Is < 240
'PPI density is optimal, no comment made
Case Else
iShp.Range.Comments.Add iShp.Range, "PPI is " & PPI & " and does not contribute to better print quality... " & _
"it is only creating a larger than necessary file size for this document. We suggest replacing the image with a more appropriately sized source image."
End Select
End If
Next
If Mac Then GoTo ErrHandler
'With a Mac running Office 2011 there is no need to go further
'The excessively buggy Office 2011 VBA errantly places all "floating" shapes into the inline shapes collection
'No other PC version of Office VBA does this and if the following code is executed on a Mac, double comments
'would be placed on all floating shapes that met the PPI criteria specified in the following Select Case command.
If doc.Shapes.count = 0 Then GoTo ErrHandler
Dim wrapType As Integer, i As Integer
For i = doc.Shapes.count To 1 Step -1
Set shp = doc.Shapes(i)
If shp.Type = Office.MsoShapeType.msoPicture Or _
shp.Type = Office.MsoShapeType.msoLinkedPicture Then
If shp.WrapFormat.Type <> Word.WdWrapType.wdWrapNone Then
wrapType = shp.WrapFormat.Type
Set iShp = shp.ConvertToInlineShape
If iShp.Range.InRange(rng) Then
'determining original width before scaling
FullWidth = iShp.Width / (iShp.ScaleWidth / 100)
'calculate PPI density based on the current scaled size of inserted image
PPI = FullWidth / (iShp.Width / PixelCount)
Select Case PPI
Case Is < 150
iShp.Range.Comments.Add iShp.Range, "PPI is " & PPI & " and will result in poor print quality. " & _
"We suggest either reducing the size of the picture in the document or replacing with a higher quality source image."
Case Is < 200
iShp.Range.Comments.Add iShp.Range, "PPI is " & PPI & ", which is marginal for a good print quality. " & _
"We suggest you print a sample and check if the print quality is satisfactory for your needs. " & _
"Higher print quality can be achieved by either reducing picture size or replacing with a higher quality source image."
Case Is < 240
'PPI density is optimal, no comment made
Case Else
iShp.Range.Comments.Add iShp.Range, "PPI is " & PPI & " and does not contribute to better print quality... " & _
"it is only creating a larger than necessary file size for this document. We suggest replacing the image with a more appropriately sized source image."
End Select
iShp.ConvertToShape
shp.WrapFormat.Type = wrapType
Else
iShp.ConvertToShape
shp.WrapFormat.Type = wrapType
End If
End If
End If
Next
ErrHandler:
Select Case Err
Case 0
MsgBox "Action Complete", vbInformation, "Pixels Matter"
Case Else
MsgBox Err.Number & vbCr & Err.Description, vbExclamation, "Pixels Matter"
Err.Clear
End Select
End Sub
おそらく最も簡単な方法は、各画像を圧縮することです。 フォーマットメニューをクリックし、画像の圧縮を選択します。これにより、トリミングされたが画像データに保持されているパーツを含む、不要な画像データが削除されます。