天道酬勤,学无止境

ms-word

Insert picture with Selection.PasteSpecial not working

问题 我使用此代码从剪贴板插入图片: Selection.PasteSpecial Link:=False, DataType:=wdPasteDeviceIndependentBitmap, Placement:=wdInLine, _ DisplayAsIcon:=False 此代码在 Word 2007 中运行良好,但在 Word 2013 中运行不佳。在 W07 中,图片被复制到文档中,而在 W13 中,我只得到一个空白文档。 我在没有DataType ( Selection.PasteSpecial Placement:=wdInLine )的情况下尝试了它,但仍然相同。 图片在剪贴板中是正确的,如“插入”下所示 我怎样才能让它工作? 谢谢 使用选择更新代码: Selection.EndKey Unit:=wdStory ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:=2 Selection.Cells.SetWidth ColumnWidth:=CentimetersToPoints(11.5), RulerStyle:=wdAdjustNone Selection.Rows.SpaceBetweenColumns = CentimetersToPoints(0.25)

2022-07-11 09:46:41    分类:技术分享    vba   ms-word

How to use Words selection methods through Excel VBA

问题 在 Word VBA 中,您可以使用 Selection.MoveLeft、Selection.MovRight 等设置和移动光标位置... 但是,当尝试在 Excel VBA 中使用相同的方法时,我收到一条错误消息,提示“对象不支持此属性或方法”。 我已导入 Word 对象库参考。 如何在 Excel 应用程序上使用 VBA 移动 Word 文档上的光标位置。 任何帮助将不胜感激。 代码:设置 Doc = ActiveDocument.Content With Doc.Find .Execute FindText:="*", ReplaceWith:="NEW*" End With Selection.HomeKey Unit:=wdStory Selection.MoveDown Unit:=wdParagraph, Count:=11 Selection.MoveRight Unit:=wdWord, Count:=4 Selection.MoveRight Unit:=wdWord, Count:=2, Extend:=wdExtend Selection.Font.Bold = False Selection.Font.Name = "Arial" Selection.Font.Size = 9 回答1 如果您改写您的问题,“在 Excel 应用程序上使用 VBA

2022-05-17 03:58:04    分类:技术分享    vba   excel   ms-word

Document printed via Word Interop immediately disappears from print queue

问题 我有一个 C# WinForm 应用程序,它通过将文本放在书签上来打开并填写一个 MS Word dotx 模板,然后尝试打印它,所有这些都使用 MS Word Interop 15。 一切似乎都很好,打印对话框显示并完成,打印作业显示在打印队列中(即 MS Windows 10 上“设备和打印机”中的“查看正在打印的内容”窗口)。 但随后该作业在被假脱机之前立即从队列中消失! (文档以“Spooling”状态出现非常非常短暂,并且不打印 - 打印机永远不会得到作业) 这是我的代码(为简洁起见,删除了异常检查): using Word = Microsoft.Office.Interop.Word; private void Print_Click(object sender, EventArgs e) { // Open the MS Word application via Office Interop Word.Application wordApp = new Word.Application(); Word.Document wordDoc; // Open the template wordDoc = wordApp.Documents.Add(Template: ContractTemplatePath, Visible: false); // Ensure

2022-05-16 15:17:12    分类:技术分享    c#   winforms   printing   ms-word   office-interop

Microsoft Word Interop: SaveAs hangs for some misterious argument types

问题 在尝试简化从 Word 转换为 PDF 的 PowerShell 脚本时,我发现以下奇怪的场景让我大吃一惊。 以下是概念验证互动会议的记录: Windows PowerShell Copyright (C) 2016 Microsoft Corporation. All rights reserved. PS C:\Users\Frag> Add-Type -AssemblyName Microsoft.Office.Interop.Word PS C:\Users\Frag> $word = New-Object -ComObject Word.Application PS C:\Users\Frag> $i = Get-Item ".\document.docx" PS C:\Users\Frag> $i.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True FileInfo System.IO.FileSystemInfo PS C:\Users\Frag> $i.FullName C:\Users\Frag\document.docx PS C:\Users\Frag> $doc = $word.Documents.Open($i.FullName) PS

2022-05-16 08:21:26    分类:技术分享    powershell   ms-word   com

VBScript, GetLocale, SetLocale - Other uses

问题 注意:与断言相反,这个问题不是重复的。 我的问题被标记为 ms-word 并且提出的建议指向 ms-excel 答案,在这种情况下不适用。 Word VBA!= Excel VBA。 我需要让德国的用户生成英语 Word 2016 文档,但日期以德语月份和日期名称的欧洲风格出现。 我们需要它们以英文日期样式和名称的形式出现。 我知道内容控件​​和日期选择器,尽管目前这不是一个选项(可能在将来)。 更改其本地区域设置也不是一种选择(显然是德语)。 由于我不会在这里讨论的原因,由于遗留原因,我们仅限于 .DOC 格式。 发生在 VBScript 函数 GetLocale 和 SetLocal 中。 在 VBScript 的上下文中完美运行...... 问题是我如何能够将 VBScript 作为 DLL 引用并在 Office VBA 模块中使用该功能? 不幸的是,它没有内置在 Office VBA 中。 我尝试从 SYSWow64 文件夹中引用 VBScript.dll,但它唯一公开的是 VBScript_Global.GlobalObj 和 SetLocale,GetLocale 不可用(它仍然在最新文档中被引用,它没有被弃用。https:/ /msdn.microsoft.com/en-us/library/5xf99h19(v=vs.84).aspx)。 任何帮助将不胜感¿

