Glenn正在用Excel制作他所有数码照片的目录。所有照片(约5000张)都在一个文件夹中。他想在照片说明的右边插入照片,然后在所有照片上添加超链接以将缩略图放大为更大的照片。

现在,格伦正在一步一步地做这件事,这使他发疯,所以他正在寻找加快这一过程的方法。

好消息是,您不必这么快就发疯。 Excel提供的宏可以使工作更快,更轻松。但是,在进行讨论之前,您可能需要三思而行,然后再将所有照片放入Excel工作簿中。

当您将照片插入Excel时,工作簿的文件大小至少会增加要插入的照片的文件大小。因此,如果您的平均照片大小为1 MB(对于今天的相机来说很小)

然后插入5000张这样的照片,然后最终得到一个包含至少5 GB照片的工作簿。那是一个巨大的工作簿,Excel可能很难处理这么多的信息。 (时间的艰辛程度取决于您的Excel版本,系统中的内存量,处理器的速度等)。

您可能会认为解决方案是在将图像放入工作表时缩放图像,以使其更小。虽然重新缩放图像会使图像看起来更小(在工作表中看起来更小),但实际上并没有变小。完整尺寸的图像仍在Excel中。

因此,通过缩放照片根本不会减少工作簿的文件大小。

减小文件大小的方法是在将照片插入Excel之前,使用照片编辑软件在Excel外部缩放照片。换句话说,您需要将每张照片加载到照片编辑软件中,将照片调整为所需的缩略图大小,然后将调整后的照片保存到新的缩略图文件中。 (通常,您不希望将调整大小后的图像保存在原始照片的顶部。)然后,您可以将每个缩略图插入Excel工作表中,并且虽然仍然与的总大小直接相关,但您产生的工作簿文件的大小会较小。您添加到工作表的缩略图。

如果您仍想将所有照片插入工作表,则可以使用宏。下面的示例PhotoCatalog可以查找所有缩略图,并将它们以及指向完整照片的超链接插入到工作表中。它假定了四件事:(1)您的照片和缩略图都是JPG图像,(2)照片在目录c:\ Photos \中,(3)缩略图在目录c:\ Photos \ Thumbnails \中,以及(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_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(7484)适用于Microsoft Excel 97、2000、2002和2003。