Vba 在发送电子邮件之前隐藏Word表单的提交按钮

Vba 在发送电子邮件之前隐藏Word表单的提交按钮,vba,ms-word,Vba,Ms Word,我一直在构建一个表单,使日常任务更快、更简单。 Word表单允许我填写每个人的信息,我在底部有一个“提交”按钮: 将活动文档转换为PDF 将PDF作为附件发送电子邮件 我遇到的问题是,在将表单转换为pdf并附加之前,我似乎无法集成代码以从表单中删除“提交”按钮。这对我来说只是强迫症的清洁问题。任何帮助将不胜感激,因为vba不是我最强大的套件 子命令按钮1\u单击() 作为对象的Dim-OL 将EmailItem设置为对象 '从Outlook中删除签名变量以包括图像 像字符串一样的模糊结构符号

我一直在构建一个表单,使日常任务更快、更简单。 Word表单允许我填写每个人的信息,我在底部有一个“提交”按钮:

  • 将活动文档转换为PDF
  • 将PDF作为附件发送电子邮件
我遇到的问题是,在将表单转换为pdf并附加之前,我似乎无法集成代码以从表单中删除“提交”按钮。这对我来说只是强迫症的清洁问题。任何帮助将不胜感激,因为vba不是我最强大的套件

子命令按钮1\u单击()
作为对象的Dim-OL
将EmailItem设置为对象
'从Outlook中删除签名变量以包括图像
像字符串一样的模糊结构符号
像细绳一样暗淡
Dim signImageFolderName作为字符串
将completeFolderPath设置为字符串
'在准备附加到电子邮件时,将WORD文件转换为PDF所需的代码
strFileName=Replace(ActiveDocument.FullName、.docm、.pdf)
ActiveDocument.ExportAsFixedFormat OutputFileName:=strFileName_
ExportFormat:=wdExportFormatPDF
Application.ScreenUpdating=False
'设置Outlook以生成电子邮件
Set OL=CreateObject(“Outlook.Application”)
设置EmailItem=OL.CreateItem(0)
'电子邮件的主体文本,以HTML格式配置
strbody=“见附件!

”和“谢谢!” '获取Outlook签名和签名图像文件夹的文件夹路径(特定于用户文件夹和Outlook签名的名称 sPath=Environ(“appdata”)&“\Microsoft\Signatures\Main.htm” signImageFolderName=“主文件” completeFolderPath=Environ(“appdata”)&“\Microsoft\Signatures\”和SignmageFolderName 如果Dir(sPath)“,则 strSignature=GetSignature(sPath) strSignature=VBA.Replace(strSignature,signImageFolderName,completeFolderPath) 其他的 strSignature=“” 如果结束 “建立电子邮件 使用EmailItem .To=“” .CC=“” .Subject=“FPE每日优先级” .HTMLBody=strbody&“
”&strSignature .重要性=低重要性正常 .Attachments.Add strFileName ’发送 .展示 以 杀死strFileName 设置OL=无 设置EmailItem=Nothing 端接头
假设您的按钮是文档界面中的ActiveX控件(否则很难理解这个问题!),那么 a、 无法删除事件代码中的按钮 b、 我不认为您可以完全隐藏按钮,例如使用
.Backstyle=frmBackStyleTransparent
和设置
.ForeColor=&H00FFFFFF
,因为还有一个小框架,我看不到如何使白色或透明

所以我想你唯一能做的就是用与按钮后面的文档表面颜色相同的东西覆盖按钮(通常是白色,这是我在这里假设的)。我在这里假设按钮不能移动

您可以通过插入一个大小和位置均为矩形的形状,使其刚好围绕按钮。将其形状轮廓设置为“无轮廓”,将其形状填充颜色设置为白色

假设该形状是文档中唯一的形状。然后在VBA中,您可以将.ExportAsFixedFormat调用包围起来,如下所示:

ActiveDocument.Shapes(1).Zorder msoBringInFrontOfText
ActiveDocument.ExportAsFixedFormat OutputFileName:=strFileName, _
        ExportFormat:=wdExportFormatPDF
ActiveDocument.Shapes(1).Zorder msoSendBehindText
如果它不是文档中唯一的形状,您可以发现它的索引并使用它而不是1,或者您可以发现它的名称(使用VBA)并将其用作索引,或者设置它的名称。例如,我将它的名称设置为“掩盖”,并使用如下代码

Const coverUpShapeName As String = "cover-up"
' ...
ActiveDocument.Shapes(coverUpShapeName).ZOrder msoBringInFrontOfText
strFileName = Replace(ActiveDocument.FullName, ".docm", ".pdf")
    ActiveDocument.ExportAsFixedFormat OutputFileName:=strFileName, _
        ExportFormat:=wdExportFormatPDF
ActiveDocument.Shapes(coverUpShapeName).ZOrder msoSendBehindText

您可以将ActiveX按钮格式化为隐藏文本以使其消失。将按钮包装在书签中以便于访问:

ActiveDocument.Bookmarks("SubmitButton").Range.Font.Hidden = True

作为替代方案,您可以添加一个运行submit宏的文档级QAT按钮。然后它根本不会出现在页面上。

您是否尝试过Ibby从中使用此代码

这假定按钮是ActiveX命令按钮,而不是形状


我同意John的观点,文档中附加的QAT图标可能是一种方式,而不是文档中的按钮。

感谢您的输入,并对延迟表示抱歉。我想我现在只需要处理我的强迫症。感谢您的输入,并对延迟表示抱歉。您能更好地解释文档级别的QAT按钮和h吗如何实现它。在Word for Windows中,选择“文件>选项>快速访问工具栏”。将“自定义快速访问工具栏”下拉列表更改为for DocumentName.docm,其中DocumenName是包含宏的文件的名称。然后自定义随文档一起移动。
Private Sub CommandButton1_Click()

  With ActiveDocument
    .Shapes(1).Visible = msoFalse
    .PrintOut Background:=False
    .Shapes(1).Visible = msoTrue
  End With

End Sub