请帮我写一段在windows操作系统执行的vba代码,功能如下:
D盘4-19文件夹里面有100个文件夹,每个文件夹里面有一张或多张JPG的图片,现在我需要把每个文件夹对应的名称写入到JPG图片正中间的位置
以下是一个能够实现你要求的VBA代码。请注意,这段代码需要引用一个名为"Microsoft Office XX.X Object Library"的库,其中XX.X是你使用的Office版本号。在代码运行之前,请将"FolderPath"变量设置为D盘4-19文件夹的完整路径。
Option Explicit
Sub WriteFolderNameOnJPGs()
'Set the folder path where the subfolders and JPGs are stored
Dim FolderPath As String
FolderPath = "D:\4-19\"
'Create an instance of the FileSystemObject
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
'Get the subfolders in the main folder
Dim Subfolders As Object
Set Subfolders = fso.GetFolder(FolderPath).SubFolders
'Loop through each subfolder
Dim Subfolder As Object
For Each Subfolder In Subfolders
'Get the JPG files in the subfolder
Dim JPGFiles As Object
Set JPGFiles = Subfolder.Files
Set JPGFiles = fso.CreateFolder(Subfolder.Path & "\Processed").Files
'Loop through each JPG file
Dim JPGFile As Object
For Each JPGFile In JPGFiles
'Create an instance of the Image object
Dim Img As Object
Set Img = CreateObject("WIA.ImageFile")
'Load the JPG file into the Image object
Img.LoadFile JPGFile.Path
'Create an instance of the Font object
Dim Font As Object
Set Font = CreateObject("WIA.VectorFont")
'Set the font properties
Font.Name = "Arial"
Font.Size = 36
Font.Color = 0 'Black
'Create an instance of the TextFrame object
Dim TextFrame As Object
Set TextFrame = CreateObject("WIA.TextFrame")
'Set the TextFrame properties
TextFrame.Text = Subfolder.Name
TextFrame.Font = Font
TextFrame.Position = WIA.CreatePoint(Img.Width / 2, Img.Height / 2)
TextFrame.AlignmentHorizontal = WIA.wiaAlignmentCenter
TextFrame.AlignmentVertical = WIA.wiaAlignmentCenter
'Add the TextFrame to the Image object
Img.AnalyzeText(TextFrame)
'Save the modified JPG file
Img.SaveFile Subfolder.Path & "\Processed\" & JPGFile.Name
Next JPGFile
Next Subfolder
'Clean up
Set fso = Nothing
Set Subfolders = Nothing
Set Subfolder = Nothing
Set JPGFiles = Nothing
Set JPGFile = Nothing
Set Img = Nothing
Set Font = Nothing
Set TextFrame = Nothing
End Sub
这段代码使用Windows Imaging Component(WIC)库中的WIA对象来加载和修改JPG文件。它首先遍历每个子文件夹,然后在每个子文件夹中遍历每个JPG文件。对于每个JPG文件,代码会将文件加载到一个Image对象中,然后在图像的中心位置添加一个TextFrame对象,其中包含子文件夹的名称。最后,修改后的JPG文件将保存到一个名为"Processed"的新文件夹中。