Я не вижу Me.Repaint
в коде вопроса, который предположительно вызывает ошибку ...? Это запускается из пользовательской формы? Насколько я знаю, это не часть Word или Excel ...
В любом случае в коде в этих строках три раза присутствует синтаксическая ошибка:
clinfo1.Text = Text: Read_Excel_Cell (1)
Это неверно: Text:
Я верю, что вы хотели получить:
clinfo1.Text = Text:= Read_Excel_Cell(1)
Для указания параметра требуется :=
, а не :
.
Кроме того, код может быть немного более эффективным. Нет необходимости повторять ActiveDocument.Bookmarks[index]
, когда цикл For
уже предоставляет объект bmk
для закладки. И, на мой взгляд, Select Case
легче читать, написать сопровождение, чем множество ElseIf
утверждений.
Я также изменил код для Excel, чтобы он запускал новый экземпляр Excel только один раз - если он не может найти запущенный Excel. Существуют различные способы справиться с тем, что вы пытаетесь сделать с помощью приложения Excel - это только одна из возможностей. Если вы хотите исследовать это дальше, я предлагаю больше исследований (там много и много вопросов и примеров кода здесь и в других местах) и, возможно, другой, более узконаправленный вопрос на эту тему.
Function Read_Excel_Cell(cellRin As Long) As String
Dim oExcel As Excel.Application
Dim myWB As Excel.Workbook
On Error Resume Next
Set oExcel = GetObject(, "Excel.Appplication")
If Err.Number = 429 Then
Set oExcel = New Excel.Application
End If
On Error GoTo 0
oExcel.Visible = True
For Each myWb in oExcel.Workbooks
If myWb.Name = "excel file" Then
Exit For
End If
Next
If myWb Is Nothing Then
Set myWB = oExcel.Workbooks.Open("excel file")
End If
Read_Excel_Cell = myWB.Sheets(1).Cells(cellRin, 1)
Set myWB = Nothing
Set oExcel = Nothing
End Function
Sub clientinfoexcel()
Dim bmk As Bookmark
For Each bmk In ActiveDocument.Range.Bookmarks
cltext = bmk.Name
Dim clinfo1 As Range
Set clinfo1 = bmk.Range
Select Case cltext
Case Like "*name*"
clinfo1.Text = Read_Excel_Cell(1)
ActiveDocument.Bookmarks.Add cltext, clinfo1
Case Like "*address*"
clinfo1.Text = Read_Excel_Cell(2)
ActiveDocument.Bookmarks.Add cltext, clinfo1
Case Like "*appraisal*" Then
clinfo1.Text = Read_Excel_Cell(3)
ActiveDocument.Bookmarks.Add cltext, clinfo1
End Select
Next bmk
End Sub