分享

关于WORD中以文件内容首行重命名

 本明书馆 2013-04-12

关于WORD中以文件内容首行重命名 [复制链接]

Excel易用宝,让你更高效!

My Computer:WinXP SP2+Office 2003 SP2

我有很多word文档放在文件夹内,文件名是无规律的,现在想用文件的首行来重命名文件。(若首行为空行先删除空行)

在网站上找到了一个答案,但是不知道怎么调试。因为没有编程经验,对VBA,VBE也不熟悉,请高手指点。

PS:下面的编程语句放在word宏里,我没法打开宏得到结果,请顺便告知要是语句能实现的话,是不是能批处理某个文件夹里的所有word文档的?

Sub ReNameDoc() '此代码功能为列出重命令指定文件夹中所有选取的WORD文件
    '声明变量
    Dim MyDialog As FileDialog, vrtSelectedItem As Variant, A As Byte, MyDoc As Document
    Dim OldName As String, NewName As String, MyRange As Range
    '当一个运行时错误发生时,控件转到紧接着发生错误的语句之后的语句,并在此继续运行
    On Error Resume Next
   
    '定义一个文件夹选取对话框
    Set MyDialog = Application.FileDialog(msoFileDialogFilePicker)
    With MyDialog
        .Filters.Clear '清除所有文件筛选器中的项目
        .Filters.Add "所有WORD文件", "*.doc", 1 '增加筛选器的项目为所有WORD文件
        .AllowMultiSelect = True '允许多项选择
        If .Show = -1 Then '确定
        For Each vrtSelectedItem In .SelectedItems '在所有选取项目中循环
        Set MyDoc = Documents.Open(FileName:=vrtSelectedItem, Visible:=False)
        OldName = vrtSelectedItem '取得原文件名
        Debug.Print OldName
        For A = 1 To 10 '循环
        Set MyRange = MyDoc.Paragraphs(A).Range
        If Len(MyRange.Text) > 1 Then
        Exit For '如果该段落文本长度大小于(非空白段落),则退出循环
        If MyRange.Information(wdWithInTable) Then '如果在表格中,则去除最后两个字符
        NewName = Mid(MyRange.Text, 1, Len(MyRange.Text) - 2)
        Else '如果为正常段落不在表格中,则去除最后一个段落标记
        NewName = Mid(MyRange.Text, 1, Len(MyRange.Text) - 1)
        End If
        MyDoc.Close False '关闭文件
        '去除空格
        NewName = VBA.Trim(NewName) '重新定义新的文件名
        NewName = .InitialFileName & NewName '如果已经存在该文件名,则加上时间数,加以区别
        If Dir(NewName & ".Doc", vbDirectory) <> "" Then
        NewName = NewName & Timer '重命名该文件
        Name OldName As NewName & ".Doc"
        Else
        End If
    End With
End Sub

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多