currentDB

Finish
Дата: 12.01.2012 10:03:08
Привет!
Win 7,Access 2010

из таблицы эксель делаю импорт в базу с помощью
strSQL = "Insert INTO T_650 SELECT * FROM [Sheet1$" & sAddr3 & "] IN 'C:\Documents and Settings\" & CurLog & "\Desktop\FinanceDB\650.xls'[Excel 5.0;HDR=no;IMEX=1] ;"
CurrentDB.execute strSql
все хорошо работает,но при переносе данных,а именно в строчке(CurrentDB.execute str SQl) он открывает сам эксель фаил для просмотра,как сделать чтоб этого не было
Finish
Дата: 12.01.2012 10:37:10
важная особенность,если другие эксель фаилы не открыто то этот тоже не открывает,а если хоть один эксель открыт то он открывает
lord_de_tempest
Дата: 12.01.2012 11:00:35
TransferSpreadSheet?
lord_de_tempest
Дата: 12.01.2012 11:02:19
Или сначала прилинковать Excel-табличку, а потом insert-ить.
Finish
Дата: 12.01.2012 11:18:25
lord_de_tempest

а можно немного поподробней про (сначала прилинковать эксель потом инсертить),если есть какой-нить примерчит буду ооочень благодарен!
qwerty112
Дата: 12.01.2012 11:44:27
автор
currentDB

вот умеет "Михалыч" краткие и ёмкие тосты сабжы выдавть
http://www.sql.ru/forum/actualsearch.aspx?a=Finish&ma=0

Finish
Привет!
Win 7,Access 2010

из таблицы эксель делаю импорт в базу с помощью
strSQL = "Insert INTO T_650 SELECT * FROM [Sheet1$" & sAddr3 & "] IN 'C:\Documents and Settings\" & CurLog & "\Desktop\FinanceDB\650.xls'[Excel 5.0;HDR=no;IMEX=1] ;"
CurrentDB.execute strSql
все хорошо работает,но при переносе данных,а именно в строчке(CurrentDB.execute str SQl) он открывает сам эксель фаил для просмотра,как сделать чтоб этого не было

а чё "5.0" ? - мелковато как-то ...

ну и по-вопросу "вообще" - currentDB тут нипричём,
файл, видимо, и так уже открыт, когда к нему автор "ломится" запросом
lord_de_tempest
Дата: 12.01.2012 12:56:57
Finish
ну и по-вопросу "вообще" - currentDB тут нипричём,
файл, видимо, и так уже открыт, когда к нему автор "ломится" запросом


Да нет, там, наверное, идет какая-то работа с объектом Excel.Sheet. И, если приложение Excel не открыто, то оно открывается с visible=false по умолчанию, а если открыто, то Excel.Sheet открывается в нем.
lord_de_tempest
Дата: 12.01.2012 13:02:21
Finish
lord_de_tempest

а можно немного поподробней про (сначала прилинковать эксель потом инсертить),если есть какой-нить примерчит буду ооочень благодарен!


Ну я имел в виду 2 варианта:
1. Сделать импорт листа в табличку командой Transferspreadsheet.
или
2. Сначала прилинковать лист к Access, а потом из него добавить строки в табличку. Прилинковать можно той же командой Transferspreadsheet:DoCmd.TransferSpreadsheet acLink,... А добавить той же CurrentDB.Execute
Finish
Дата: 12.01.2012 16:35:45
Все верно работа идёт с Excel.Sheet
а как можно принудительно сделать открытие со свойством visible = false ?
Finish
Дата: 13.01.2012 09:25:07
Private Sub Command81_Click()
  Dim xlApp As Object
  Dim xlBook As Object
  Dim xlSheet As Object
  Dim sPathFile
  Dim strSQL As String
  Dim si
Set si = CreateObject("WScript.Network")
CurLog = si.UserName
     
   sPathFile = "C:\Documents and Settings\" & CurLog & "\Desktop\FinanceDB\650.xls"
  Set xlApp = CreateObject("Excel.Application")    Set xlBook = xlApp.workbooks.Open(sPathFile)
   Set xlSheet = xlBook.ActiveSheet
      xlSheet.Columns("J:J").EntireColumn.Hidden = False
    xlSheet.Range("J3").Select
      fr = xlSheet.Cells(xlSheet.Rows.Count, 1).End(xlUp).Row
      If fr > 3 Then
    xlApp.Selection.AutoFill Destination:=xlSheet.Range(xlSheet.Cells(3, 10), xlSheet.Cells(fr, 10))
    End If
  xlSheet.Range(xlSheet.Cells(3, 10), xlSheet.Cells(fr, 10)).Select
    xlSheet.Range("L23").Select
  DoCmd.OpenQuery "Q_Del_650"
  
  
 sAddr3 = xlBook.Sheets("Sheet1").Range(xlBook.Sheets("Sheet1").Cells(3, 1), xlBook.Sheets("Sheet1").Cells(fr, 11)).Address(False, False)


 strSQL = "Insert INTO  T_650  SELECT *  FROM  [Sheet1$" & sAddr3 & "] IN 'C:\Documents and Settings\" & CurLog & "\Desktop\FinanceDB\650.xls'[Excel 8.0;HDR=no;IMEX=2] ;"
   CurrentDb.Execute strSQL ' ВОТ в этой строчке он открывает эксель
    
    xlBook.Save
    Set xlSheet = Nothing
    Set xlBook = Nothing
    xlApp.Quit
    Set xlApp = Nothing
     
End Sub