【问题标题】:How to change filename using macro?如何使用宏更改文件名?
【发布时间】:2018-01-26 06:52:49
【问题描述】:

现在我有一个文档,我想保存它,但文件名应该是迭代的 例如。 1.docx 然后如果我运行宏它应该保存为 2.docx 等等。 我可以从文档中取一个单词作为文件名的变量吗 例如。我想使用文档中的第 45 个单词作为文件名 那我该怎么做呢?

【问题讨论】:

标签: vba ms-word


【解决方案1】:

我目前没有公开消息,因此无法编写具体示例。以下是如何找到答案的提示。

在 word 中,您可以选择文本范围。在这些范围内有许多内置集合。 “段落”和“单词”就是其中的一些例子。 解决问题的最简单方法是选择 Document Range,然后遍历 Words 集合,直到找到第 45 个单词。

但是,MSDN 指出,一些非单词也保留在此集合中,因此您可能希望在迭代时进行过滤。 (顺便说一句,小心他们的例子,在 for-each 循环中删除项目会产生后果

假设“rngWords”是您选择的文档范围(单词集合),您可能类似于(不是真正的代码):

Counter = 0
selectedWord = ""
for iterator = 1 to rngWords.Count
    loopWord = rngWords(iterator)
    if trueword then Counter = Counter + 1
    if counter = 45 then  ' magic number = 45 based on your post.
        selectedword = loopWord
        exit loop
    end if
next iterator

您可以尝试(例如debug.print loopWord)来确定如何确定一个真实的单词。如果您的文档中没有 45 个单词,您还必须解决会发生什么情况——例如你可以说最后一句话。可能最好的方法是先检查计数(if rngWords.Count < 45 then .... else (loop)

【讨论】:

    【解决方案2】:

    检索号码。来自文档,使用下面的链接

    Getting char from string at specified index in the visual basic

    用于保存文件

    Sub ExampleToSaveWorkbook()
    Workbooks.Add
    'Saving the Workbook
    ActiveWorkbook.SaveAs "C:\WorkbookName.xls"
    'OR
    'ActiveWorkbook.SaveAs Filename:="C:\WorkbookName1.xls"
    End Sub
    

    【讨论】:

    • 显示的示例特定于 Excel 而不是 Word。是的,命令类似,但经验不足的提问者可能会感到困惑。
    猜你喜欢
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多