Я пытаюсь запустить код excel vba внутри доступа vba. Он почти работает, но у меня проблема с функцией замены. Может ли кто-нибудь взглянуть на код ниже и рассказать мне, что не так?excel replace function in acces vba
Sub test2() Dim lngColumn As Long Dim xlx As Object, xlw As Object, xls As Object, xlc As Object Dim dbs As DAO.Database Dim rst As DAO.Recordset Dim blnEXCEL As Boolean blnEXCEL = False ' Establish an EXCEL application object On Error Resume Next Set xlx = GetObject(, "Excel.Application") If Err.Number 0 Then Set xlx = CreateObject("Excel.Application") blnEXCEL = True End If Err.Clear On Error GoTo 0 xlx.Visible = True ' Replace C:\Filename.xls with the actual path and filename ' of the EXCEL file from which you will read the data Set xlw = xlx.Workbooks.Open("Q:\21 Projekty\FlowControl\Flow.xlsx", , True) ' opens in read-only mode ' Replace WorksheetName with the actual name of the worksheet ' in the EXCEL file Set xls = xlw.Worksheets("Flow") ' Replace A1 with the cell reference from which the first data value ' (non-header information) is to be read Set xlc = xls.range("A1") ' this is the first cell that contains data With xls .Columns(2).Insert Shift:=xlToRight SelectedColumn = SelectedColumn + 1 .Columns(3).Copy _ Destination:=.Columns(1) .Columns(2).Replace What:=" - *", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False 'Error there Subscript out of range (Error 9) .Columns(3).Replace What:="* - ", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False .Columns(2).AutoFit .Columns(3).AutoFit Errorhandling: 'Application.ScreenUpdating = True 'End Sub End With end sub
Проверьте такие вещи, как xlToRight, xlByRows, xlPart - Доступ не понимающие их с поздним связыванием. В Excel введите? XlToRight в окно Immediate и он вернется -4161. Используйте номер, который он вам дает. –
Если ваш код работает как есть - похоже, вы установили ссылку на Excel, но используете последнее связывание в коде - вы определяете xlx как объект, а не Excel.Application. –
Большое спасибо, это была настоящая проблема, поэтому мой код в этой части теперь выглядит так: .columns (2) .Replace What: = "* -", Replacement: = "", LookAt: = 2, _ SearchOrder: = 1, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False – Ketyas