2015-04-06 12 views
1

Я работаю над экспортом RTF (богатого текста) в поле memo в доступе 2010 к файлу слов с закладкой. Проблема в том, что для открытия документа Word необходимо два щелчка, а затем текст вставляется дважды. Я все еще не могу найти проблему.Два клика для создания текстового документа из формы доступа, с двойным богатым текстом, скопированным с использованием vba

Вот код:

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 

ответ

0

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

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

doc.visible = true 

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

doc.saveas "path here" 

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

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

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

+0

Марк, спасибо вам за помощь. Я просто запускал «отладку по шагам» и выглядел так, как только кнопка нажата один раз, она запускается (печатает в непосредственном окне), но ничего не делает. Затем при нажатии снова запускается и появляется слово doc с двойными вставками. Если это будет решено, я могу попробовать метод слияния (или изменить его на ваш совет?). –

+0

Хмм, я бы определенно предложил спуститься по маршруту слияния. Как только процесс настроен, все, что вы делаете при нажатии кнопки, обновляет запрос, связанный с документом слова, чтобы показать одну запись, которую вы хотите, и вуаля - ваш документ! –

+0

Я обнаружил, что, если текстовый документ открыт, он создает новый один щелчок! Теперь мне нужно написать код, который делает это автоматически раньше. Пока не удача, но рядом ... –