使用 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

从服务器向AWS JS SDK发送签名,而不是使用纯文本密钥

将博客文章作为纯文本存储在 mongodb 中

将博客文章作为纯文本存储在 mongodb 中

将 <br> 解析为纯文本新段落