В настоящее время я пытаюсь создать автоматизированное деловое письмо WORD, которое заполняет соответствующие данные, такие как адрес компании, название компании, сегодняшняя дата, дата крайнего срока и т. Д. После ввода 5-значного числа.
Число и все остальные поля являются закладками.
Всякий раз, когда пользователь вводит конкретное 5-значное число в закладку с именем "theNumber", это значение будет использоваться для запроса SQL (Oracle). Запрос затем заполняет все другие закладки!
Вот что я пробовал до сих пор:
Function dbQuery(ByVal TM As String, ByVal myNumber As String) As Boolean
Dim sqlrumpf As String
Dim sqlstring As String
Dim connstring As String
With ActiveDocument
If .Bookmarks.Exists(TM) Then
Dim TMRange As Range
Set TMRange = .Bookmarks(TM).Range
TMRange = myNumber
.Bookmarks.Add TM, TMRange
dbQuery = True
Else
Debug.Print "Bookmark not found: " & TM
End If
End With
sqlrumpf = "SELECT p.name " & _
"FROM xy.person p, xy.adresse a, wz.zusatz1 z, xy.vorgang v " & _
"WHERE p.adresse_id = a.adresse_id " & _
"AND z.aktnr = v.vorgang_id " & _
"AND a.adresse_id = v.adresse_id " & _
"AND v.vorgang_nr = '"
sqlstring = sqlrumpf & myNumber & "'"
connstring = "ODBC;DSN=mydsn;UID=myuid;DBQ=my.dbq.lan;DBA=W;APA=T;PFC=1;TLO=0;PWD=mypw;"
QueryTables.Add _
(Connection:=connstring, _
Destination:=Range(TMRange), _
Sql:=sqlstring).Refresh
End Function
Sub Main()
If dbQuery("theNumber", "12345") = False Then
MsgBox "Database query failed!"
End If
End Sub
Я получаю ошибку:
Ошибка времени выполнения '4608': значение не входит в диапазон определения.
Как это можно исправить?
Кажется, здесь возникает ошибка:
Destination:=Range(TMRange), _
Обычно я использую этот запрос только для Excel, когда хочу напечатать запрос в одной ячейке.
Является ли вообще плохой идеей использовать закладки с SQL-запросами таким образом?Какие поля вы бы использовали, если бы не закладки?Как вы запрашиваете значения закладок?