2016-10-26 17 views
0

VBScriptを使用してmemofieldを「プレーンテキスト」から「リッチテキスト」に変更することに関する質問があります。すべてのソリューションはVBScript用のものです。 Windowsからvbscriptを起動しようとしましたが、スクリプトが動作しません。私は親切にVBScriptingの初心者ですので、皆さんが私を助けてくれることを願っています。私は私のスクリプトのためのフォーラムからの例を使用: How to convert a text field in an Access table to a rich text memo using VBAVBScriptを使用して "プレーンテキスト"から "リッチテキスト"への変更メモフィールドへのアクセス

マイスクリプト:

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

アクセスDBのコードは、直接vbsスクリプトファイルとして機能しません。接続文字列を使用してMs Access DBに接続し、PlainTextをRichTextに変換するロジックを書き込む必要があります。 –

+0

不要な行がいくつかあります。 'Set db = accessApp.OpenCurrentDataBase" D:\ test.mdb "、true'を試して、' Set accessApp.db = CurrentDB'をスキップしてください。あなたはそれを必要としません。 dbはAccess Applicationのプロパティではありません。非常に真実ではないhttps://msdn.microsoft.com/en-us/library/office/jj250267.aspx – Fionnuala

+0

@MukulVarshneyを参照してください。おそらくADODB接続でフィールドタイプを変更することはできませんが、アクセスアプリケーションオブジェクトで行うことはできます。 – 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 
関連する問題