我正在尝试使用非常简单的单词宏创建Word文档.宏搜索我放置在文本中的书签,然后在该位置添加一个日期,即未来2周.
但是当我从模板创建一个新文档时,我一直没有找到书签.我已经经历了很多次,有时书签就在那里,有时它在那里,但不允许你点击"转到".
我怎样才能让它发挥作用?我在活动中添加了一小段代码,Document_New()但仍然无法报告书签.
我将文档放在rar文件中,因为我的web服务器无法处理.dotm扩展. 文献
我该如何制作,以便在从此模板生成新文档时,新文档的日期提前2周放在2个粗体部分之间?
Sub Two_Weeks_Ahead()
''# Two_Weeks_Ahead Makro
Selection.GoTo What:=wdGoToBookmark, Name:="TwoWeeks"
With ActiveDocument.Bookmarks
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
Dim dt As Date
dt = DateAdd("d", 14, DateTime.Now)
Selection.TypeText Text:=Format(dt, "yyyy-MM-dd")
End Sub
Private Sub Document_New()
Selection.GoTo What:=wdGoToBookmark, Name:="TwoWeeks"
With ActiveDocument.Bookmarks
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
Dim dt As Date
dt = DateAdd("d", 14, DateTime.Now)
Selection.TypeText Text:=Format(dt, "yyyy-MM-dd")
End Sub
Run Code Online (Sandbox Code Playgroud) 我有一个宏,可以在我的文档中找到所有'标题1'样式,并在UserForm的ComboBox中列出它们.
我的问题是我正在使用的查找例程也在我要复制的文本之后选择段落标记(),并且正在ComboBox中显示.
如何从字符串中删除它?我试过期运用replace(),更换vbCrLf,vbCr,vbLf,vbNewLine,^p,v,Chr(244)和Asc(244)用"",但一切都没有succeeeded.例如 -
sanitizedText = Replace(Selection.Text, "^v", "")
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助解决这个问题吗?谢谢.
这是我的表格看起来 -

我想从文档中获取修改后的原始文本.我是这样做的:
Set wrdDoc = wrdApp.Documents.Open(fileName)
For each sent in wrdDoc.Sentences
if sent.Revisions.Count >=0 then
after=sent.text
sent.Revisions.RejectAll
before=sent.text
SaveRev(before,after)
End if
next
Run Code Online (Sandbox Code Playgroud)
现在这样会很好,除了那些畸形的句子之外
这是一句话.这是另一个.
将以一种奇怪的方式解析.首先,会出现这样的一句:" 这是一句话. "然后这一句既有" 这是一句话.这是另一句话. "
当有修改时会发生什么?第一次迭代将恢复对第一个句子的修订,然后第二次迭代将不会"看到"该修订部分.
底线是,第一次迭代将获得第一个句子的两个版本,第二次迭代将只获得第一个句子的原始版本(同时从第二个句子获得两个版本).
让我澄清一下:
假设我有原版
我们从这句话开始.这句话.
它被修改为
我们以这句话结束了.还有这句话.
第一次迭代将导致
之前:我们从这句话开始.
之后:我们以这句话结束了.
但第二次迭代将有
之前:我们以这句话结束了.这句话.
之后:我们用这句话结束了.还有这句话.
好吧,我所做的是改变逻辑,撤消版本恢复:
Set wrdDoc = wrdApp.Documents.Open(fileName)
For each sent in wrdDoc.Sentences
if sent.Revisions.Count >=0 then
wrdDoc.Undo
after=sent.text
sent.Revisions.RejectAll
before=sent.text
SaveRev(before,after)
End if
next
Run Code Online (Sandbox Code Playgroud)
我喜欢这个,因为我最终得到了一个未经改动的文件(最后一句除外).
问题是,这样做会将宏放在一个特定句子的无限循环中.
我不知道每个人的机制,我不知道导致它挂起的原因.显然改变集合会搞乱循环,但我不明白为什么.
我可以将i = 0循环到wrdDoc.Sentences.Count,但我认为这会让我跳过句子的原因与我现在重复的一样,我不能冒险(即使我测试好了,我必须是确定它永远不会发生).
所以问题是(是):
非常感谢你!
PS:我可以提供样本文件,让我知道是否需要(也许我做错了已经让某人清楚了,我必须制作样本,因为我无法分享我正在处理的文件).
- …
我在文档中有一堆看起来像这样的表:
| Thing | Title |
|-----------|:---------:|
| Info | A, B, C. |
| Score | Foo |
| More Info | Long Text |
| Proof | Blah |
Figure 1
<Screenshot of Proof>
Run Code Online (Sandbox Code Playgroud)
我想让它看起来像这样(左上角的单元格中的数字):
| Thing #1 | Title |
|-----------|:-----------------:|
| Info | A, B, C. |
| Score | Foo |
| More Info | Long Text |
| Proof | Blah <Screenshot> |
Run Code Online (Sandbox Code Playgroud)
但是,文档中有许多表格,我只想使用"在选择范围内".
简而言之:我必须选择所有表格并按顺序编号.我还想制作一个这样的表格,如下所示:
| Number | Title | Score | Number of …Run Code Online (Sandbox Code Playgroud) 有许多免费资源可以了解MSExcel的对象模型,但我没有找到任何类似MS字源的综合来源.
你能建议一个免费而全面的资源吗?
有一种简单的方法可以在VBA中通过1步减少Word/Excel中的字体大小吗?
因此,如果我的字体大小是48,我可以轻松地将其减少到36,根据标准Word 2007字体组中的字体下拉菜单,而不是将字体大小减小12 - 我不知道下一个字体大小是什么下来是......
因此,不要通过float显式设置字体大小:
MyText.Font.Size = 36;
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
MyText.Font.Size -= Reduce by 1 step;.... forgive the pseudo code!
Run Code Online (Sandbox Code Playgroud) 从VBA(Access)执行以下行时,我遇到以下错误:
Set wd = CreateObject("Word.Application")
Run Code Online (Sandbox Code Playgroud)

