利用excelVBA批量修改文件名以及自动插图到word
Word中自动批量插入图片的VBA代码
Word中自动批量插入图片的VBA代码为了赶编一个图册,我们定了一个图片格式,图片全部存在硬盘上,每个图片均有一定的编号,如果手工实现,至少要24小时以上,中间还会出现DOC文件澎湃死机,想起来头就大.根据工作的流程,定了个索引文件格式,写了个VBA脚本,实现了(1)在WORD中插入表格(关键是单元格合并);(2)在WORD中插入文本框(浮于表格与图片上);(3)定义索引文件的格式(编号\图片\说明);(4)在WORD中读取索引文件格式.结果,完成一个图册文件的制作,只用了不到20分钟,真是轻松.在工作有好的帮手真的非常重要,thank QCJ.下面是它的VBA代码,等到有时间时,用VC把它实现打包,让更多的人更简单地用吧.==================================Sub test()'' test Macro' 宏在 2007-7-16 由 FtpDown 录制'插入表格Dim filename As String, str1() As String, tmp As String, i As IntegerDim photoimg As String, gisimg As Stringfilename = "c:\set.txt" '这里是文本文件所在路径位置Open filename For Input As 1Do Until EOF(1)Line Input #1, tmpstr1 = Split(tmp, ",")photoimg = str1(2) & "\1.jpg"gisimg = str1(2) & "\2.jpg"Selection.Collapse Direction:=wdCollapseStartSet myTable = ActiveDocument.T ables.Add(Range:=Selection.Range, _ NumRows:=2, NumColumns:=3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _wdAutoFitFixed)'修改表格的高宽myTable.Rows(1).HeightRule = wdRowHeightAtLeastmyTable.Rows(1).Height = CentimetersToPoints(8.62)myTable.Columns(1).PreferredWidthType = wdPreferredWidthPointsmyTable.Columns(1).PreferredWidth = CentimetersToPoints(12)myTable.Columns(2).PreferredWidthType = wdPreferredWidthPointsmyTable.Columns(2).PreferredWidth = CentimetersToPoints(0.42)myTable.Columns(3).PreferredWidthType = wdPreferredWidthPointsmyTable.Columns(3).PreferredWidth = CentimetersToPoints(12.32)myTable.Rows(2).HeightRule = wdRowHeightAtLeastmyTable.Rows(2).Height = CentimetersToPoints(8.62)'合并表格myTable.Cell(Row:=1, Column:=2).Merge _MergeTo:=myTable.Cell(Row:=2, Column:=2)myTable.Cell(Row:=1, Column:=3).Merge _MergeTo:=myTable.Cell(Row:=2, Column:=3)'插入图片myTable.Cell(Row:=1,Column:=1).Range.InlineShapes.AddPicture filename:= _ photoimg, LinkToFile:=False, _SaveWithDocument:=TruemyTable.Cell(Row:=1,Column:=1).Range.InlineShapes(1).Height = 244.35 myTable.Cell(Row:=1,Column:=1).Range.InlineShapes(1).Width = 344.25myTable.Cell(Row:=2,Column:=1).Range.InlineShapes.AddPicture filename:= _ photoimg, LinkToFile:=False, _SaveWithDocument:=TruemyTable.Cell(Row:=2,Column:=1).Range.InlineShapes(1).Height = 244.35 myTable.Cell(Row:=2,Column:=1).Range.InlineShapes(1).Width = 344.25myTable.Cell(Row:=1,Column:=3).Range.InlineShapes.AddPicture filename:= _ gisimg, LinkT oFile:=False, _SaveWithDocument:=TruemyTable.Cell(Row:=1,Column:=3).Range.InlineShapes(1).Height = 498.7myTable.Cell(Row:=1,Column:=3).Range.InlineShapes(1).Width = 344.25'插入文本框Set myTB1 = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizo ntal, 71, 35, 172, 36)myTB1.TextFrame.T extRange = str1(1) & Chr(13) & "部件编码:" & str1(0)Set myTB2 = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizo ntal, 609, 509, 165, 22)myTB2.TextFrame.T extRange = "XXXXXXXXX 2007年7月"'Set arrPic = ActiveDocument.Shapes.AddPicture("D:\我的文档\My Pictures\88888\arrow.gif", False, True, 50, 300)Selection.MoveDown Unit:=wdLine, Count:=2Selection.TypeParagraphLoopCloseEnd SubSub sx()'' sx Macro' 宏在 2007-7-18 由 zwx 创建'Dim tmp As String, FileNumber As IntegerSet fs = CreateObject("Scripting.FileSystemObject")Set a = fs.CreateTextFile("c:\Errmeilan.txt", True)Set b = fs.CreateTextFile("c:\OKmeilan.txt", True)filename = "c:\meilan.txt" '这里是文本文件所在路径位置FileNumber = FreeFileOpen filename For Input As FileNumberDo Until EOF(FileNumber)Line Input #FileNumber, tmpstr1 = Split(tmp, ",")photoimg = str1(2) & "\001.jpg"gisimg = str1(2) & "\002.jpg"If fs.FileExists(photoimg) = True And fs.FileExists(gisimg) = True Thenb.writeLine (tmp)Elsea.writeLine (tmp)End IfLoopa.Closeb.CloseSet fs = NothingSet a = NothingSet b = NothingEnd Sub。
(完整版)用VBA实现批量修改多个Word文档内容
(完整版)用V B A实现批量修改多个W o r d文档内容-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN用vba实现多个word文档里的多个内容进行批量更改说明:本方法思路是借用excel的表格对多个内容进行界面管理,再用excel的vba调用word文件进行查找更改。
使用方法:将以下内容(不包括本句)复制进excel的宏模块,保存,然后excel界面设置如下:输入数据,运行宏就可以了。
(若需要现成的excel文件,请单独下载)注:版权所有严禁转载Sub 更新录入()Dim a, b, zhszhs = Sheet1.Range("c" & Rows.Count).End(xlUp).Rowp = ThisWorkbook.Path & "\"If Sheet1.Range("c5").Value = "" Thenwjj = "新文书"Elsewjj = Sheet1.Range("c5").ValueEnd IfIf zhs < 3 ThenCreateObject("Wscript.shell").popup "没有数据可以录入,请输入数据后再点击生成新文档!", 1, "提示!", 0 + 32Exit SubEnd IfIf Sheet1.Range("F1") <> "修改本级文档" ThenOn Error Resume NextSet ofso = CreateObject("Scripting.FileSystemObject") '生成文件夹ofso.CreateFolder (p & wjj)On Error GoTo 0 '替换本级或生成新的ElseIf MsgBox("是否替换本级文件夹内文档", vbYesNo, "提示") = vbNo Then: Exit SubElsewjj = ""End IfApplication.ScreenUpdating = FalseWith CreateObject("Word.Application").Visible = Falsef = Dir(p & "*.doc")Do While f <> ""i = i + 1.Documents.Open p & fFor b = 3 To zhsIf Sheet1.Range("C" & b) <> "" Then '有数据才替换.Selection.HomeKey Unit:=6 ' 到文档开始地方Do While .Selection.Find.Execute(Sheet1.Range("B" & b)) '查找s.Selection.Font.Color = wdColorAutomatic '字体颜色.Selection.Text = Sheet1.Range("C" & b) '替换.Selection.MoveRight Unit:=1, Count:=1 '右移LoopEnd IfNext.ActiveDocument.SaveAs p & wjj & "\" & f '另存为。
ExcelVBA批量修改文件夹下的文件名
ExcelVBA批量修改文件夹下的文件名今天,有同事提出想批量修改文件名,规则比较简单,在第五位后加“-”即可,代码如下:Private Sub CommandButton1_Click()Dim varFileList As VariantMsgBox "选择要重命名文件所在的文件夹,点击确定!"With Application.FileDialog(msoFileDialogFolderPicker).AllowMultiSelect = False.ShowIf .SelectedItems.Count = 0 Then Exit Sub '未选择文件夹renamepath = .SelectedItems(1)If Right(renamepath, 1) <> "\" Thenrenamepath = renamepath + "\"End IfEnd With'获取文件夹中的所有文件列表varFileList = fcnGetFileList(renamepath)If Not IsArray(varFileList) ThenMsgBox "未找到文件", vbInformationExit SubEnd IfFor l = 0 To UBound(varFileList)Dim fsSet fs = CreateObject("Scripting.FileSystemObject")oName = renamepath & CStr(varFileList(l))If fs.FileExists(oName) And Len(CStr(varFileList(l))) > 5 Then nName = renamepath & Left(CStr(varFileList(l)), 5) & "-" & Mid(CStr(varFileList(l)), 6)Name oName As nNameEnd IfNext lMsgBox "全部修改成功!哈哈", vbInformationEnd SubPrivate Function fcnGetFileList(ByVal strPath As String, Optional strFilter As String) As Variant' 将文件列表放到数组Dim f As StringDim i As IntegerDim FileList() As StringIf strFilter = "" Then strFilter = "*.*"Select Case Right(strPath, 1)Case "\", "/"strPath = Left(strPath, Len(strPath) - 1)End SelectReDim Preserve FileList(0)f = Dir(strPath & "\" & strFilter)Do While Len(f) > 0ReDim Preserve FileList(i) As StringFileList(i) = fi = i + 1f = Dir()LoopIf FileList(0) <> Empty ThenfcnGetFileList = FileListElse fcnGetFileList = False End IfEnd Function。
VBA如何实现文件的批量重命名
VBA如何实现文件的批量重命名文件的批量重命名在日常工作和生活中非常常见,通过批量重命名可以提高工作效率并且减少手动操作带来的错误。
在VBA中,我们可以通过编写代码来实现文件的批量重命名,本文将介绍如何使用VBA 实现文件的批量重命名的具体步骤和方法。
1. 打开Excel并创建一个新的工作簿在Excel中,我们首先需要打开一个新的工作簿来进行操作。
可以通过快捷键Ctrl + N来创建一个新的工作簿。
2. 启用开发人员选项卡在Excel中,开发人员选项卡默认是隐藏的,我们需要将其显示出来。
首先点击Excel的 "文件" 菜单,在菜单中选择 "选项",再在选项窗口中选择 "自定义功能区",勾选 "开发人员",点击 "确定"。
3. 进入Visual Basic Editor点击开发人员选项卡中的 "Visual Basic" 按钮,进入Visual Basic Editor界面,在左侧的工程资源管理器中,双击 "Sheet1"(可能叫其它名字)以打开代码编辑器。
4. 编写VBA代码在打开的代码编辑器中,输入以下VBA代码:```Option ExplicitSub RenameFiles()Dim FolderPath As StringDim FileName As StringDim NewName As StringDim Directory As ObjectDim File As Object' 选择文件夹路径With Application.FileDialog(msoFileDialogFolderPicker) .Title = "选择文件夹".ShowIf .SelectedItems.Count <> 0 ThenFolderPath = .SelectedItems(1)End IfEnd WithIf FolderPath = "" ThenExit SubEnd IfSet Directory =CreateObject("Scripting.FileSystemObject").GetFolder(FolderPath)' 循环处理文件For Each File In Directory.FilesFileName = NewName = "New_" & FileName ' 在文件名前添加 "New_"' 重命名文件Name File.Path As Directory & "\" & NewNameNext FileEnd Sub```5. 运行VBA代码点击代码编辑器中的运行按钮(绿色的三角形),或者按下F5键来执行VBA代码。
vba取单元格并批量修改工作表名称的方法
vba取单元格并批量修改工作表名称的方法文章标题:探秘VBA取单元格并批量修改工作表名称的方法在日常工作中,我们经常会遇到需要批量修改Excel工作表名称的情况,而VBA宏是一个非常强大的工具,可以帮助我们轻松实现这一功能。
本文将从VBA取单元格并批量修改工作表名称的方法展开讨论,以便读者能深入了解这一主题。
一、VBA取单元格方法在使用VBA宏时,我们经常需要获取单元格的数值或文本内容进行操作。
VBA提供了多种方法来获取单元格的数值或文本内容,其中最常用的方法包括使用Range对象和Cells对象来读取单元格的值。
通过这些方法,我们可以轻松获取单元格的内容,并将其应用于批量修改工作表名称的操作中。
二、批量修改工作表名称在Excel中,手动修改工作表名称是一件费时费力的工作,特别是当需要修改多个工作表名称时。
而借助VBA宏,我们可以轻松实现批量修改工作表名称的操作。
通过编写循环和使用变量来获取单元格的值,我们可以快速、准确地将单元格的内容应用于工作表名称的修改上。
三、VBA实现方法共享以下是一个简单的VBA宏代码示例,演示如何使用VBA取单元格并批量修改工作表名称的方法:```vbaSub RenameWorksheets()Dim ws As WorksheetDim i As IntegerDim newName As Stringi = 1For Each ws In ThisWorkbook.WorksheetsnewName = Sheets("Sheet1").Cells(i, 1).Value = newNamei = i + 1Next wsEnd Sub```在这个示例中,我们首先定义了一个变量ws作为工作表对象,以及变量i和newName用于循环和保存新的工作表名称。
然后我们使用For Each循环遍历所有工作表,并通过Cells对象获取指定单元格的值,然后将其应用于工作表名称的修改上。
VBA与文件批量重命名的技巧与方法
VBA与文件批量重命名的技巧与方法随着计算机数据的日益增长,对于文件的管理变得越来越重要。
有时候我们需要对大量的文件进行重命名,手动一个一个修改文件名显然不切实际。
这时候,使用VBA(Visual Basic for Applications)编程语言可以帮助我们快速、批量地处理文件重命名的工作。
本文将介绍一些常用的VBA技巧和方法,帮助您进行文件批量重命名。
1. 宏的录制与运行VBA是Microsoft Office套件的一部分,我们可以使用VBA在Office程序中编写和运行宏。
在Excel中,我们可以通过“开发人员”选项卡中的“录制宏”功能来录制我们的操作步骤。
一旦录制完成,我们可以运行宏来重复这些步骤。
对于文件批量重命名,我们可以先手动修改一个文件的名字,然后录制宏来自动化这个过程。
2. 使用FileSystemObject对象FileSystemObject对象是VBA提供的一个强大工具,它允许我们在VBA中操作文件和文件夹。
通过创建一个FileSystemObject对象,我们可以访问文件系统的各种属性和方法,包括文件重命名。
下面是一个示例的VBA代码,用于将指定文件夹下的所有文件重命名:```Sub BatchRenameFiles()Dim fso As Scripting.FileSystemObjectDim folderPath As StringDim folder As Scripting.FolderDim file As Scripting.File' 设置文件夹路径folderPath = "C:\Path\to\folder\"' 创建FileSystemObject对象Set fso = New Scripting.FileSystemObject ' 获取文件夹对象Set folder = fso.GetFolder(folderPath)' 遍历文件夹下的所有文件For Each file In folder.Files' 对每个文件执行重命名操作 = "NewFileName" & Next file' 释放对象Set folder = NothingSet fso = NothingEnd Sub```3. 使用字符串处理函数VBA提供了一系列用于处理字符串的函数,我们可以利用这些函数来对文件名进行操作。
VBA中的文件夹批量重命名和操作技巧
VBA中的文件夹批量重命名和操作技巧在VBA中,文件夹批量重命名和操作是一项非常有用的技巧。
通过使用VBA 编写的宏,我们可以自动化地对文件夹内的所有文件进行重命名、复制、移动和删除等操作。
在这篇文章中,我们将探讨一些VBA中的文件夹批量重命名和操作技巧,帮助您更高效地管理和处理大量文件。
一、文件夹批量重命名批量重命名文件夹中的文件是一个常见的需求。
在VBA中,我们可以通过循环遍历文件夹中的每个文件,并使用FileSystemObject对象的Rename方法进行重命名。
下面是一个示例代码:```vbaSub BatchRenameFiles()Dim FolderPath As StringDim Folder As ObjectDim File As Object' 设置文件夹路径FolderPath = "C:\YourFolderPath"' 创建一个FileSystemObject对象Set Folder = CreateObject("Scripting.FileSystemObject").GetFolder(FolderPath) ' 循环遍历文件夹中的每个文件,并重命名For Each File In Folder.Files = "NewFileName" & Format(File.Index, "000") & File.ExtensionNext File' 清空对象Set Folder = NothingSet File = NothingMsgBox "文件夹中的文件已经成功重命名!"End Sub```这段代码首先定义了文件夹路径,然后通过CreateObject函数创建了一个FileSystemObject对象。
接下来,我们循环遍历文件夹中的每个文件,使用属性对文件进行重命名。
Excel VBA编程 典型实例——批量修改文件名
Excel VBA 编程 典型实例——批量修改文件名为了对计算机磁盘中的文件进行统一管理,可以对其进行批量重命名。
下面借助于Excel 2007中的控件及VBA 代码等知识,通过在Excel 工作表中的对应文件名进行修改,从而达到修改磁盘中的文件名的目的。
1.练习要点● 新建工作簿● 控件的应用2.操作步骤:(1)打开一个Excel 文件,并进入VBE 窗口。
然后,在新建的模块【代码】编辑窗口中,输入下面的代码,以创建工作簿。
Sub 新建工作簿()Workbooks.AddEnd Sub(2)在新建的工作簿中,创建如图15-7所示的表格。
图15-7 创建表格(3)进入VBE 窗口中,新建一个模块,在该模块【代码】编辑窗口中,输入如图15-8所示的代码。
创建表格输入图15-8 输入代码Dim obj As ObjectDim fld, ff, ggSub aa()Range("a2:c3000").ClearContentsOn Error Resume Nextgg = InputBox("请把要批量更名的文件夹地址粘贴或输入到下框中", , 100) Set obj = CreateObject("Scripting.FileSystemObject")Set fld = obj.GetFolder(gg)For Each ff In fld.Filesm = m + 1Cells(m + 1, 1) = Cells(m + 1, 2) = "-------"Cells(m + 1, 3) = NextEnd Sub————————————————Sub bb()On Error Resume NextIf [a2] = "" Then MsgBox "请点击第一步": Exit SubFor Each ff In fld.Filesm = m + 1 = Cells(m + 1, 3)NextMsgBox "改名已完成,请检查", vbOKOnlyEnd Sub(4)在工作表中,插入两个“按钮(窗体控件)”按钮,并分别重命名为“第一步:获取原文件名”和“第二步:改成新文件名”文字,如图15-9所示。
EXCEL中应用VBA实现图片的批量命名
EXCEL中应用VBA实现图片的批量命名作者:孟伟来源:《科教导刊》2011年第33期摘要 Visual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。
也可说是一种应用程式视觉化的Basic Script。
本文着重介绍运用VBA在EXCEL中实现对图片文件的批量命名。
关键词 VBA 宏语言批量命名中图分类号:TP391.1文献标识码:A0 引言在大学学生管理中,我们经常会遇到这样的问题,我们对学生进行图像信息采集的时候,图像采集完了,但是文件名称并没有达到我们的要求。
比如我们要求用学生的身份证号码来命名对应学生的照片。
如果按照原始的重命名方式为每个文件重命名,工作效率是相当低的。
那么,有没有一种好的办法抛开原始的重命名方式,实现图片的批量命名呢?带着这个问题,我们首先想到了VBA,利用VBA能够很好地解决此问题。
1 什么是VBAVisual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。
也可说是一种应用程式视觉化的Basic Script。
例如:可以用EXCEL的宏语言来使EXCEL自动化,使用WORD BASIC使WORD自动化,等等。
2 在EXCEL中应用VBA实现对图片文件的批量命名在某EXCEL表中,有A,B两列数据( A:姓名,B:身份证号码);某文件夹中,有一批以此excel表中的姓名命名的照片。
现在需要用相对应的身份证号重命名这批照片,我们用VBA来实现。
利用VBA实现图片批量重命名步骤:(1)利用消息框提示用户选择需要重命名文件所在的文件夹在磁盘中的位置。
(2)判断指定文件夹中的文件是否存在。
(3)如果存在判断文件名称是否和EXCEL表中某一列数据相对应(本例中,文件夹中图片是以EXCEL表中的姓名命名的)。
Excel批量插入图片VBA代码
Excel 批量插入图片VBA代码(2011-06-24 08:56:26)转载标签:excel批量插入图片代码杂谈在要插入图片的文件夹里新建一个Excel文件,打开这个Excel文件,在要插入图片的单元格里填上图片文件名(不要扩展名),选中要插入图片的单元格,修改单元格的大小以显示所需要的图片大小,运行宏代码。
1、Alt+F11调取VBA编辑窗口,查看代码,将以下代码全部复制进去;2、关闭VBA窗口,Excel-视图-宏-查看宏;3、Book1.xls!Sheet1.insertPic,选中所要插入图片的单元格,执行;4、图片自动插入对应的单元格中。
(图片尺寸均可通过单元格大小进行调解,边框可设置)代码如下:Sub insertPic()' 宏由万加美酒编写,时间: 2009-6-1' Dir函数批量获取指定目录下所有文件名和内容On Error Resume NextApplication.ScreenUpdating = False '关闭屏幕更新Dim MR As RangeFor Each MR In SelectionIf Not IsEmpty(MR) And Dir(ActiveWorkbook.Path & "\" & MR.Value & ".jpg") <> "" Then MR.SelectML = MR.LeftMT = MR.TopMW = MR.WidthMH = MR.Height, ML, MT, MW, MH).Select_ActiveWorkbook.Path & "\" & MR.Value & ".jpg" '当前文件所在目录下以当前单元内容为名称的.jpg图片End IfNextSet MR = NothingApplication.ScreenUpdating = True '开启屏幕更新End Sub我想"按一下按钮,插入图片"我的vba code 如下:Sub Picture_Click_06202010()x = Cells (8, 4).ValueChDir "C:\Users\myname\Desktop\picture\""x" + ".jpg"End Sub*** cells (8, 4) 的值是图片的名称我的vba code 有错..."C:\Users\myname\Desktop\picture\" & x & ".jpg")插入档案时请用全路径,不要用ChDir 变更工作路径,因为ChDir 无法处理变更工作磁盘。
VBA与文件批量操作技巧
VBA与文件批量操作技巧VBA(Visual Basic for Applications)是一种广泛应用于Microsoft Office应用程序中的编程语言,可以用于自动化任务、增强功能和提高办公效率。
在处理大量文件时,VBA可以成为一个强大的工具,帮助我们进行文件的批量操作,从而节省时间和努力。
本文将介绍一些VBA与文件批量操作的技巧,帮助您更高效地处理大量文件。
1. 批量重命名文件在处理大量文件时,有时需要统一修改文件的命名格式。
利用VBA,我们可以轻松实现这一操作。
首先,我们需要遍历文件夹中的所有文件,并逐个重命名。
例如,如果我们想将文件名前缀改为"New_",可以使用如下的VBA代码:```vbaSub BatchRenameFiles()Dim MyFile As ObjectDim MyPath As StringDim NewName As StringMyPath = "C:\YourFolderPath\" '替换为文件所在文件夹的路径NewName = "New_" '替换为新的文件名前缀Set MyFile = CreateObject("Scripting.FileSystemObject") MyFile = MyFile.GetFolder(MyPath).FilesFor Each File In MyFileName File As MyPath & NewName & Next FileEnd Sub```将上述代码中的"C:\YourFolderPath\"替换为实际文件所在的文件夹路径,并将"New_"替换为要添加的前缀。
运行该代码,所有文件名前面都将添加上指定的前缀。
2. 批量复制文件有时,我们需要将一个文件夹中的所有文件复制到另一个文件夹中。
VBA中的文件批量重命名和格式转换方法
VBA中的文件批量重命名和格式转换方法在进行数据处理和文件管理时,文件的重命名和格式转换是常见的任务。
使用VBA(Visual Basic for Applications)编程语言可以轻松实现文件的批量重命名和格式转换,提高工作效率和准确性。
本文将介绍VBA中的文件批量重命名和格式转换方法,为您提供实用的技巧和示例代码。
文件批量重命名使用VBA可以轻松地实现文件的批量重命名。
下面是一种常见的文件批量重命名方法:1.打开Excel并按ALT+F11打开VBA编辑器。
2.在VBA编辑器中,选择插入(Insert)-> 模块(Module),创建一个新的模块。
3.在新的模块中编写以下VBA代码:```vbaSub RenameFiles()Dim FilePath As StringDim FileName As StringDim NewFileName As StringDim OldFile As StringDim NewFile As StringDim i As Long' 设置文件路径FilePath = "C:\YourFolderPath\" '将此路径替换为您的文件夹路径' 获取文件夹中的所有文件FileName = Dir(FilePath & "*.*")' 循环重命名文件Do While FileName <> ""OldFile = FilePath & FileName'修改文件名NewFileName = "NewName" & i & ".filetype" '将"NewName"替换为您想要的新文件名,"filetype"替换为您想要的文件类型NewFile = FilePath & NewFileName'重命名文件Name OldFile As NewFile'移动到下一个文件FileName = Diri = i + 1LoopMsgBox "文件重命名完成!"End Sub```4.将代码中的"C:\YourFolderPath\"替换为您要重命名的文件夹路径,并根据需要修改新的文件名和文件类型。
【实验】Word批量重命名VBA代码
【实验】Word批量重命名VBA代码Word批量重命名VBA代码2009年12月31日 | 分类: 技术相关 | 标签: Excel, VBA, Word, 实验朋友有个问题找我帮忙,说是要把一大堆的Word文件按Word 的标题(也可以说是Word文件内容的第一行了)重命名。
呵呵,文件太多了,人力做太费时了,我就帮帮忙了。
看代码吧,是VBA的。
Option ExplicitDim arrFiles()Dim cntFiles%Sub Main()Dim i%, StartFolder$, SavePath$Dim fso As New FileSystemObject, fd As FolderReDim arrFiles(1 To 1000)cntFiles = 0StartFolder = "D:\Word"'原文件目录SavePath = "D:\Word2"'改名后的文件目录Set fd = fso.GetFolder(StartFolder)SearchFiles fdReDim Preserve arrFiles(1 To cntFiles)For i = 1 To cntFilesRenameDocument arrFiles(i), SavePath, iNext iEnd SubSub SearchFiles(ByVal fd As Folder)Dim fl As FileDim sfd As FolderFor Each fl In fd.FilesIf LCase(Right(fl.Path, 4)) = ".doc"ThencntFiles = cntFiles + 1If cntFiles >= UBound(arrFiles) Then ReDim Preserve arrFiles(1 To cntFiles + 1000)arrFiles(cntFiles) = fl.PathEnd IfNext flIf fd.SubFolders.Count = 0 Then Exit SubFor Each sfd In fd.SubFoldersSearchFiles sfdNextEnd SubSub RenameDocument(ByVal wordFileName, ByVal wordFilePath, ByVal num)On Error Resume NextDim myTitle$, myFileName$Dim mydoc As Document, myRange As RangeSet mydoc = Word.Documents.Addmydoc.ActivateSelection.InsertFile fileName:=wordFileName, Range:="", ConfirmConversions:= _False, Link:=False, Attachment:=FalseActiveWindow.View.Type = wdPageViewSet myRange = mydoc.Paragraphs.First.RangemyRange.SetRange myRange.Start, myRange.End - 1myTitle = Trim(myRange.Text)If (myTitle = "") Or (Len(myTitle) > 50) ThenDebug.Print"ERR:--------------------------------------------" + wordFileNameShell "cmd.exe /c echo " & "ERR:--------------------------------------------" & wordFileName & ">>D:\Word.log"mydoc.Close SaveChanges:=wdDoNotSaveChangesSendKeys ("{ESC}")Exit SubEnd IfmyFileName = wordFilePath + "\" + myTitle + ".doc"mydoc.SaveAs myFileNamemydoc.Close SaveChanges:=wdDoNotSaveChangesDebug.Print num & ":"& wordFileName & "="& myFileNameShell "cmd.exe /c echo " & num & ":" & wordFileName & "=" & myFileName & ">>D:\Word.log"End Sub这个是Excel里的VBA代码,差不多的。
Excel VBA批量重命名工作表
VBA Excel工作表重命名Excel工作表重命名,你是否还在一个个的手动修改,学会VBA代码,快速批量重命名工作表。
1、从最简单的代码入手,先遍历工作薄中所有工作表,如查询到需改名工作表名称,重命名工作表。
代码如下:Dim Sheets As WorksheetApplication.DisplayAlerts = False '防提示'遍历工作表For Each Sheets In WorksheetsIf = "Sheet1" Then '遍历同一工作薄中工作表,判断工作表有无“Sheet1”工作表。
= "你好" '指定工作表修改为指定名称End IfNextApplication.DisplayAlerts = True2、思路再严谨,修改名称之前,先做两个判断,如将工作表“Sheet1”重命名为“Sheet3”,需判断工作表“Sheet1”是否存在,是否有名为“Sheet3”的工作表。
“Sheet1”工作表存在,“Sheet3”不存在,才能重命名成功,代码如下:Dim Sheets As WorksheetDim SheetsName As StringDim i As Integeri = 0 '定义变量,判断是否有目标工作表名称Dim j As Integerj = 0 '定义变量,判断是否有需修改工作表名称On Error Resume Next'代码出错时继续运行Application.DisplayAlerts = False '防提示'遍历工作表For Each Sheets In WorksheetsIf = "Sheet2" Then '判断工作表名称,判断是否有目标工作表名称i = 1 '有目标工作表名称,变量修改j = 2 '变量修改,直接退出,不再查找需修改工作表名称MsgBox ("有" + + "工作表,不可修改名称")Exit ForEnd IfNextIf i <> 1 ThenFor Each Sheets In WorksheetsIf = "Sheet1" Then '判断工作表名称,判断是否有需修改工作表名称 = "Sheet2" '指定工作表修改为指定名称MsgBox ("已修改完成")j = 1Exit For '修改完成后,直接退出FOR循环End IfNextEnd IfIf j <> 1 And j <> 2 ThenMsgBox ("没找到Sheet1工作表,请查证后重试")End IfApplication.DisplayAlerts = True3、批量修改工作表名称,将源工作表名称和重命名后的工作表名称对应的放在Excel表格内,VBA代码提取Excle表格的名称,并批量修改对应工作表名称。
利用EXCELvba批量修改文件名以及自动插图到word
利用EXCELvba批量修改文件名以及自动插图到word利用E X C E L v b a批量修改文件名以及自动插图到w o r d集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]前段时间,因编写报告,需要把成果图片修改名字后,将图以及相应的名字插入word文档中。
一次报告,至少200张图,花了数个小时才弄完工作,同时难免出现差错。
之后就一直寻找捷径,基于excel vba以前有一点基础,现将整理出来的代码分享给大家。
可以去下载我编好的excel 小程序,里面有详细代码,地址在最下方。
欢迎直接试用下,给个反馈建议.1.查找文件夹中符合图片格式的文件,返回其名字Dim fs, f, f1, fc, sDim arr As StringSet fs = CreateObject("")Address =Address = Left(Address, InStrRev(Address, "\", Len(Address))) '获得当前工作表所在文件夹路径Set f = (Address)Set fc =i = 2For Each f1 In fc '遍历文件If FileIspicture Then ' 引用了自定义函数 FileIspicture 判断是否为需要查找的文件格式phname = '获取文件名houzhui = Right(phname, Len(phname) - InStrRev(phname, ".", Len(phname)) + 1) (i, 1) = Left(phname, InStrRev(phname, ".", Len(phname)) - 1)(i, 2) = houzhuii = i + 1End IfNext2.修改文件名称Sub changename()Dim Address As StringAddress =Address = Left(Address, InStrRev(Address, "\", Len(Address))) n = , 1).End(xlUp).rowFor i = 2 To n '修改名称pname = (i, 1) & (i, 2)textname = (i, 3)houzhui = Right(pname, Len(pname) - InStrRev(pname, ".", Len(pname)) + 1) '获取后缀Name Address & pname As Address & textname & houzhui Next iMsgBox "名称已改"End Sub3.批量插图到wordDim appWD AsDim Address As StringmyName = "" '新建的word名称Address =Address = Left(Address, InStrRev(Address, "\", Len(Address))) mydoc = Address & myNameOn Error Resume Next '错误处理Kill (mydoc)On Error GoTo 0On Error Resume NextSet appWD = GetObject(, "")SaveChanges:=wdDoNotSaveChangesSet appWD = CreateObject("") '连接wordfilename:=mydoc= Truen = , 1).End(xlUp).row '获取工作表有效部分的最大行数For i = 2 To n '插入图片pname = (i, 1) & (i, 2)textname = (i, 3)filename:=Address & pname, LinkT oFile:= _False, SaveWithDocument:=TrueText:=textnamehouzhui = Right(pname, Len(pname) - InStrRev(pname, ".", Len(pname)) + 1)Next i'居中,修改字体大小为10,字体加粗= wdAlignParagraphCenter= 10= "宋体"= wdToggle4.修改图片大小,使每页正好两张图Dim picwidthDim picheightFor i = 1 To 'InlineShapes类型图片H =W = (i).Width HIV = W / HH = 325W = HIV * HIf W >= 415 Then W = 415H = W / HIVEnd If(i).Height = H (i).Width = W Next i这个需要1积分这个免费。
VBA批量重命名与文件处理的实用技巧与方法分享
VBA批量重命名与文件处理的实用技巧与方法分享在日常工作中,我们经常需要处理大量的文件,如重命名文件、移动文件、复制文件等等。
这些操作如果手动一个一个进行,将耗费大量的时间和精力。
然而,利用VBA(Visual Basic for Applications)编程语言,我们可以轻松地批量处理文件,提高工作效率。
本文将分享一些实用的VBA技巧与方法,帮助您更好地进行批量重命名与文件处理。
一、VBA批量重命名文件1. 批量重命名文件夹中的文件:编写一个宏,通过循环遍历文件夹中的所有文件,并逐一重命名。
可以使用FileSystemObject对象中的相关方法来实现,如下所示:```vbaSub BatchRenameFiles()Dim FSO As ObjectDim SourceFolder As ObjectDim File As ObjectDim NewName As StringSet FSO = CreateObject("Scripting.FileSystemObject")Set SourceFolder = FSO.GetFolder("文件夹路径")For Each File In SourceFolder.FilesNewName = "新文件名" &FSO.GetExtensionName() = NewNameNext FileSet FSO = NothingSet SourceFolder = NothingEnd Sub```2. 批量在文件名前或后添加前缀或后缀:如果需要给文件名添加前缀或后缀,也可以借助VBA的字符串函数来实现。
例如,如果要在文件名前添加前缀"前缀_",可以使用以下代码:```vbaSub BatchAddPrefix()Dim FSO As ObjectDim SourceFolder As ObjectDim File As ObjectDim OldName As StringDim NewName As StringSet FSO = CreateObject("Scripting.FileSystemObject") Set SourceFolder = FSO.GetFolder("文件夹路径")For Each File In SourceFolder.FilesOldName = NewName = "前缀_" & OldName = NewNameNext FileSet FSO = NothingSet SourceFolder = NothingEnd Sub```二、VBA文件处理方法1. 批量移动文件:如果需要将文件夹中的文件移动到另一个文件夹中,可以使用FileSystemObject对象的MoveFile方法。
VBA在文件处理与批量操作中的实用方法
VBA在文件处理与批量操作中的实用方法随着办公自动化的不断发展,VBA(Visual Basic for Applications)作为Microsoft Office套件中的一种编程语言,已经成为许多办公人员必备的技能之一。
VBA在文件处理与批量操作中具有重要的作用,通过编写VBA代码,可以实现自动化处理、批量修改、数据导入导出等一系列操作,提高工作效率。
本文将介绍几种常用的VBA实用方法,帮助读者更好地应用VBA进行文件处理与批量操作。
一、自动化文件处理VBA可以帮助我们实现自动化文件处理,例如自动打开、保存、关闭文件,实现批量操作。
以下是一段演示如何自动处理文件的VBA代码:```Sub AutoFileProcessing()Dim MyFolder As StringDim MyFile As String'设置文件夹路径MyFolder = "C:\Documents\"'获取文件夹中的所有文件MyFile = Dir(MyFolder & "\*")'循环处理文件Do While MyFile <> ""'打开文件Workbooks.Open Filename:=MyFolder & "\" & MyFile'在此处编写文件处理的代码'保存并关闭文件ActiveWorkbook.SaveActiveWorkbook.Close'移动到下一个文件MyFile = DirLoopEnd Sub```通过上述代码,我们可以实现对指定文件夹下的所有文件进行批量处理。
在代码中,我们首先设置了文件夹路径,然后通过`Dir`函数获取该文件夹中的所有文件名。
接下来,在循环中逐个打开文件,对文件进行处理(在注释处编写相应的处理代码),最后保存并关闭文件。
VBA实用小程序:将Excel中的内容输入到Word
VBA实用小程序:将Excel中的内容输入到Wordexcelperfect将Excel数据输入到Word文档并不难,但这会破坏书签,如果你在对Word文档进行了大量修改后发现想要重新从Excel中输入数据,那可能会令人沮丧。
我想要一个可以根据需要经常重复的将Excel数据输入到Word,这意味着在复制完成后要重新创建书签。
在此情况下,我想要一些简单的东西,任何人都可以在没有技术知识的情况下进行设置。
因此,下面的这段代码很简单,对其进行设置,只需为Excel中的文本、区域和图表命名,并按照代码中的说明在Word书签中创建匹配的名称。
注意,我不能保证它在所有情况下都能工作。
完整的代码:'这里的代码使用书签将图表和表复制到Word文档中'Word文档必须打开并处于活动状态,即当前可见的Word文档'要复制一个表,给它一个以tbl开头的区域名称'然后在Word文档中插入一个使用该名称的书签,'如果表的名称是tblPerf3Yrs,则在该名称前加上tag_前缀'然后添加书签tag_tblPerf3Yrs'与图表类似,可以为图表命名以'cht'开头'确保选择完整的图表,而不仅仅是其中的一部分'在给它一个名字时,最安全的是点击图表前按Ctrl'然后你在Word中包含一个具有此名称的书签,同样以tag_ 为前缀'运行下面的宏应该复制所有内容'注意这种方法意味着不能多次插入相同的图表/表格'因为Word出于显而易见的原因不允许重复的书签名称Dim WdApp As Object 'Word.ApplicationDim doc As Object 'Word.DocumentDim t'主程序Public Sub MergeT oWord()Application.Calculation= xlCalculationManualApplication.ScreenUpdating = False'打开WordSet WdApp= NothingSet doc =NothingOn Error Resume NextSet WdApp= GetObject(, 'Word.Application')If Err<> 0 ThenMsgBox '检查Word文档是打开的'Exit SubEnd If'获取活动文档Set doc =WdApp.ActiveDocumentIf Err<> 0 ThenMsgBox '连接到当前Word文档时错误: ' &Err.MessageExit SubEnd IfOn Error GoTo 0'处理表和图表'在Word中查找所有相关标签并处理它们ReDim B(WdApp.ActiveDocument.bookmarks.Count) As ObjectDim i As Long'在数组中存储标签, 然后逐一处理它们'不能遍历它们因为当发生粘贴时Word销毁了它们'下面的代码重新创建它们,'但这会抛出编号并使普通循环难以在数组中存储书签For i = 1 To WdApp.ActiveDocument.bookmarks.CountSet B(i) = WdApp.ActiveDocument.bookmarks(i)Next i'处理它们For i = 1 To UBound(B)If InStr(1, B(i).Name, 'tag_', vbTextCompare) = 1 ThenPasteToWord B(i)End IfNext i'激活Word以便用户能核查结果WdApp.ActivateSet WdApp= NothingApplication.StatusBar= Falset = Timer- tEnd Sub'处理Word标签Private Sub PasteToWord(B As Object, OptionalMethod As String = 'Metafile') 'tag As String)On Error Resume NextDim strTag As StringDim tag As Stringtag =strTag =Mid$(, 5)If Err<> 0 Then Exit SubOn Error GoTo 0'选择书签区域B.Range.Select'标记书签的开始Dim rngMark As ObjectSet rngMark = WdApp.Selection.Range'b.Range.T ext = vbNullString'b.Range.Delete'基于标签名, 选择是否粘贴表或图表If InStr(tag, 'tag_tbl') > 0 ThenrngMark.Collapse 1PasteTableToWord BElseIf InStr(tag, 'tag_cht') > 0 Then'b.Range.T ext = vbNullString'rngMark.Collapse 1B.Range.Delete'b.Range.SelectCopyChartToWord B, rngMark, MethodrngMark.End = WdApp.Selection.EndWdApp.ActiveDocument.bookmarks.Add tag, rngMark ElseIf InStr(tag, 'tag_txt') > 0 ThenrngMark.Collapse 1PasteTextToWord BElseIf InStr(tag, 'tag_pic') > 0 ThenrngMark.Collapse 1PastePicToWord BElseExit SubEnd IfIf InStr(tag, 'tag_cht') = 0 Then'标记粘贴内容的结尾rngMark.End = WdApp.Selection.End'再次添加书签WdApp.ActiveDocument.bookmarks.Add tag, rngMark End If'清理Cleanup:Application.CutCopyMode = False Application.StatusBar = FalseEnd Sub'粘贴文本'标签必须作为Excel中的区域存在才能使其工作Private Sub PasteT extToWord(B As Object) Dim strTag As StringOn Error Resume NextstrTag =Mid$(, 5)If Err<> 0 Then Exit SubOn Error GoTo 0Dim txtTag As StringDim u As LongtxtTag =strTagOn Error Resume NextRange(txtTag).CopyIf Err =0 ThenIf InStr(1, txtTag, 'txt', vbTextCompare) > 0 Then With WdApp.Selection.Select.ClearContents.PasteAndFormat (22)End WithElseWith WdApp.Selection.Select.ClearContentsWdApp.Selection.PasteAndFormat (22)End WithEnd IfElseWdApp.ActiveDocument.Selection = '*** 没有找到 ***'End IfOn Error GoTo 0End SubPrivate Sub PastePicToWord(B As Object)Dim strTag As StringOn Error Resume NextstrTag =Mid$(, 5)If Err<> 0 Then Exit SubOn Error GoTo 0Dim txtTag As StringDim u As LongtxtTag =strTag'查找图表Dim w As Worksheet, pic As PictureFor Each w In ActiveWorkbook.SheetsSet pic = w.Pictures(strTag)If Not pic Is Nothing Then Exit ForNext wIf pic Is Nothing Then Exit SubOn Error Resume Nextpic.CopyIf Err =0 ThenWdApp.Selection.Paste 'Special Link:=False, DataType:=8, Placement:=0 'shape, inlineEnd IfOn Error GoTo 0End Sub'粘贴表'标签必须作为Excel中的区域存在才能使其工作Private Sub PasteT ableToWord(B As Object)Dim strTag As StringOn Error Resume NextstrTag =Mid$(, 5)If Err<> 0 Then Exit SubOn Error GoTo 0Dim tblTag As StringDim u As LongtblTag =strTagOn Error Resume NextRange(tblTag).CopyIf Err =0 ThenIf InStr(1, tblTag, 'tbl', vbTextCompare) > 0 Then With WdApp.Selection.Tables(1).Select.Tables(1).Delete.PasteSpecial DataType:=1, Placement:=0 '9'.PasteAndFormat (0) '默认粘贴End WithElseWith WdApp.Selection.Tables(1).Select.Tables(1).DeleteWdApp.Selection.PasteAndFormat (22) '纯文本End WithEndIfElseWdApp.ActiveDocument.Selection = '*** 没有找到 ***' End IfOn Error GoTo 0End Sub'复制图表'图表名称必须与 Word 标签相同才能工作'图表必须在当前工作表中'Method可以是下面在Select Case子句中列出的任何值Private Sub CopyChartToWord(B As Object, rngMark,Optional Method As String = 'Metafile')On Error Resume NextDim strTag As StringstrTag =Mid$(, 5)If Err<> 0 Then Exit SubOn Error GoTo 0'查找图表Dim w As Worksheet, cht As ChartObjectFor Each w In ActiveWorkbook.SheetsSet cht = w.ChartObjects(strTag)If Not cht Is Nothing Then Exit ForNext wIf cht Is Nothing Then Exit SubOn Error Resume Nextcht.CopyIf Err =0 ThenSelect Case MethodCase 'Metafile'rngMark.PasteSpecial DataType:=3, Placement:=0 '图元文件,内联Case 'Enhanced metafile'WdApp.Selection.PasteSpecialDataType:=9, Placement:=0 '图元文件,内联Case 'Bitmap'WdApp.Selection.PasteSpecial DataType:=4, Placement:=0 '图元文件,内联Case 'Drawing'WdApp.Selection.PasteSpecial link:=False, DataType:=8, Placement:=0 '形状, 内联Case 'JPG'Dim fName As StringfName = ThisWorkbook.Path & '\tmp.jpg'cht.Chart.Export fName, 'JPG'WdApp.Selection.InlineShapes.AddPictureFilename:=fName,LinkToFile:=False, SaveWithDocument:=True Kill fNameEnd SelectElseWdApp.ActiveDocument.Selection.T ext = '*** 没有找到 ***'End IfOn Error GoTo 0End Sub注:本程序整理自,供学习参考。
如何将图片批量导入word中并附加文件名(源代码)
【目标任务】:现有多张图片,需插入一个Word文件中,要求图片大小一致,并显示图片文件的名称。
如果手动操作,非常费时费力,且效果不好,难以做到每张图片大小一致。
快速实现此功能的方法如下:【操作方法】:新建一个空白的word文档。
工具——宏——vb编辑器——打开this document ——把下面代码粘入编辑窗口——保存打开这个word文档——工具——宏——执行下面的不用我说了,最后记得通配符批量替换照片就可以一行显示多张了。
Sub InsertPic()Dim myfile As FileDialogSet myfile = Application.FileDialog(msoFileDialogFilePicker)With myfile.InitialFileName = C001If .Show = -1 ThenFor Each fn In .SelectedItemsSet mypic = Selection.InlineShapes.AddPicture(FileName=fn, SaveWithDocument=True)'按比例调整相片尺寸WidthNum = mypic.Widthc = 15 '在此处修改相片宽,单位厘米mypic.Width = c 28.35mypic.Height = (c 28.35 WidthNum) mypic.HeightIf Selection.Start = ActiveDocument.Content.End - 1 Then '如光标在文末Selection.TypeParagraph '在文末添加一空段ElseSelection.MoveDownEnd IfSelection.Text = Basename(fn) '函数取得文件名Selection.EndKeyIf Selection.Start = ActiveDocument.Content.End - 1 Then '如光标在文末Selection.TypeParagraph '在文末添加一空段ElseSelection.MoveDownEnd IfNext fnElseEnd IfEnd WithSet myfile = NothingEnd SubFunction Basename(FullPath) '取得文件名Dim x, yDim tmpstringtmpstring = FullPathx = Len(FullPath)For y = x To 1 Step -1If Mid(FullPath, y, 1) = Or _Mid(FullPath, y, 1) = Or _Mid(FullPath, y, 1) = Thentmpstring = Mid(FullPath, y + 1)Exit ForEnd IfNextBasename = Left(tmpstring, Len(tmpstring) - 4) End Function。
VBA中的文件批量处理技巧与实例
VBA中的文件批量处理技巧与实例文件批量处理是在日常办公中经常需要进行的任务之一,通过使用VBA(Visual Basic for Applications)编程语言,可以简化和加速这一过程。
本文将介绍一些VBA中的文件批量处理技巧与实例,帮助您提高工作效率。
一、批量重命名文件在文件批量处理中,经常遇到需要修改文件名的情况。
使用VBA,可以轻松实现批量重命名文件的操作。
以下是一个简单的示例代码:```vbaSub RenameFiles()Dim basePath As StringDim fileName As StringDim newName As StringDim filePath As StringbasePath = "C:\Documents\" ' 设置基本路径fileName = Dir(basePath & "*.doc*") ' 搜索以.doc开头的所有文件Do While fileName <> ""filePath = basePath & fileName ' 获取文件路径newName = "NewName_" & fileName ' 设置新的文件名Name filePath As basePath & newName ' 执行文件重命名fileName = Dir ' 获取下一个文件LoopMsgBox "文件重命名完成!"End Sub```在上述示例中,我们首先设置了基本路径,然后使用`Dir`函数遍历路径下以`.doc`开头的所有文件。
使用`Name`语句将每个文件重命名为带有"NewName_"前缀的新文件名。
最后,使用`MsgBox`函数显示消息框提示操作完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前段时间,因编写报告,需要把成果图片修改名字后,将图以及相应的名字插入word文档中。
一次报告,至少200张图,花了数个小时才弄完工作,同时难免出现差错。
之后就一直寻找捷径,基于excel vba以前有一点基础,现将整理出来的代码分享给大家。
可以去下载我编好的excel 小程序,里面有详细代码,地址在最下方。
欢迎直接试用下,给个反馈建议.
1.查找文件夹中符合图片格式的文件,返回其名字
Dim fs, f, f1, fc, s
Dim arr As String
Set fs = CreateObject("")
Address =
Address = Left(Address, InStrRev(Address, "\", Len(Address))) '获得当前工作表所在文件夹路径
Set f = (Address)
Set fc =
i = 2
For Each f1 In fc '遍历文件
If FileIspicture Then ' 引用了自定义函数 FileIspicture 判断是否为需要查找的文件格式
phname = '获取文件名
houzhui = Right(phname, Len(phname) - InStrRev(phname, ".",
Len(phname)) + 1)
(i, 1) = Left(phname, InStrRev(phname, ".", Len(phname)) - 1) (i, 2) = houzhui
i = i + 1
End If
Next
2.修改文件名称
Sub changename()
Dim Address As String
Address =
Address = Left(Address, InStrRev(Address, "\", Len(Address)))
n = , 1).End(xlUp).row
For i = 2 To n '修改名称
pname = (i, 1) & (i, 2)
textname = (i, 3)
houzhui = Right(pname, Len(pname) - InStrRev(pname, ".", Len(pname)) + 1) '获取后缀
Name Address & pname As Address & textname & houzhui
Next i
MsgBox "名称已改"
End Sub
3.批量插图到word
Dim appWD As
Dim Address As String
myName = "" '新建的word名称
Address =
Address = Left(Address, InStrRev(Address, "\", Len(Address))) mydoc = Address & myName
On Error Resume Next '错误处理
Kill (mydoc)
On Error GoTo 0
On Error Resume Next
Set appWD = GetObject(, "")
SaveChanges:=wdDoNotSaveChanges
Set appWD = CreateObject("") '连接word
filename:=mydoc
= True
n = , 1).End(xlUp).row '获取工作表有效部分的最大行数
For i = 2 To n '插入图片
pname = (i, 1) & (i, 2)
textname = (i, 3)
filename:=Address & pname, LinkToFile:= _
False, SaveWithDocument:=True
Text:=textname
houzhui = Right(pname, Len(pname) - InStrRev(pname, ".", Len(pname)) + 1)
Next i
'居中,修改字体大小为10,字体加粗
= wdAlignParagraphCenter
= 10
= "宋体"
= wdToggle
4.修改图片大小,使每页正好两张图
Dim picwidth
Dim picheight
PictureToWord CSDN下载地址这个需要1积分PictureToWord RaySource下载地址这个免费。