vba - 使用 VBA 在 MS Access 中编目字文件数据
问题描述
我被要求创建一个 MS 访问数据库,该数据库对存储在 MS Word 文件中的所有数据进行编目。Word 文件具有包含数据的表。
例如,“客户名称:”| 客户资料 | “日期” | 日期数据
我使用 MS Access 使用对象 Word.Application 和 Word.Document 循环和打开每个文件。然后我在 i 上使用第二个循环,使用此命令获取单元格中的值:worddoc.Tables(tableindex).Range.Cells(i).Range.Value
但是,如果单元格包含一个下拉框,我没有得到下拉框中的值;我得到一个方形字符。
1)有没有办法确定单元格中的数据类型?大多数时候它是文本、文本框或下拉框。2)当它是一个下拉框时,我如何从中获取数据?
我希望我提供了足够的信息。请询问您是否需要更多信息。
解决方案
你得到的小方块是单元格标记的结尾。在表格单元格中,它的功能有点像最后一段。所以......你必须在做任何其他事情之前摆脱它。
以下是一些示例测试代码,仅查看表格中的一个单元格,但将其用作指南以适应您循环各个单元格的过程。我的另一个警告是,在这个例子中,我把你提到的“教科书”从字面上看。如果您的意思是文本框内容控件,那么您可以忽略此示例的该部分。
Dim rng As Range, cc As ContentControl, shp As Shape
Set rng = ActiveDocument.Tables(1).rows(1).Cells(1).Range
rng.MoveEnd wdCharacter, -1
If rng.ContentControls.Count > 0 Then
Set cc = rng.ContentControls(1)
Debug.Print cc.Range.Text
ElseIf rng.ShapeRange.Count > 0 Then
If rng.ShapeRange(1).Type = msoTextBox Then
Set shp = rng.ShapeRange(1)
If shp.TextFrame.HasText Then
Debug.Print shp.TextFrame.TextRange.Text
End If
End If
Else
If Not rng.Text = vbNullString Then
Debug.Print rng.Text
End If
End If
推荐阅读
- javascript - 隐藏和取消隐藏 TinyMCE
- python - 可能存在或不存在的正则表达式匹配
- ansible - 如何在 Fedora 32 的 ansible 2.9.10 中执行多行命令
- python - 在 TensorFlow 中执行梯度累积时内存不足
- javafx - 场景生成器未在 Netbeans 中启动,导致路径中出现非英文字母
- http - Lambda 错误:标头“x-request-id”的值“未定义”无效
- perl - 如何使用 Perl 的 WWW::Mechanize “深入”到一个网站
- python - 无法在 Pycharm 中导入 azure.functions
- windows - 是什么阻止 Windows 删除正在使用的文件?
- reactjs - Sass 和 react,使用 @use 将变量导入模块