我找到了以下链接,但没有发现它有用:http://support.microsoft.com/kb/828550
Dim wd As Object而不是Dim wd as Word.Applicationwinword.exe /RegServer在管理员命令提示符下运行 没有默默地运行,只是打开了Word.winword.exe /automation.仅仅启动Word.winword.exe以管理员身份运行access.exe以管理员身份运行我是VBA的新手并试图让自动化的word文档正常工作.目前,文档中有一个按钮,按下后会触发附有文档的电子邮件.
但是我还需要获取当前用户发送电子邮件的电子邮件地址,因此我可以在发送之前将其放在文档中.我在互联网上的搜索没有产生符合我情况的任何可用代码.我目前的代码如下.
Set OL = CreateObject("Outlook.Application")
Set EmailItem = OL.CreateItem(olMailItem)
Set Doc = ActiveDocument
Doc.Save
With EmailItem
.Subject = "Requesting Authorization Use Overtime"
.Body = "Please review the following request for overtime" & vbCrLf & _
"" & vbCrLf & _
"Thanks"
.To = "toemail@test.com"
.Importance = olImportanceNormal
.Attachments.Add Doc.FullName
.Send
End With
Run Code Online (Sandbox Code Playgroud)
不确定这是否相关,但是当使用文档时,Outlook应用程序将始终以用户登录的方式打开.我曾经在这些情况下使用intellisense帮助,所以我可以使用方法和属性,但是intellisense似乎没什么帮助.
我需要在Access数据库中保存Word中的格式化文本.
到目前为止,我已经设法找出如何在访问字段中存储格式化文本(在表中创建备注字段并将文本格式设置为富文本).正在搜索SO我还没有遇到如何将所述文本从单词传输到Access的解决方案.
我知道这是可能的,因为如果您手动执行此操作,只需复制和粘贴信息即可.
我的问题是,如何使用VBA将格式化文本从word复制到表中的字段?
通过实验我创建了以下内容来测试它.到目前为止没有成功......
Sub GetComments()
'Imports Analyst Comments from Excel files als OLE Objects.
'---------------------------------
'Access Variables
Dim dbsFundDB As DAO.Database
Dim rsComments As DAO.Recordset
Set dbsFundDB = CurrentDb
Set rsComments = dbsFundDB.OpenRecordset("tblFunds")
'Word Variables
Dim doc As Word.Application
Dim dcmt As Word.Document
Dim sectn As Word.Section
Dim obCommentText As Object
Dim sAnalystText As String
'Open New Word File
Set doc = New Word.Application
doc.Visible = True
Set dcmt = doc.Documents.Open(sPathTemplate)
Set sectn = dcmt.Sections(1)
sectn.Range.Select
Selection.InsertFile FileName:="myfile.rtf", …Run Code Online (Sandbox Code Playgroud)