使用 VBScript 访问将备注字段从“纯文本”更改为“富文本”
Posted
技术标签:
【中文标题】使用 VBScript 访问将备注字段从“纯文本”更改为“富文本”【英文标题】:Access change memo field from "plain text" to "rich text" using VBScript 【发布时间】:2016-10-26 05:49:40 【问题描述】:我有一个关于使用 VBScript 将 memofield 从“纯文本”更改为“富文本”的问题,我在这里和互联网上找到了一些解决方案,但所有解决方案都适用于可访问的 VBScript。我尝试通过 Windows 启动 vbscript,但我的脚本不起作用。我是 VBScripting 的新手,所以我希望你们能帮助我。我为我的脚本使用了论坛中的一个示例: How to convert a text field in an Access table to a rich text memo using VBA
我的脚本:
Dim db
Dim tdf
Dim fld1
Dim fld2
Set accessApp = GetObject("D:\test.mdb")
Set accessApp = CreateObject("Access.Application")
accessApp.OpenCurrentDataBase "D:\test.mdb", true
accessApp.visible = false
accessApp.UserControl = true
Set accessApp.db = CurrentDB
Set accessApp.tdf = db.TableDefs("Database")
Set accessApp.fld1 = tdf.Fields("Name_Memofield1")
Set accessApp.fld2 = tdf.Fields("Name_Memofield2")
Debug.Print "acTextFormatPlain: " & acTextFormatPlain & _
"; acTextFormathtmlRichText: " & acTextFormatHTMLRichText
With fld1.Properties("TextFormat")
Debug.Print "TextFormat: " & .Value
If .Value = acTextFormatPlain Then
.Value = acTextFormatHTMLRichText
Debug.Print "TextFormat changed to: " & .Value
End If
End With
With fld2.Properties("TextFormat")
Debug.Print "TextFormat: " & .Value
If .Value = acTextFormatPlain Then
.Value = acTextFormatHTMLRichText
Debug.Print "TextFormat changed to: " & .Value
End If
End With
发生的错误告诉我问题出在“Set accessApp.db = CurrentDB”中,发生的错误是:“对象不支持此属性或方法 accessApp.db”如果我更改“accessApp.db " 到 "db" 发生另一个错误:"需要对象:'CurrentDB'"
【问题讨论】:
访问数据库中的代码不能直接用作 vbs 脚本文件。您需要通过连接字符串连接到 Ms Access DB,然后编写将 PlainText 转换为 RichText 的逻辑。 你有一些不必要的行。试试Set db = accessApp.OpenCurrentDataBase "D:\test.mdb", true
并跳过Set accessApp.db = CurrentDB
,你不需要它。 db 不是 Access 应用程序的属性。见msdn.microsoft.com/en-us/library/office/jj250267.aspx
@MukulVarshney 这并不完全正确。您可能无法使用 ADODB 连接更改字段类型,但您可以使用 Access 应用程序对象。
@Fionnuala 你是对的。我的意思是——VBA Access 中的每个语句都不必像在 VBScript 中那样工作(即不改变)。我们可能不得不重写这些语句
@All 感谢您的反应。 @ Mukul 这与将字段形式是/否更改为文本不同吗?因为我还有一个脚本来更改数据类型,并且工作正常。 @ Fionnuala 我尝试了您的解决方案,但不幸的是它不起作用,我收到一个错误“预期语句结束”第 11 行字符 40 所以这就是路径“D:\test.mdb”开始的地方
【参考方案1】:
试试下面的代码。它需要整理。
Option Explicit
Dim accessApp
Dim db
Dim dbname
Dim tdf
Dim fld1
Dim fld2
Dim acTextFormatPlain
Dim acTextFormatHTMLRichText
Dim dbInteger
'acTextFormatPlain=0
'acTextFormatHTMLRichText=1
dbInteger=3
dbname="D:\Test.mdb"
Set accessApp = CreateObject("Access.Application")
accessApp.OpenCurrentDataBase(dbname)
set db=accessapp.CurrentDb
Set tdf = db.TableDefs("2emails")
'The property may not exist
SetFieldProperty tdf.Fields(1), "TextFormat", dbInteger, 0
With tdf.Fields(1).Properties("TextFormat")
If .Value = 0 Then
.Value = 1
msgbox "TextFormat changed to: " & .Value
End If
End With
Sub SetFieldProperty(ByVal fld , ByVal strPropertyName , ByVal iDataType , ByVal vValue )
Dim prp
Set prp = Nothing
On Error Resume Next
Set prp = fld.Properties(strPropertyName)
On Error GoTo 0
If prp Is Nothing Then
Set prp = fld.CreateProperty(strPropertyName, iDataType, vValue)
fld.Properties.Append prp
Else
prp.Value = vValue
End If
End Sub
【讨论】:
以上是关于使用 VBScript 访问将备注字段从“纯文本”更改为“富文本”的主要内容,如果未能解决你的问题,请参考以下文章
从 JSON 文件中提取字段,将其与纯文本文件匹配值进行比较,并从 JSON 文件中提取特定字段
从包含纯文本的@message 字段解析值:AWS Cloudwatch Logs