Импортировать формулу из базы данных MS Access в MS Excel - PullRequest
0 голосов
/ 11 июля 2020

Давно борюсь с записью формулы импорта из базы данных (=45+5 or =SUM(D20:D23)) в Excel. Моя проблема в том, что когда я импортирую формулу из базы данных в ячейку Excel, это необработанный текст из записи базы данных (=45+5 or =SUM(D20:D23)).

Это нормально, но я не могу вычислить эту формулу. Я пробовал параметры в VBA после импорта из базы данных, например:

ActiveSheet.Calculate, Worksheets(1).Calculate, ActiveWorkbook.Calculate

Работает только один ручной вариант. Когда я устанавливаю ячейку с формулой и нажимаю ENTER.

Но я хочу автоматизировать этот процесс.

---- EDIT ---- Исходный код:

Sub GetDataFieldInfo()

  Dim conn As ADODB.Connection
  Dim rs As ADODB.Recordset
  Dim address_complete As String
  Dim address_column As Integer
  Dim address_row As Integer
  Dim j As Integer

db_file = ThisWorkbook.Path & "\Example_db.mdb"
  Set conn = New ADODB.Connection
  conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
      ";Data Source=" & db_file & _
      ";Persist Security Info=False"
  conn.Open

  Set rs = conn.Execute("SELECT * FROM Students")
  For i = 0 To rs.Fields.Count - 1
   
  address_complete = findCellAddress(rs(i).Name)
  address_row = Range(address_complete).Row
  address_column= Range(address_complete).Column

  rs.MoveFirst
j = 0
Do Until rs.EOF
    If InStr(1, rs.Fields(rs(i).Name), "=", 1) Then
    Cells(address_row + 1 + j, address_column).Formula = rs.Fields(rs(i).Name).Value
    Else
    Cells(address_row + 1 + j, address_column).Value = rs.Fields(rs(i).Name)
    End If
    j = j + 1
       rs.MoveNext
       Loop
  Next
      rs.Close
End Sub

1 Ответ

0 голосов
/ 11 июля 2020

Вероятно, вы используете Range ("A1") = "= SUM (D20: D23)".

Вместо этого вы должны сделать Range ("A1"). Value = "= SUM (D20 : D23) ".

Если это не так, покажите нам код VBA, который вы используете для экспорта из msaccess в Excel. Это очень поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...