我正在尝试学习如何在Word VBA中处理关于MS Word表的Range对象.
使用Range对象帮助,只要单元格是连续的,我似乎可以创建一系列单元格,但是我似乎无法获得使用单元格指定范围的起点和终点的语法.
例如:
Set rngCells = myTable.Range(Start:=<cell>, End:=<cell>)
Run Code Online (Sandbox Code Playgroud)
我不确定要指示要启动的单元格还是单元格结束的内容.有人能给我一个线索吗?:)
编辑:我已经从头创建了表 - 我正在尝试使用一系列单元格来为中间的某些行应用格式.特别是,我试图看看是否可以在不使用Selection的情况下完成.
我在MS word中有一个3 X 3(比如tableA)表.第(2,2)个细胞是分裂细胞(分成2X2表).如何循环遍历表格A中的所有单元格.
Dim strCellText As String
Dim uResp As String
Dim Row As Integer
Dim Col As Integer
Dim itable As Table
For Each itable In ThisDocument.Tables
uResp = ""
For Row = 1 To itable.Rows.Count
For Col = 1 To itable.Columns.Count
strCellText = itable.Cell(Row, Col).Range.Text
uResp = uResp & Trim(strCellText)
Next
Next
MsgBox uResp
Next
Run Code Online (Sandbox Code Playgroud)
该程序给出了编译错误:
Run time error 5914
The requested member of the collection does not exist
Run Code Online (Sandbox Code Playgroud)
如何迭代具有拆分单元格的表格的单元格.
我已经编写了一个基于表单的文档生成宏(在VBA中),以便分发给销售团队.
为了便于使用,我想提供一个自包含的文件,它将在文档打开后立即显示表单.
使用AutoOpen如果word已经打开并且在其中打开了dotm文件,我可以使表单按预期显示.但是,如果我从资源管理器中双击该文件,没有任何反应,我必须手动启动宏.我以为AutoExec可能允许这个,但没有运气.我花了很多时间试图通过谷歌搜索等工作,但我没有得到任何地方.
即使双击打开文件,如何才能显示表单?是否可以在不必为每个用户更改normal.dotm的情况下执行此操作?
为了进一步的背景,我正在使用Word 2013,在测试期间完全启用了宏.dotm文件存储在受信任的位置.
我正在使用宏来启动这样的表单...
Public Sub AutoOpen()
StartPage.Show
End Sub
Run Code Online (Sandbox Code Playgroud)
我尝试过使用AutoExec也无济于事.
我想知道如何避免使用Windows剪贴板,当你想"复制"Word文档的多个部分时(在宏中使用VBA)
为什么要避免?因为我们在服务器上使用Word,在多用户环境中(我知道它是正式的不赞成)
否则,使用Selection.Copy和Selection.Paste方法可以轻松完成.
谢谢.
我正在为Microsoft Word开发一个VB6 COM加载项,我在功能区中添加了一个按钮,将文档保存到数据库中.但是在保存文档之前,我想将用户带到文档属性窗口,以便他们可以填写文档的属性(如标题,主题和作者).我使用以下语句来调出窗口:
Application.Dialogs(750).Display
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但默认情况下会显示常规选项卡." 标题"," 主题"和" 作者 "的字段位于"摘要"选项卡上.有没有办法打开这个对话框并强制它到摘要选项卡?我考虑过发送击键,但是标签没有与之关联的热键.
我需要它在Word 2007和Word 2010中工作.上面的行在Word 2003中已经正常工作,因为2003没有多标签属性窗口.
我的MS Word 2007模板有一个包含文件名的页脚.用户打开模板并执行"另存为..."来制作文档.
我希望页脚中显示的文件名立即更新为新文件名.
有没有AfterSaveEvent可以用作钩子来启动我的VBA脚本进行更新?
或者有更简单的方法吗?
我有一个我在Word 2010中开发的宏.
如何将此信息发送给他人使用?
我的目的是创建一个非常基本的宏来查找一系列单词并突出显示它们.不幸的是,我不知道如何一步完成多个单词.例如,以下代码有效:
Sub Macro1()
'
' Macro1 Macro
'
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Highlight = True
With Selection.Find
.Text = "MJ:"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加另一.Text =行,则MJ:忽略该行.有任何想法吗?
在下面的代码中,文件名是硬编码的,但我希望用户能够选择它.
我正在阅读GetSaveAsFilename但是在使用它时出现错误:"找不到方法或成员".
fileSaveName = Application.GetSaveAsFilename _
(fileFilter:="Excel Files (*.txt), *.txt")
Run Code Online (Sandbox Code Playgroud)
这是为Word 2010编写的.我GetSaveAsFilename在VBA这个词中有错误吗?
Sub Macro3()
'
' Macro3 Macro
'
'
ActiveDocument.SaveAs2 FileName:="Questionnaire01-05-20122.txt", _
FileFormat:=wdFormatText, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=True, SaveAsAOCELetter:=False, Encoding:=1252, InsertLineBreaks:=False, _
AllowSubstitutions:=False, LineEnding:=wdCRLF, CompatibilityMode:=0
End Sub
Run Code Online (Sandbox Code Playgroud) 这是我的子看起来像:
Sub InsertRowWithContent(rowNo As Long)
Run Code Online (Sandbox Code Playgroud)
这是我的.onAction:
.OnAction = "'InsertRowWithContent""" & C & """'"
Run Code Online (Sandbox Code Playgroud)
C是前面声明的Long变量.
它说没有找到宏.在添加参数之前它工作正常!