Microsoft Wordフォームの内容をAccessデータベースにインポートする作業が行われました。これは、フォームからトリガーされ、次のVBAコード使用して正常に動作しています:Microsoft Access VBA - 名前のないWordフォームフィールドからデータをインポートする
Private Sub cmdFileDialog_Click()
On Error GoTo ErrorHandler
Dim objDialog As Object
Dim varFile As Variant
Dim rec, rec2 As Recordset
Dim db As Database
'New Word Document Variables
Dim appWord As Word.Application
Dim doc As Word.Document
Const DEST_TABLE = "ap_behaviour_referrals" 'change to suit
Const PATH_DELIM = "\"
Set objDialog = Application.FileDialog(3)
' Clear listbox contents.
Me.fileList.RowSource = ""
With objDialog
.AllowMultiSelect = False
' Set the title of the dialog box.
.Title = "Please select a behaviour referral to import"
' Clear out the current filters, and add our own.
.Filters.Clear
.Filters.Add "Microsoft Word Forms", "*.docx"
.Filters.Add "All Files", "*.*"
.Show
If .SelectedItems.Count = 0 Then
MsgBox "No file selected."
Else
For Each varFile In .SelectedItems
'New docx Variable Actions
Set appWord = GetObject(, "Word.Application")
Set doc = appWord.Documents.Open(varFile)
Next
Set db = CurrentDb
Set rec = db.OpenRecordset(DEST_TABLE)
With rec
.AddNew
' my data
'preformat the date fields from the form
Dim unformattedpupildob As String
Dim formattedpupildob As Date
unformattedpupildob = doc.FormFields("Text2").Result
unformattedpupildob = Replace(unformattedpupildob, ".", "/")
formattedpupildob = Format(unformattedpupildob, "dd/mm/yy")
'And now insert the record into the table
!pupil_name = doc.FormFields("Text1").Result
!pupil_dob = formattedpupildob
!pupil_yr_grp = doc.FormFields("Text3").Result
!pupil_submitted_eth = doc.FormFields("Text4").Result
!pupil_upn = doc.FormFields("Text5").Result
!pupil_looked_after = doc.FormFields("Text6").Result
!sen_pre_statement = doc.FormFields("Text7").Result
!sen_ehcp = doc.FormFields("Text8").Result
!cat_date_final_ehcp = doc.FormFields("Text9").Result
!num_exclusion = doc.FormFields("Text10").Result
!days_exclusion = doc.FormFields("Text11").Result
!sch_name = doc.FormFields("Text12").Result
!sch_no = doc.FormFields("Text14").Result
!contact_name = doc.FormFields("Text13").Result
!contact_role = doc.FormFields("Text40").Result
!contact_email = doc.FormFields("Text31").Result
.Update
.Close
MsgBox "File Processing Complete"
End With
End If
End With
Set objDialog = Nothing
Me.fileList.RowSource = ""
ExitSub:
Set rec = Nothing
Set db = Nothing
'...and set it to nothing
Exit Sub
ErrorHandler:
If Err.Number <> 0 Then
Msg = "Error # " & Str(Err.Number) & " was generated by " & Err.Source & Chr(13) & "Error Line: " & Erl() & Chr(13) & Err.Description
MsgBox Msg, , "Error", Err.HelpFile, Err.HelpContext
End If
Resume ExitSub
End Sub
すべてが、分野の一つは、(悪い)ので、私は私がしました。しかし、フィールドの内容をつかむためにこれを使用することができブックマークされています無名のフォームフィールドに遭遇:私はインポートする必要があると私は名前のブックマークいなくても内容を取得する方法が分からない
。
誰かが管理しているのでフォームを変更することはできず、広く配布されていますが、名前を付けずにこのフィールドの内容を取り出す方法があれば疑問に思っていましたか?
ありがとうございます!
私はあなたのコードのさまざまな反復を試みてきましたが、 "エラー#5941がMicrosoft Wordによって生成されました。コレクションの要求されたメンバーが存在しません。 FormFieldの最終的な部分をさまざまな可能性(Add、Application、Count、Creator、Item、Parent、Shadedは許容されるもの)に変更しようとしましたが、Wordはちょうどフィールドについての情報は、エラーをスローするか、何も教えてくれない...私はWordを推測しているだけでフォームフィールドについて不快な質問をするのが好きではない! お試しいただきありがとうございます! –
OK、私はフォームフィールドで作業しました(私はスクリーンショットが馴染みがあると知っていました)。 Document.FormFieldsコレクションは使用しませんでしたが、ブックマークを使用して直接処理しました。しかし、そのようなフィールドを含む文書を開くと、私のコードは正常に動作します。どの部分があなたにとってうまくいきませんか? @TheAllPowerful – Andre
キーボードと私の椅子の間に問題がありました!以前はctrl + gダイレクトウィンドウを使用していなかったので、デバッグレポートがポップアップすることを期待していました!私の悪い!私がそれをやった瞬間、それはすべて人生に燃えていました。私はインデックスが私のためにすべてポップアップしました!ご協力いただきありがとうございます! :-) –