【发布时间】:2018-01-26 06:52:49
【问题描述】:
现在我有一个文档,我想保存它,但文件名应该是迭代的 例如。 1.docx 然后如果我运行宏它应该保存为 2.docx 等等。 我可以从文档中取一个单词作为文件名的变量吗 例如。我想使用文档中的第 45 个单词作为文件名 那我该怎么做呢?
【问题讨论】:
-
向我们展示您的尝试...stackoverflow.com/help/how-to-ask
现在我有一个文档,我想保存它,但文件名应该是迭代的 例如。 1.docx 然后如果我运行宏它应该保存为 2.docx 等等。 我可以从文档中取一个单词作为文件名的变量吗 例如。我想使用文档中的第 45 个单词作为文件名 那我该怎么做呢?
【问题讨论】:
我目前没有公开消息,因此无法编写具体示例。以下是如何找到答案的提示。
在 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))
【讨论】:
检索号码。来自文档,使用下面的链接
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
【讨论】: