2016-10-26 54 views
0

我有一個關於使用VBScript將memofield從「純文本」更改爲「富文本」的問題,我在這裏和在互聯網上發現了一些解決方案,但是所有的解決方案都是針對VBScript的。我嘗試通過Windows啓動一個vbscript,但我的腳本不起作用。我很喜歡VBScripting,所以我希望你們能幫助我。我以前從論壇的例子爲我的腳本: How to convert a text field in an Access table to a rich text memo using VBA使用VBScript將備忘錄字段從「純文本」更改爲「富文本」

我的腳本:

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 

什麼occures告訴我,問題是出在「設置accessApp.db = CurrentDB」錯誤的錯誤,發生的是:「對象不支持此屬性或方法accessApp.db」如果我將「accessApp.db」更改爲「db」,則發生其他錯誤:「Object required:'CurrentDB'」

+0

來自訪問數據庫的代碼不會直接作爲vbs腳本文件工作。您需要通過連接字符串連接到Ms Access DB,然後編寫將PlainText轉換爲RichText的邏輯。 –

+0

你有一些不必要的行。嘗試'Set db = accessApp.OpenCurrentDataBase「D:\ test.mdb」,true'並跳過'Set accessApp.db = CurrentDB',你不需要它。數據庫不是Access應用程序的屬性。請參閱https://msdn.microsoft.com/en-us/library/office/jj250267.aspx – Fionnuala

+0

@MukulVarshney,這是不正確的。您可能無法使用ADODB連接更改字段類型,但可以使用Access應用程序對象。 – Fionnuala

回答

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 
相關問題