я пытаюсь скопировать DataGridView значения, чтобы преуспеть, до сих пор, у меня есть этот код, который работает, но только линейныйКопирование значений vb.net DataGrid, чтобы преуспеть с Vba SendKeys
Sub Test()
Dim Wkb As Workbook
Set Wkb = ActiveWorkbook
notepadID = Shell("C:\Program Files\Default Company Name\TestInstaller\TestApp.exe")
SendKeys "admin", True
SendKeys "{TAB}", True
SendKeys "nothing", True
SendKeys "{ENTER}", True
SendKeys "{ENTER}", True
SendKeys "{LEFT}", True
SendKeys ("^C")
Application.Wait (Now + TimeValue("0:00:02"))
AppActivate "MicroSoft Excel"
Application.Wait (Now + TimeValue("0:00:02"))
ActiveCell.Offset(0, 0).Select
Application.Wait (Now + TimeValue("0:00:01"))
ActiveSheet.PasteSpecial
Application.Wait (Now + TimeValue("0:00:01"))
AppActivate "Inventory"
SendKeys "{TAB}", True
SendKeys ("^C")
Application.Wait (Now + TimeValue("0:00:02"))
AppActivate "MicroSoft Excel"
Application.Wait (Now + TimeValue("0:00:02"))
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
End Sub
То, что я хотел бы сделать есть, копировать данные из datagrid, datagrid составляет 4 строки и 4 столбца, я хотел бы скопировать все из datagrid в мое excel, используя vba sendkeys. Заранее спасибо!
EDIT:
Я знаю, этот код, но выход диагоналей
Sub Test()
Dim Wkb As Workbook
Set Wkb = ActiveWorkbook
notepadID = Shell("C:\Program Files\Default Company Name\TestInstaller\TestApp.exe")
SendKeys "admin", True
SendKeys "{TAB}", True
SendKeys "nothing", True
SendKeys "{ENTER}", True
SendKeys "{ENTER}", True
Dim i As Integer
Dim j As Integer
i = 1
j = 1
SendKeys ("^C")
Application.Wait (Now + TimeValue("0:00:02"))
AppActivate "MicroSoft Excel"
Application.Wait (Now + TimeValue("0:00:02"))
ActiveCell.Offset(1, 1).Select
'Application.Wait (Now + TimeValue("0:00:01"))
ActiveSheet.PasteSpecial
Application.Wait (Now + TimeValue("0:00:01"))
AppActivate "Inventory"
SendKeys "{TAB}", True
If Not IsEmpty(ActiveCell.Value) Then
Do While Cells(i, j).Value = Cells(i, j + 3).Value
j = j + 1
SendKeys ("^C")
Application.Wait (Now + TimeValue("0:00:02"))
AppActivate "MicroSoft Excel"
Application.Wait (Now + TimeValue("0:00:02"))
ActiveCell.Offset(i, j).Select
'Application.Wait (Now + TimeValue("0:00:01"))
ActiveSheet.PasteSpecial
Application.Wait (Now + TimeValue("0:00:01"))
AppActivate "Inventory"
SendKeys "{TAB}", True
If i = 4 Then
i = i = 0
j = j + 1
End If
Loop
End If
End Sub
У меня на самом деле нет опыта работы с VB и отправкой ключей, но разве вы не можете просто прорезать ячейки? Например, 'ActiveCell.Offsett (y, x) .Выберите' –
@BennoGrimm Сэр вы могли бы разработать? Я использовал смещение, но ссылка не идет рядом с ячейкой, а скорее идет в диагональном положении. – UserSeriously
Можете ли вы объяснить, что вы подразумеваете под _It работает, но только linear_? –