グレンは、Excelですべてのデジタル写真のカタログを作成しています。すべての写真(約5000枚)は1つのフォルダーにあります。彼は、写真の説明の右側に写真を挿入してから、すべての写真へのハイパーリンクを配置して、サムネイルをより大きな写真に拡大したいと考えています。

現在、グレンはこれを1つずつ行っており、それが彼を夢中にさせているので、彼はプロセスをスピードアップする方法を探しています。

良いニュースは、それほど速く夢中になる必要がないということです。 Excelには、ジョブをより速く簡単にすることができるマクロが用意されています。ただし、その議論に飛び込む前に、すべての写真をExcelブックに入れる前に、じっくり考えてみることをお勧めします。

写真をExcelに挿入すると、ワークブックのファイルサイズは、少なくとも挿入されている写真のファイルサイズだけ大きくなります。したがって、平均的な写真のサイズが1 MBの場合(今日のカメラではかなり小さい)

そのような写真を5000枚挿入すると、少なくとも5GBの写真が含まれるワークブックになります。これは巨大なワークブックであり、Excelはそれほど多くの情報を処理するのに苦労するかもしれません。 (時間の難しさは、Excelのバージョン、システムのメモリ量、プロセッサの速度などによって異なります)

解決策は、ワークシートに配置するときに画像を拡大縮小して、画像を小さくすることだと思うかもしれません。画像を再スケーリングすると、画像は小さく見えますが(ワークシートでは小さく見えます)、実際には小さくはありません。フルサイズの画像はまだExcelにあります。

したがって、写真を拡大縮小しても、ブックのファイルサイズをまったく縮小しません。

ファイルサイズを小さくする方法は、写真をExcelに挿入する前に、写真編集ソフトウェアを使用してExcelの外部で写真を拡大縮小することです。つまり、各写真を写真編集ソフトウェアにロードし、写真のサイズを任意のサムネイルサイズに変更してから、サイズ変更した写真を新しいサムネイル画像ファイルに保存する必要があります。 (通常、サイズ変更した画像を元の写真の上に保存することは望ましくありません。)次に、各サムネイルをExcelワークシートに挿入すると、ワークブックのファイルサイズは小さくなりますが、の合計サイズに直接関係します。ワークシートに追加するサムネイル写真。

それでもすべての写真をワークシートに挿入する場合は、マクロを使用して挿入できます。次の例のPhotoCatalogは、すべてのサムネイル写真を検索し、写真全体へのハイパーリンクとともにワークシートに挿入できます。 (1)写真とサムネイルがすべてJPG画像である、(2)写真がディレクトリc:\ Photos \にある、(3)サムネイルがディレクトリc:\ Photos \ Thumbnails \にある、および4つのことを前提としています。 (4)サムネイルのファイル名は実物大の写真と同じです。

Sub PhotoCatalog()

Dim i As Double     Dim xPhoto As String     Dim sLocT As String     Dim sLocP As String     Dim sPattern As String

sLocT = "c:\Photos\Thumbnails\"

sLocP = "c:\Photos\"

sPattern = sLocT & "*.jpg"



Application.EnableEvents = False     Application.ScreenUpdating = False

Range("A1").Select     ActiveCell.FormulaR1C1 = "Description"

Range("B1").Select     ActiveCell.FormulaR1C1 = "Thumbnail"

Range("C1").Select     ActiveCell.FormulaR1C1 = "Hyperlink"

Range("A1:C1").Select     With Selection.Font         .Name = "Arial"

.FontStyle = "Bold"

.Size = 12         .ColorIndex = xlAutomatic     End With     With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous         .Weight = xlMedium         .ColorIndex = xlAutomatic     End With

i = 1     On Error GoTo 0     xPhoto = Dir(sPattern, vbNormal)

Do While xPhoto <> ""

i = i + 1         Range("B" & i).Select         ActiveSheet.Pictures.Insert(sLocT & xPhoto).Select         With Selection.ShapeRange             .LockAspectRatio = msoTrue             .Height = 54#             .PictureFormat.Brightness = 0.5             .PictureFormat.Contrast = 0.5             .PictureFormat.ColorType = msoPictureAutomatic         End With         Range("C" & i).Select         ActiveSheet.Hyperlinks.Add Anchor:=Selection, _           Address:= sLocP & xPhoto, TextToDisplay:=xPhoto         xPhoto = Dir     Loop

Application.EnableEvents = True     Application.ScreenUpdating = True End Sub

使用しているシステムの種類やカタログ化する写真の数によっては、このマクロの実行にかなりの時間がかかる場合があります。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(7484)は、Microsoft Excel 97、2000、2002、および2003に適用されます。