Управление ячейками в Excel через VBA Access.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Управление ячейками в Excel через VBA Access.

Сообщение alex shestov » 12.10.2005 (Ср) 8:54

Вопрос следующего плана:
Нужно подставить в определенную ячейку дату, которая берется из Access. Это нужно для того чтобы потом там вести расчет по формуле.
Проблема:
Дата проставляется но не в том формате что-ли. Т.е. Пока не войдешь в ячейку для редактирования, а потом не нажмешь Enter - формула не воспринимает данные из ячейки как дату.

Приведу часть кода, помогите найти ошибку или подскажите как сделать правильно:
Код: Выделить всё
Dim AppExl As Excel.Application
Dim wb As Excel.Workbook
Dim rs As DAO.Recordset
Dim fl As Boolean
Dim i As Long, j As Long
' Вот от сюда берется дата для расчетов
Dim TDate As Date
TDate = CDate([Forms]![MainForm]![TodayDate])
i = 1
fl = True
Set AppExl = GetObject(, "Excel.Application.10") 'Excel.Application.10")
If AppExl Is Nothing Then
    Set AppExl = CreateObject("Excel.Application")
    If AppExl Is Nothing Then
        Err.Raise vbError + 1, , "Íåò Excel'ÿ, íåò ðàáîòû!"
        Exit Sub
    End If
    AppExl.Visible = True
    fl = False
End If
Set wb = AppExl.Workbooks.OpenXML("J:\_Documents\Øåñòîâ\Gko.xlt")
If wb Is Nothing Then
    Err.Raise vbError + 1, , "Íåò êíèãè, íåò ðàáîòû!"
    Exit Sub
End If
Dim strSql As String
strSql = ("SELECT DealGKO_Svodka.Id, DealGKO_Svodka.Emitent, DealGKO_Svodka.Date_Avr, DealGKO_Svodka.PriseAvr, DealGKO_Svodka.Doxodnost, " _
        & "DealGKO_Svodka.Durachiy, DealGKO_Svodka.Quantity, DealGKO_Svodka.Value, DealGKO_Svodka.ValueNKD, " _
        & "DealGKO_Svodka.Value_All, DealGKO_Svodka.ComisTP, DealGKO_Svodka.ComisBrok, DealGKO_Svodka.[Cupon%], " _
        & "DealGKO_Svodka.TN, DealGKO_Svodka.Profit_aver, DealGKO_Svodka.Prise_Rinok/100 FROM DealGKO_Svodka;")
Set rs = CurrentDb.OpenRecordset(strSql)
rs.MoveFirst
With wb.Sheets(1)
    While Not rs.EOF
        For j = 1 To rs.Fields.Count
            .Cells(i, j).Value = rs.Fields(j).Value
        Next j
     .Cells(i, j - 13).FormulaR1C1 = "=YM(RC" & CStr(j - 16) & ",RC" & CStr(j - 15) & ",RC" & CStr(j - 14) & ""
     .Cells(i, j - 12).FormulaR1C1 = "=Durachiy(RC" & CStr(j - 16) & ",RC" & CStr(j - 15) & ",RC" & CStr(j - 13) & ", 365"
     .Cells(i, j - 5).FormulaR1C1 = "=Kupon(RC" & CStr(j - 16) & ",RC" & CStr(j - 15) & ""
' Вот ячейка куда вставляется дата .Cells(i, j - 1).Value тоже не работает
     .Cells(i, j - 1).Formula = "" & CDate(TDate) & ""
' Формула в которой она используется
     .Cells(i, j - 3).FormulaR1C1 = "=YM(RC" & CStr(j - 16) & ",RC" & CStr(j - 1) & ",RC" & CStr(j - 2) & ""


Спасибо

Al Khamid
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 274
Зарегистрирован: 11.02.2004 (Ср) 10:00
Откуда: Москва, Ховрино

Сообщение Al Khamid » 12.10.2005 (Ср) 9:14

[code][/code]
Последний раз редактировалось Al Khamid 24.11.2007 (Сб) 13:32, всего редактировалось 1 раз.

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 12.10.2005 (Ср) 9:25

Al Khamid писал(а):
Код: Выделить всё
Cells(i, j - 1).NumberFormat = "dd mm yyyy"
рулит :)


К сожалению не рулит :shock: . В ячейку все равно нужно зайти как для правки и нажать Enter...

Жду др. подсказок

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.10.2005 (Ср) 9:50

Код: Выделить всё
Cells(i, j - 1).Value = CDbl(Cells(i, j - 1).Value)
Cells(i, j - 1).NumberFormat = "dd mm yyyy"
Lasciate ogni speranza, voi ch'entrate.

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 12.10.2005 (Ср) 10:05

alibek писал(а):
Код: Выделить всё
Cells(i, j - 1).Value = CDbl(Cells(i, j - 1).Value)
Cells(i, j - 1).NumberFormat = "dd mm yyyy"


Точно - Большой человек! Спасибо. Вот теперь рулит.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 91

    TopList