Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Передача информации из Access в Excel
 
 автор: k@s   (14.04.2012 в 06:00)   личное сообщение
45 Кб.
 
 

Разбираю пример Передача информации из Access в Excel и столкнулся с проблемой вывода даты в Excel .Вместо даты набор цифр. Подскажите как это победить.

  Ответить  
 
 автор: snipe   (14.04.2012 в 08:24)   личное сообщение
 
 

Пример в работе посмотреть не могу
но в общем принцип примерно такой
при выгрузке вы выводите в ячейку которая имеет формат либо числовой либо общий
соответственно надо установить свойство ячейки правильно в формат дата/время
для этого в екселе надо записать макрос с действием изменения формата и посмотреть как это делает сам ексель (в редакторе vba) и перенести это в акс

  Ответить  
 
 автор: k@s   (14.04.2012 в 09:39)   личное сообщение
 
 

Дело в том что каждый раз создается новый лист.
Похоже надо делать так Range("h:h").NumberFormat = "dd.mm.yyyy"

  Ответить  
 
 автор: ddi   (14.04.2012 в 12:36)   личное сообщение
 
 

"m/d/yyyy"?

  Ответить  
 
 автор: k@s   (16.04.2012 в 10:59)   личное сообщение
 
 

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

  Ответить  
 
 автор: pashulka   (16.04.2012 в 12:45)   личное сообщение
 
 

Application.DisplayAlerts = False 'Excel
'Сохранение рабочей книги
Application.DisplayAlerts = True

  Ответить  
 
 автор: k@s   (16.04.2012 в 13:37)   личное сообщение
 
 

пробовал этот вариант тоже ругается на DisplayAlerts. в примере есть строка DoCmd.SetWarnings False '-но она почему то не работает

  Ответить  
 
 автор: pashulka   (16.04.2012 в 14:01)   личное сообщение
 
 

Дык, я же намекал на то, что Application это Excel, а как Вы получаете доступ к этому об'екту мне неизвестно (ибо Access отсутствует)

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

  Ответить  
 
 автор: k@s   (18.04.2012 в 07:34)   личное сообщение
14 Кб.
 
 

В этом же примере сделал кнопку вывода данных в word но появляется ошибка.Что это за ошибка и как с ней бороться?
Dim app As Word.Application 'Приложение программы
'Dim obj As Object
Dim strDOC As String ' Имя документа
Dim strDOT As String ' Имя шаблона
Dim ctl As Control ' Управляющие элементы в форме
Dim s As String ' Вспомогательная строка

On Error GoTo 999
' Определяем имена шаблона и документа Word
With Application.CurrentProject
strDOT = .Path & "word.dot"
strDOC = .Path & "word.doc"
End With

' Управление документом Word
Set app = New Word.Application 'Новое приложение Word
app.Visible = True 'Отображаем документ
app.Documents.Add strDOT 'Добавляем шаблон
With app.ActiveDocument 'Выбираем активный документ
'Set obj = New Word.Application 'Новое приложение Word
'obj.Visible = True 'Отображаем документ
'obj.Documents.Add strDOT 'Добавляем шаблон
'With obj.ActiveDocument 'Выбираем активный документ

On Error Resume Next ' Отключаем ошибки
' Просматриваем все элементы формы, если
' такой закладки нет, то очищаем поток от ошибки
For Each ctl In Me.Controls
If ctl.ControlType = acTextBox Then
s = ctl.Name ' Определяем название элемента
.Bookmarks.Item(s).Range.Text = Me(s) 'Устанавливаем текст
Err.Clear ' Очищаем поток от ошибки при отсутствии элемента
End If
Next ctl
.SaveAs strDOC ' Сохраняем файл
On Error GoTo 999 ' Включаем обработку ошибки
End With
' app.Quit 'Закрываем приложение
Exit Sub
app.Quit
'obj.Quit
999:
MsgBox Err.Description 'Ошибка
Err.Clear

  Ответить  
 
 автор: snipe   (18.04.2012 в 09:34)   личное сообщение
 
 

тут должна ошибка появиться
strDOT = .Path & "word.dot"
strDOC = .Path & "word.doc"

вот так вроде должно быть

strDOT = .Path & "\word.dot"
strDOC = .Path & "\word.doc"

  Ответить  
 
 автор: k@s   (18.04.2012 в 11:33)   личное сообщение
 
 

Да я забыл ,ошибка появляется в access 2007 в 2003 нормально работает

  Ответить  
 
 автор: snipe   (18.04.2012 в 12:23)   личное сообщение
 
 

а библиотека подключена (правильная)

  Ответить  
 
 автор: k@s   (18.04.2012 в 13:41)   личное сообщение
 
 

word12 стала автоматом вместо word11.Преобразовал в 2007 таже ошибка.

  Ответить  
 
 автор: k@s   (23.04.2012 в 03:31)   личное сообщение
14 Кб.
 
 

Дык как эту ошибку побороть .Подскажите пожалуйста

  Ответить  
 
 автор: pashulka   (23.04.2012 в 21:28)   личное сообщение
 
 

Можно воспользоваться поздним связыванием ... и нафиг все референсы, точнее сказать, только Word

Dim objWord As Object
Dim ctlForm As Control
Dim strPath$, strTemp$

strPath = Application.CurrentProject.Path

If Len(Dir(strPath & "\word.dot")) = 0 Then
   MsgBox "Шаблон word.dot изволит отсутствовать", , strPath
   Exit Sub
End If

Set objWord = CreateObject("Word.Application")
objWord.Visible = True
objWord.DisplayAlerts = 0 'wdAlertsNone

With objWord.Documents.Add(strPath & "\word.dot")
     For Each ctlForm In Me.Controls
         If ctlForm.ControlType = acTextBox Then
            strTemp = ctlForm.Name
            If .Bookmarks.Exists(strTemp) = True Then
               .Bookmarks(strTemp).Range.Text = ctlForm.Text 'Me(strTemp)
            End If
         End If
     Next
     .SaveAs strPath & "\word.doc" '.Close -1 'wdSaveChanges
End With

'objWord.DisplayAlerts = -1 'wdAlertsAll
objWord.Quit -1 'wdSaveChanges

  Ответить  
 
 автор: k@s   (24.04.2012 в 14:23)   личное сообщение
27 Кб.
 
 

Не хотит работать.База виснит Word в памяти висит.

  Ответить  
 
 автор: shanemac51   (24.04.2012 в 14:38)   личное сообщение
 
 

скорее всего
----------у вас в памяти уже 1 экземпляр ворда висит

проверьте

ctrl+alt+del
список процессов

  Ответить  
 
 автор: pashulka   (24.04.2012 в 19:04)   личное сообщение
 
 

сначала уберите все ссылки на библиотеку Word и только затем тестируйте

  Ответить  
 
 автор: shanemac51   (24.04.2012 в 14:44)   личное сообщение
 
 


'как минимум

objWord.Quit -1 'wdSaveChanges
Set objWord = Nothing
End Sub

  Ответить  
 
 автор: pashulka   (24.04.2012 в 19:02)   личное сообщение
 
 

Set objWord = Nothing

это просто перестраховка

  Ответить  
 
 автор: k@s   (25.04.2012 в 19:02)   личное сообщение
 
 

поставил ознакомительную версию 2010 все прекрасно работает.Попробую обновление поставить на 2007 результат сообщу.

  Ответить  
 
 автор: k@s   (28.04.2012 в 14:47)   личное сообщение
 
 

Переустановил 2007 с Sp3 все заработало.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList