我正在寻找一种从Word文件中提取/抓取数据到数据库的方法.我们的公司程序与MS Word文件中记录的客户会议记录,主要是由于历史和惯性.
我希望能够从这些会议纪要行动项目拉进一个数据库,以便我们可以从一个Web界面访问它们,把它们变成任务,因为他们完成了更新.
这是最好的方法:
最后一个是我的吸引力,因为网络界面正在使用Django建成的,但我从来没有使用win32com或蟒蛇试图脚本字.
编辑:我已经开始提取与VBA的文本,因为它使得它更容易一些处理Word对象模型.我遇到了一个问题 - 所有文本都在表格中,当我将字符串拉出我想要的CELLS时,我会在每个字符串的末尾得到一个奇怪的小方框字符.我的代码看起来像:
sFile = "D:\temp\output.txt"
fnum = FreeFile
Open sFile For Output As #fnum
num_rows = Application.ActiveDocument.Tables(2).Rows.Count
For n = 1 To num_rows
Descr = Application.ActiveDocument.Tables(2).Cell(n, 2).Range.Text
Assign = Application.ActiveDocument.Tables(2).Cell(n, 3).Range.Text
Target = Application.ActiveDocument.Tables(2).Cell(n, 4).Range.Text
If Target = "" Then
ExportText = ""
Else
ExportText = Descr & Chr(44) & Assign & Chr(44) & _
Target & Chr(13) & Chr(10)
Print #fnum, ExportText
End If
Next n
Close #fnum
Run Code Online (Sandbox Code Playgroud)
小控制字符框有什么用?是什么类型的字符代码来自Word?
我有一个Word文档,其中包含大约4000个表单字段,我必须将其导出到数据库.问题是4000个字段中没有一个在"书签"字段中有信息,因此我无法获得存储在其中的信息.
我正在尝试创建一个宏来帮助编写书签(FormField.Name)的过程,但无法设法做到正确.问题是我想要更改用户选择中包含的FormFields的名称,并且只更改它们.我设法找到了这个解决方案:
Sub Macro2()
Dim myFile As String
Dim fnum As Integer
Dim sFileText As String
Dim currentField As FormField
myFile = "c:\testMacro.txt"
fnum = FreeFile()
Open myFile For Input As fnum
For Each currentField In Selection.FormFields
Input #fnum, sFileText
With currentField
.StatusText = sFileText
.OwnStatus = True
End With
currentField.Select
Application.WordBasic.FormFieldOptions Name:=sFileText
Next currentField
End Sub
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为在For Each循环中更改了Selection对象,之后它只包含选择的第一个FormField.
所以这是我的问题,有没有办法保存当前选择并在更改后加载它.
我试过了 :
Dim mySelection as Selection
Set mySelection = Selection
Run Code Online (Sandbox Code Playgroud)
但是如果我改变了Selection,变量mySelection也会改变(这很正常......)而且我没有找到任何克隆对象的方法.
有人知道如何做到这一点?
谢谢
我在网上找到了一个VBA宏来调整Word文档中的所有图像:
Sub ResizeAllImages()
''# make all images (both inline and floating)
''# 11 cm wide while preserving aspect ratio
Dim oShp As Shape
Dim oILShp As InlineShape
For Each oShp In ActiveDocument.Shapes
With oShp
.Height = AspectHt(.Width, .Height, _
CentimetersToPoints(11))
.Width = CentimetersToPoints(11)
End With
Next
For Each oILShp In ActiveDocument.InlineShapes
With oILShp
.Height = AspectHt(.Width, .Height, _
CentimetersToPoints(11))
.Width = CentimetersToPoints(11)
End With
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
我找不到可用于对齐所有图像的方法的名称.有谁知道我需要添加什么,以及我必须添加它的位置?
最后,我想删除我觉得太小的图片.我该怎么做...如果形状的宽度小于5,并且形状的高度小于5,则删除形状.
为了便于阅读大量在线文本,我有时希望将所有内容粘贴到单词中,然后重新排列.我用句号 - 手动线替换每个句点 - 空格,这为每个句子提供了一个新的行.我就读得更好了.由于我粘贴了所有东西,图形也来了,所以我希望能够控制所有图像的大小,并摆脱任何不必要的图像.
我正在使用Microsoft Word中的拼写错误.只有少数拼写错误,访问SpellingErrors集合会变得缓慢(至少使用For/Next或For/Each循环).
有没有办法快速进入列表(复制,复制条目,停止集合的动态性质)?我只需要一个列表,快照一下,并且不需要动态或实时.
我需要一个vba宏来搜索MS Word 2007文档中字体颜色为黄色的所有文本并将其更改为红色.打印输出中不会显示黄色.手动选择和更改将花费我几个小时.
在一个已打开的word文档中选择所有文本
复制选中文本到剪贴板
检查默认浏览器打开正确的网址
如果没有打开默认浏览器在网址" http://thisaddress.com "
给焦点浏览器粘贴剪贴板文本到输入框中调用"输入1"
或其他一些方法来获取MSword文档内容到网页输入?
目前工作流程涉及秘书登录网站,然后填写Web表单,切换到他们打开的MS Word文档,选择全部,复制WP文档,然后返回到Web表单并粘贴到输入框中,然后点击提交.我想要做的事情理想情况下在MS word中有一个按钮,它将浏览器打开到正确的网页,然后将文档复制并粘贴到页面上的正确输入框中(实际上它将是唯一的textarea表单字段).
MS Word VBA代码是:
Option Explicit
Enum W32_Window_State
Show_Normal = 1
Show_Minimized = 2
Show_Maximized = 3
Show_Min_No_Active = 7
Show_Default = 10
End Enum
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hWnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Function OpenURL(URL As String, WindowState As W32_Window_State) …Run Code Online (Sandbox Code Playgroud) 我正在Word.docm(启用了宏的Word 2013 doc)中构建表单,旨在对Access数据库进行编程以从完成的表单中导入数据。我已经放置了textBox和comboBox控件来接收用户输入,但是我无法取出数据。
我看过的示例使用了Document.FormFields这样的集合(在Word中):
Dim fld as FormField
for each fld in ActiveDocument.FormFields
Debug.Print fld.Name & " - " & fld.Result.Text
next
Run Code Online (Sandbox Code Playgroud)
但是在我的文档中Document.FormFields是空的,但是Document.Fields有19个元素,恰好是表单中控件的数量。很好,除了我似乎无法使用Field对象获得任何控件的名称或值。Field.Result.Text始终为空白,并且没有Field.Name属性。
那么,Field对象和FormField对象之间有什么区别?为什么我Fields看到的所有示例都使用我的控件FormFields?
我使用了错误的表单控件吗?遗留控件,ActiveX控件和内容控件共有三种类型(我希望我不是唯一认为这很荒谬的一种)。我正在使用ActiveX类型。
我想使用Excel VBA创建一个word文档,并添加各种字体样式和大小的文本.这是我的代码:
Sub CreateNewWordDoc()
Dim wrdDoc As Word.Document
Dim wrdApp As Word.Application
Set wrdApp = CreateObject("Word.Application")
Set wrdDoc = wrdApp.Documents.Add
Dim charStart As Long
Dim charEnd As Long
With wrdDoc
For i = 1 To 3
charStart = wrdApp.Selection.Start
.Content.InsertAfter (" some text")
charEnd = wrdApp.Selection.End
If i = 1 Then
'set the text range (charStart,charEnd) to e.g. Arial, 8pt
Else
If i = 2 Then
'set the text range (charStart,charEnd) to e.g. Calibri, 10pt
Else
'set the text range …Run Code Online (Sandbox Code Playgroud) 我正在尝试以编程方式更改"不要在相同样式的段落之间添加空格".为了解决这个问题,我录制了一个宏,在此期间我打开了段落对话框(页面布局>段落),选中了复选框(不添加空格)和宏,在此期间我取消选中复选框(添加空格).两者都不影响"不要在相同样式的段落之间添加空格"...他们有相同的代码:
Sub AddSpaceBetweenParagraphsOfSameStyle()
'
' AddSpaceBetweenParagraphsOfSameStyle Macro
' Add space between paragraphs of the same style.
'
With Selection.ParagraphFormat
.LeftIndent = InchesToPoints(0.5)
.RightIndent = InchesToPoints(0)
.SpaceBefore = 12
.SpaceBeforeAuto = False
.SpaceAfter = 12
.SpaceAfterAuto = False
.LineSpacingRule = wdLineSpaceMultiple
.LineSpacing = LinesToPoints(1)
.Alignment = wdAlignParagraphLeft
.WidowControl = True
.KeepWithNext = False
.KeepTogether = False
.PageBreakBefore = False
.NoLineNumber = False
.Hyphenation = True
.FirstLineIndent = InchesToPoints(-0.25)
.OutlineLevel = wdOutlineLevelBodyText
.CharacterUnitLeftIndent = 0
.CharacterUnitRightIndent = 0
.CharacterUnitFirstLineIndent = 0
.LineUnitBefore …Run Code Online (Sandbox Code Playgroud) 我在Word 2013中有一个模板文档,用户填写了大量的Legacy Text FormFields.在文档的最后,我添加了一个按钮,将答案编译成没有格式化的字符串,然后将其复制到剪贴板.
它可以工作,但是在读取每个FormField时,Word文档会在每个文本字段和文档末尾之间来回跳过.这在视觉上令人担忧.有没有办法收集每个FormField的值而不用Word将光标/焦点移动到每个字段时读取?
以下是代码示例:
Private Sub cmdCreateNote_Click()
Call cmdClearNote_Click
Dim ff As FormFields
Set ff = ActiveDocument.FormFields
Dim Output As String
Output = ff("ddReviewType").Result & vbCrLf
If ff("chFacInfo").Result Then
Dim FacInfo
FacInfo = Array("Field1: ", _
"Field2: ", _
"Field3: ", _
"Field4: ", _
"Field5: ")
Output = Output & "FIRST SECTION" & vbCrLf
For Index = 1 To 5
If ff("chFacInfo" & Index).Result Then
Output = Output & FacInfo(Index - 1) & ff("txFacInfo" & …Run Code Online (Sandbox Code Playgroud)