You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:VBA导入Word ActiveX控件文本框数据至Access表失败

Access VBA读取Word ActiveX控件报错排查

我在MS Access的「Osoba」表单中编写VBA代码,用于将Word文档(A00.docm)中名为Ime_W的ActiveX文本框数据导入Access数据库「Proba db」的「Osoba」表「Ime」字段。

现有两种实现方案:

方案1(使用Bookmark):可正常执行,数据成功导入

代码如下:

Private Sub Command10_Click()
    Dim wordApp As Object
    Dim wordDoc As Object
    Dim textBoxValue As String
    Dim db As Database
    Dim rs As Recordset   
    ' Otvara Word aplikaciju
    On Error Resume Next
    Set wordApp = GetObject(, "Word.Application")
    On Error GoTo 0
    If wordApp Is Nothing Then
        Set wordApp = CreateObject("Word.Application")
    End If
    wordApp.Visible = True ' Prikazuje Word aplikaciju   
    ' Dohvati putanju do Word dokumenta
    Dim filePath As String
    filePath = "C:\Users\10466237\Desktop\Automatsko prebacivanje iz worda u access\A00.docm" ' Zamijenite ovu putanju sa stvarnom putanjom do vašeg dokumenta  
    ' Provjera da li je datoteka dostupna
    If Dir(filePath) = "" Then
        MsgBox "Nije pronaden Word dokument na zadatoj putanji.", vbExclamation
        Exit Sub
    End If  
    ' Otvara postojeci Word dokument
    Set wordDoc = wordApp.Documents.Open(filePath)   
    ' Dohvati vrijednost iz TextBoxa u Word dokumentu putem Bookmarka
    Dim bookmarkName As String   
    ' Postavljamo ime bookmarka koje smo dodijelili TextBoxu
    bookmarkName = "Ime_W_Bookmark"  
    ' Provjeravamo da li bookmark postoji u Word dokumentu
    If wordDoc.Bookmarks.Exists(bookmarkName) Then
        ' Ako postoji, dohvatimo tekst iz bookmarka
        textBoxValue = wordDoc.Bookmarks(bookmarkName).Range.Text
    Else
        ' Ako ne postoji, prikažemo poruku o grešci
        MsgBox "Bookmark 'Ime_W_Bookmark' nije pronaden u Word dokumentu.", vbExclamation
        wordDoc.Close
        Set wordDoc = Nothing
        Set wordApp = Nothing
        Exit Sub
    End If    
    ' Zatvara Word dokument
    wordDoc.Close
    ' Cisti memoriju
    Set wordDoc = Nothing
    Set wordApp = Nothing  
    ' Otvara Access bazu podataka
    Set db = CurrentDb
    ' Dodaj podatak u tabelu u Access bazi podataka
    Set rs = db.OpenRecordset("Osoba")
    rs.AddNew
    rs!Ime = textBoxValue
    rs.Update
    rs.Close    
    ' Cisti memoriju
    Set rs = Nothing
    Set db = Nothing   
    MsgBox "Podatak uspješno prebacen u tabelu.", vbInformation
End Sub

方案2(直接调用ActiveX Control):执行时出现错误

代码如下:

Private Sub Command11_Click()
    Dim wordApp As Object
    Dim wordDoc As Object
    Dim textBoxValue As String
    Dim db As Database
    Dim rs As Recordset    
    ' Otvara Word aplikaciju
    On Error Resume Next
    Set wordApp = GetObject(, "Word.Application")
    On Error GoTo 0
    If wordApp Is Nothing Then
        Set wordApp = CreateObject("Word.Application")
    End If
    wordApp.Visible = True ' Prikazuje Word aplikaciju   
    ' Dohvati putanju do Word dokumenta
    Dim filePath As String
    filePath = "C:\Users\10466237\Desktop\Automatsko prebacivanje iz worda u access\A00.docm" ' Zamijenite ovu putanju sa stvarnom putanjom do vašeg dokumenta    
    ' Provjera da li je datoteka dostupna
    If Dir(filePath) = "" Then
        MsgBox "Nije pronaden Word dokument na zadatoj putanji.", vbExclamation
        Exit Sub
    End If   
    ' Otvara postojeci Word dokument
    Set wordDoc = wordApp.Documents.Open(filePath)    
    ' Dohvati vrijednost iz ActiveX kontrole u Word dokumentu
    Dim controlName As String
    controlName = "Ime_W" ' Zamijenite ovu vrijednost sa imenom vaše ActiveX kontrole   
    ' Provjerava da li kontrola postoji u Word dokumentu
    If wordDoc.Shapes(controlName) Is Nothing Then
        MsgBox "ActiveX kontrola '" & controlName & "' nije pronadena u Word dokumentu.", vbExclamation
        wordDoc.Close
        Set wordDoc = Nothing
        Set wordApp = Nothing
        Exit Sub
    End If  
    ' Dohvati vrijednost iz ActiveX kontrole
    textBoxValue = wordDoc.Shapes(controlName).OLEFormat.Object.Text  
    ' Zatvara Word dokument
    'wordDoc.Close 
    ' Cisti memoriju
    Set wordDoc = Nothing
    Set wordApp = Nothing 
    ' Otvara Access bazu podataka
    Set db = CurrentDb 
    ' Dodaj podatak u tabelu u Access bazi podataka
    Set rs = db.OpenRecordset("Osoba")
    rs.AddNew
    rs!Ime = textBoxValue
    rs.Update
    rs.Close 
    ' Cisti memoriju
    Set rs = Nothing
    Set db = Nothing
    MsgBox "Podatak uspješno prebacen u tabelu.", vbInformation
End Sub

恳请帮忙排查方案2的报错问题,谢谢!


内容的提问来源于stack exchange,提问作者RSing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:55:10