Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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
 ;Dim 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()
      ;Dim wBook As Excel.Workbook ' чтобы обращаться к созданной таблице
' здесь я бы сделал не так:
' Set exapp = New Excel.Application
' а добавил бы возможность использовать запущенное приложение
      ;Dim 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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам