Я разрабатываю небольшой инструмент, который запрашивает наша база данных и возвращает некоторые ссылки.Excel VBA Добавление записей ниже существующих значений
У меня возникли проблемы с добавлением новых значений query'd ниже уже существующих значений в excel Sheet1
.
Option Explicit
Public Ref As String
Const DWConnectString = "Provider=SQLOLEDB... "
Public Property Get rRef() As String
rRef = Me.TextBox1.Value
Ref = Trim(rRef)
End Property
Private Sub TextBox1_Change()
Dim rRef As String
rRef = Me.TextBox1.Value
End Sub
Private Sub ZoekRef_Click()
Dim cn As Object
Dim rs As Object
Dim cm As Object
Dim Ref As String
Dim StrSource As String
Dim startrow As Integer
Ref = rRef
Set cn = CreateObject("ADODB.Connection")
cn.Open DWConnectString
Set rs = CreateObject("ADODB.Recordset")
'rs = New ADODB.Recordset
StrSource = "Select CONSIGNMENT.CONSIGNMENT, CONSIGNMENT.DOCUMENT_REMARK_2, INVOICE_HIST.NET_AMOUNT, INVOICE_HIST.VAT_AMOUNT, INVOICE_HIST.INV_CURRENCY "
StrSource = StrSource & "from CONSIGNMENT left outer join INVOICE_HIST ON CONSIGNMENT.CONSIGNMENT=INVOICE_HIST.CONSIGNMENT "
StrSource = StrSource & "where DOCUMENT_REMARK_2 like '%"
StrSource = StrSource & Ref & "%'"
rs.Open StrSource, cn
If rs.EOF Then
MsgBox "Geen Resultaten"
Exit Sub
Else
Dim fieldNames, j
rs.MoveFirst
ReDim fieldNames(rs.Fields.Count - 1)
For j = 0 To rs.Fields.Count - 1
fieldNames(j) = rs.Fields(j).Name
Next
Sheet1.Range(Sheet1.Cells(1, 1), Sheet1.Cells(1, rs.Fields.Count)).Value = fieldNames
For j = 1 To rs.Fields.Count
Sheet1.Columns(j).AutoFit
Next
Sheet1.Cells.CopyFromRecordset rs
'fldcount2 = Sheets("sheet1").UsedRange.Rows.Count
Sheet1.Rows(1).Insert
Sheet1.Range(Sheet1.Cells(1, 1), Sheet1.Cells(1, rs.Fields.Count)).Value = fieldNames
startrow = 3
Do Until rs.EOF
rs.MoveNext
startrow = startrow + 1
Loop
End If
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Я думал об использовании линии:
Do until trim(cells(startrow,1).Value) = ""
startrow = startrow + 1
Loop
Перед тем как rs.Movenext
линии, но, кажется, чтобы проверить, не записи фактического файла Excel.
Могу ли я проверить свои текущие значения Sheet1 перед добавлением нового набора записей, чтобы он был ниже того, что уже существует?
Спасибо за помощь.
Вы пытаетесь получить последнюю строку с данными? Существует [множество способов] (http://www.thespreadsheetguru.com/blog/2014/7/7/5-different-ways-to-find-the-last-row-or-last-column-using- использование- vba) для этого, мой любимый «LastRow = Cells (Rows.Count,« A »). End (xlUp) .Row'. – nicholas79171
Итак, в какой части моего кода я добавляю эту строку + использовать последнюю, чтобы скопировать RS в нужном месте? – Witloofdc
Я не мог сказать, глядя на ваш код, вы пытаетесь выбрать ряд строк? Или вы просто пытаетесь получить первую открытую строку внизу, а затем вставьте данные под нее? – nicholas79171