ฉันมีเขตข้อมูลบันทึกช่วยจำในฐานข้อมูล Access 2007 ที่ตั้งค่าเป็น Rich Text ทั้งในฟิลด์และในแบบฟอร์ม และฉันต้องนำข้อมูลเหล่านี้ไปไว้ใน Word และคงการจัดรูปแบบไว้ ฉันได้เห็นวิธีแก้ปัญหาต่าง ๆ บน StackOverflow ที่แนะนำให้บันทึกเป็นไฟล์ (ซึ่งไม่ได้จัดรูปแบบข้อความ) และใช้ IE (ข้อผิดพลาดกับ ExecCommand “copy”) วิธีแก้ปัญหาที่ฉันพบว่าใช้ได้กับกรณีส่วนใหญ่คือการใช้คลิปบอร์ด แต่ ฉันไม่สามารถใช้งานได้กับการจัดรูปแบบทุกประเภท
รายละเอียดเพิ่มเติมเล็กน้อย: ฉันกำลังเชื่อมต่อกับฐานข้อมูลจาก Word โดยใช้ AdoDB โดยอ่านข้อมูลออกมาในอาร์เรย์ จากนั้นคัดลอกข้อมูลไปยังคลิปบอร์ด จากนั้นฉันใช้ Pastespecial – ดูวิธีแก้ปัญหาจากฝ่ายสนับสนุนของ Microsoft http://support2.microsoft.com/default.aspx?scid=kb;en-us;274326
รหัสสำหรับเชื่อมต่อกับ Access อยู่ที่นี่ (แต่ฉันเชื่อว่านี่ค่อนข้างมาตรฐาน):
Dim cn As Object
Dim rs As Object
Dim strCon As String
'define connection
Set cn = CreateObject("ADODB.Connection")
'connect string for Access - no password
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strDataBaseFilePath & ";Persist Security Info=False;"
'open connection
cn.Open strCon
'get recordset
Set rs = cn.Execute(strSQL)
'load data into array
LoadDataFromDatabase = rs.GetRows
รหัสสำหรับ Pastespecial ข้อความใน Word อยู่ที่นี่:
PutHTMLClipboard CStr(varData)
rge.PasteSpecial datatype:=WdPasteDataType.wdPasteHTML
'PutHTMLClipboard เป็นรูทีนของ Microsoft โดย vardata ถูกกำหนดให้เป็นตัวแปรและเก็บข้อมูลจากฟิลด์ข้อความที่หลากหลายใน Access
เมื่อใช้วิธีการนี้ ฉันได้รับความผิดปกติบางประการ:
ข้อความที่มีสัญลักษณ์แสดงหัวข้อย่อยแบบกำหนดเอง (เช่น ในสถานการณ์ของฉัน '>' แทนที่จะเป็นจุดมาตรฐาน) จะถูกเปลี่ยนเป็นอักขระแปลก ๆ
ข้อความที่ขีดเส้นใต้มีการจัดรูปแบบอย่างถูกต้อง แต่ถ้าข้อความเป็นตัวหนา + ขีดเส้นใต้ แสดงว่าตั้งค่าเฉพาะการจัดรูปแบบตัวหนาเท่านั้น แบบอักษรตัวหนา + สีใช้งานได้ดี
หากฉันเน้นข้อความในแบบฟอร์ม Access ด้วยตนเอง และคัดลอกและวางลงใน Word โดยตรง การจัดรูปแบบทั้งหมดจะคงไว้อย่างสมบูรณ์