Два щелчка мыши для создания текстового документа из формы доступа с двойным форматированным текстом, скопированным с помощью vba

Я работаю над экспортом rtf (форматированного текста) из поля заметки в Access 2010 в файл слова с закладкой. Проблема в том, что для открытия вордовского документа нужно два клика, а потом текст вставляется дважды. Я до сих пор не могу найти проблему.

Вот код:

Option Compare Database

Private Sub Comando72_Click()
'Saves the current record -->
Me.Dirty = False
Dim appWord As Word.Application
Dim doc As Word.Document
Dim objWord As Object  '' Word.Application
Dim fso As Object  '' FileSystemObject
Dim f As Object  '' TextStream
Dim myHtml As String
Dim tempFileSpec As String

' grab some formatted text from a Memo field
myHtml = DLookup("DescripActivAEjecutarse", "PlanificacionServiciosInstitucionales", "IdPSI = Form!IdPSI")
Set fso = CreateObject("Scripting.FileSystemObject")  '' New FileSystemObject
tempFileSpec = fso.GetSpecialFolder(2) & "\" & fso.GetTempName & ".htm"
'' write to temporary .htm file
Set f = fso.CreateTextFile(tempFileSpec, True)
f.Write "<html>" & myHtml & "</html>"
f.Close
Set f = Nothing
Set fso = Nothing
'Set appWord object variable to running instance of Word.
Set appWord = GetObject(, "Word.Application")
If Err.Number <> 0 Then
    'If Word isn't open, create a new instance of Word.
    Set appWord = New Word.Application
End If
'set the doc for future use.
Set doc = appWord.Documents.Open("C:\Users\earias\Documents\SOLICITUD-Yachay-automatica2.docx", , True) 'True default (just reading).
'locates bookmark and inserts file
appWord.Selection.GoTo what:=wdGoToBookmark, Name:="bookmark_1"
appWord.Selection.InsertFile tempFileSpec

Set doc = Nothing
Set appWord = Nothing
Exit Sub
errHandler:
    MsgBox Err.Number & ": " & Err.Description
End Sub

person David Jours    schedule 06.04.2015    source источник


Ответы (1)


Если вы нажмете кнопку дважды, процедура запустится дважды?

Что касается вашего текущего кода, после этой строки Set doc = appWord.Documents.Open добавьте следующее;

doc.visible = true 

Это должно позволить вам просматривать документ, открытый при однократном нажатии кнопки. Чтобы окно не появлялось, вы также можете вместо того, чтобы сделать его видимым, сделайте;

doc.saveas "path here"

затем установите все на «ничего» и закройте, как и вы, и файл будет сохранен там, где вы хотите его сохранить, без необходимости вручную сохранять каждый раз.

Вы можете настроить простое слияние почты с шаблоном, а затем сохранить шаблон в любом формате, который вы выберете, и разорвать ссылку слияния (мой предпочтительный метод).

Дайте мне знать, как вы поживаете!

person Mark Horner    schedule 07.04.2015
comment
Марк, спасибо за помощь. Я просто запускал отладку по шагам, и похоже, что когда кнопка нажимается один раз, она запускается (печатает в непосредственном окне), но ничего не делает. Потом при повторном нажатии запускается и появляется слово doc с двойными вставками. Если это решено, я мог бы попробовать метод слияния почты (или изменить его на него по вашему совету?). - person David Jours; 28.04.2015
comment
хм, я бы определенно предложил пойти по маршруту слияния почты. После того, как процесс настроен, все, что вы делаете по нажатию кнопки, — это обновляете запрос, связанный с документом Word, чтобы отобразить одну запись, которую вы хотите, и вуаля, вот ваш документ! - person Mark Horner; 28.04.2015
comment
Я обнаружил, что если документ Word открыт, он создает новый одним щелчком мыши! Теперь мне нужно написать код, который делает это автоматически раньше. Еще не повезло, но близко... - person David Jours; 30.04.2015