Страница: 1 |
Страница: 1 |
Вопрос: Сохраняю из Access в Excel и происходят странности
Добавлено: 08.04.08 12:01
Автор вопроса: Zhukov
Подскажите:
при создании книги эксела, при экспорте из аксесса, происходит следующее: если открыты какие нибудь документы эксела, то прямо в эти документы вставляется экспортируемый текст - это плохо, как сделать так чтобы создавалась новая книга и не происходило ничего с открытыми додументами эксел.
Вот код сохранения в эксел (форма)
Private Sub btmExcel_Click()
Dim objExcel As Object, strNameFile As String
strNameFile = "C:\Temp_Access\" & Forms!works!id_station.Value _
& "_" & Forms!works!date_start.Value & ".xls"
Call allExcel
Set objExcel = CreateObject("Excel.Application")
Set objExcel = GetObject(strNameFile)
objExcel.Application.Visible = True
objExcel.Parent.Windows(1).Visible = True
objExcel.Application.WindowState = -4137
End Sub
Вот макрос
'сохраняем файл
Set fs = CreateObject("Scripting.FileSystemObject")
'создаем каталог C:\Temp_Access, если его нет
If FolderExists("C:\Temp_Access") = False Then
Set objFolder = fs.CreateFolder("C:\Temp_Access")
End If
strNameFile = "C:\Temp_Access\" & Forms(strCurrentFormName)!id_station & "_" & Forms(strCurrentFormName)!date_start & ".xls"
obExcel.ActiveWorkbook.SaveAs strNameFile
obExcel.ActiveWorkbook.Close
Set obExcel = GetObject(strNameFile, "Excel.Application")
obExcel.Application.Visible = True
obExcel.Parent.Windows(1).Visible = True
obExcel.Application.WindowState = -4137
obExcel.ActiveWorkbook.SaveAs strNameFile
'obExcel.Close
obExcel.Quit
Exit Function
Народ шибко надо помощь....
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
urain
Вопросов: 3
Ответов: 34
Профиль | | #1
Добавлено: 08.04.08 12:57
Dim wBook As Excel.Workbook
 im StartedNew As Boolean ' ПОСТАВИМ В TRUE, ЕСЛИ САМИ ЗАПУСТИМ EXCEL
StartedNew = False
On Error Resume Next
Set exapp = GetObject(, "Excel.Application"
If err.Number <> 0 Then ' ЕСЛИ НЕТ ЗАПУЩЕННОГО Excel'я
Set exapp = CreateObject("Excel.Application"
StartedNew = True
End If
On Error GoTo 0
exapp.Visible = False
'--------------------------------
' СОЗДАЕМ НОВУЮ ТАБЛИЦУ
Set wBook = exapp.Workbooks.Add
'--------------------------------
' добавляем данные в таблицу
With wBook.Sheets(1)
.Name = "Сводная таблица "’ВОТ ЗДЕСЬ УКАЖИ НАЗВАНИЕ В КАКУЮ ВКЛАДКУ СОХРАНИТЬ!
.Range("A1".Value = "пппппппппп"
.Range("A2".Value = "ббббббббббб"
End With
' сохраняем таблицу
wBook.Save
wBook.Close
Set wBook = Nothing
' закрываем Excel
If StartedNew Then
exapp.Quit
End If
Set exapp = Nothing
Номер ответа: 2
Автор ответа:
urain
Вопросов: 3
Ответов: 34
Профиль | | #2
Добавлено: 08.04.08 13:05
Когда мучался с Ёкселем, тоже искал, что да как. Вот хорошо добрый человек помог
Private Sub Комманда1_Click()
 im wBook As Excel.Workbook ' чтобы обращаться к созданной таблице
' здесь я бы сделал не так:
' Set exapp = New Excel.Application
' а добавил бы возможность использовать запущенное приложение
 im StartedNew As Boolean ' поставим в True, если сами запустим Excel
StartedNew = False
On Error Resume Next
Set exapp = GetObject(, "Excel.Application"
If Err.Number <> 0 Then ' если нет запущенного Excel'я
Set exapp = CreateObject("Excel.Application"
StartedNew = True
End If
On Error GoTo 0
exapp.Visible = True
' создаем новую таблицу
Set wBook = exapp.Workbooks.Add
' издеваемся над созанной таблицей
wBook.Sheets(1).Name = "MyResult"
wBook.Sheets(1).Range("A1".Value = "это ячейка A1"
wBook.Sheets("MyResult".Cell(4, 2).Value = InputBox("Впиши что хочешь", "текст для ячейки B4", "filled from VB"
' сохраняем таблицу
wBook.Save "c:\my_table.xls"
wBook.Close
Set wBook = Nothing
' если Excel запускали мы, то надо бы его закрыть
If StartedNew Then
exapp.Quit
End If
Set exapp = Nothing
End Sub
Номер ответа: 3
Автор ответа:
urain
Вопросов: 3
Ответов: 34
Профиль | | #3
Добавлено: 08.04.08 13:11
Если нужно сохранить данные в уже открытой книге то укажи вкладку, её название в книге
With wBook.Sheets(1) <-
Номер ответа: 4
Автор ответа:
urain
Вопросов: 3
Ответов: 34
Профиль | | #4
Добавлено: 08.04.08 13:15
А вообще, очень хорошо использовать макросы если не знаешь как работать с объектами Excel VBA, я например все делал в Ёкселе, записывал макросы, потом останавливал их выкидывал лишнее, оставлял нужное копировал и вставлял в програмку, тот же код VBA