2022-05-16 02:39:10    分类:技术分享    vba   vbscript   ms-word

Get the next day, from the date in the Custom Document Property

问题 我有包含日期​​的自定义文档属性(定义为日期)。 我试图从自定义文档属性(日期字段)中的日期开始获取第二天。 {={ DOCPROPERTY DateFieldTest }+1 \@"d MMMM YYYY"} 'toggle DOCPROPERTY Field {=07/04/2016+1 \@"d MMMM YYYY"} 'toggle calculation field 1 我也试过: {=DATE(YEAR({ DOCPROPERTY DateFieldTest }),MONTH({ DOCPROPERTY DateFieldTest }),DAY({ DOCPROPERTY DateFieldTest })+1) \@"d MMMM YYYY"} 'toggle DOCPROPERTY Field {=DATE(YEAR(07/04/2016),MONTH(07/04/2016),DAY(07/04/2016)+1) \@"d MMMM YYYY"} 'toggle calculation field !Syntaxe Error, ( 回答1 Charles Kenyon 花了一些时间收集了许多人的作品并将其发布在他的网站上:http://www.addbalance.com/word/datefields2.htm

2022-05-16 02:37:18    分类:技术分享    vba   ms-word   word-field

Read and replace contents in .docx (Word) file

问题 我需要根据用户输入替换一些word文档中的内容。 我正在尝试读取模板文件(例如“template.docx”),并替换名字 {fname}、地址 {address} 等。 模板.docx: To, The Office, {officeaddress} Sub: Authorization Letter Sir / Madam, I/We hereby authorize to {Ename} whose signature is attested here below, to submit application and collect Residential permit for {name} Kindly allow him to support our International assignee {name} {Ename} 有没有办法在 Laravel 5.3 中做同样的事情? 我正在尝试使用 phpword,但我只能看到编写新 word 文件的代码 - 但不能读取和替换现有文件。 另外,当我简单地读写时,格式就搞砸了。 代码: $file = public_path('template.docx'); $phpWord = \PhpOffice\PhpWord\IOFactory::load($file); $phpWord->save('b.docx'); b

2022-05-15 18:22:30    分类:技术分享    php   laravel   ms-word   laravel-5.3   docx

C#: Searching a text in Word and getting the range of the result

问题 我可以通过以下方式在 Word 文件中找到文本: Word.Range range = wordApp.ActiveDocument.Content; Word.Find find = range.Find; find.Text = "xxx"; find.ClearFormatting(); find.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); 这告诉我是否找到了文本。 但我需要找到的文本的范围。 回答1 //Parameter contains what you want to find. _wordApp.Selection.Find.Execute(title); Word.Range range = _wordApp.Selection.Range; if (range.Text.Contains(title)) { //gets desired range here it gets last

2022-05-15 09:59:05    分类:技术分享    c#   ms-word   find

Run external vba-code in MS Word

问题 回答1 您可以创建一个模板并将其放在 %APPDATA%\Microsoft\Word\STARTUP 文件夹中,这使模板成为一个插件,并且 STARTUP 是一个受信任的位置,与在其他位置的模板中使用宏相比,它会给您带来更少的安全问题。 然后,任何文档都可以使用 Application.Run() 调用模板中的函数。 例如 在您的模板中写下以下内容: Function templateHello() As String templateHello = "hello from template!" End Function 然后,您可以在任何 Word 文档中编写: MsgBox Application.Run("templateHello") 这将显示一个带有“来自模板的你好!”的消息框。 回答2

2022-05-14 22:02:03    分类:技术分享    vba   ms-word

Search and Replace Multiple Words

问题 我已经有了使用 VBA 宏在 Microsoft Word 中进行搜索和替换的代码,但目前,我的代码正在多次复制和粘贴相同的函数。 我想做的是有一个需要替换的单词字典,例如: 旧字:新字 然后我让 VBA 脚本循环并在文档中进行必要的更改。 我现在的代码是并为每个新单词对重复。 Sub change_words() With Selection.Find .Text = "optimize" .Replacement.Text = "optimise" .Forward = True .Wrap = wdFindContinue .MatchWholeWord = True End With Selection.Find.Execute Replace:=wdReplaceAll With Selection.Find .Text = "utilized" .Replacement.Text = "utilised" .Forward = True .Wrap = wdFindContinue .MatchWholeWord = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub 提前谢谢了 回答1 Sub change_words(ByVal findWord, byVal

2022-05-14 21:18:09    分类:技术分享    vba   ms-word