Добрый день. есть такого вида макрос, вытаскивает из базы SQL данные в табличном виде данные и производит некоторые преобразования:
Есть ли возможность ускорить работу. таблица вываливается большая и поэтому постобработка проходит очень долго (вторая часть макроса).
Есть ли возможность ускорить работу. таблица вываливается большая и поэтому постобработка проходит очень долго (вторая часть макроса).
Код |
---|
Sub ****Connection() Dim i As Integer Dim ****_Connection As ADODB.Connection Dim SPSKV As String Set ****_Connection = CreateObject("ADODB.Connection") SPSKV = "select idskv from SPISSKV" ****_Connection.Provider = "SQLOLEDB" ****_Connection.ConnectionString= "Server=****; Database=****; User ID=****; pwd=******" ****_Connection.Mode= adModeRead****_Connection.Open 'заполнение шапки таблицы c удалением пробелов перед номерами Set dbResults = ****_Connection.Execute("SELECT spisskv.nskv AS 'отверстие',spisskv.kust AS 'коробка',spisskv.idmest AS 'участок',BGDR.DATA AS 'Дата', BGDR.IDPLAST AS 'сторона', BGDR.VID_ISL AS 'Вид',BGDR.NN_ZAM AS 'Количество',BGDR.PBUF_STAT AS 'стат', BGDR.PZATR_STAT AS 'затр', BGDR.H_ZAM AS 'мера',BGDR.HA_ZAM AS 'а.о.зам',BGDR.T_ZAM AS 'тат', BGDR.RO_SR AS 'ось', BGDR.PPL_KRP AS 'рф', BGDR.PPL_VNK AS 'НК', BGDR.T_PERF AS 'Тф',BGDR.T_VNK AS 'Тив', BGDR.PRAV AS 'PRAV' FROM BGDR JOIN spisskv on BGDR.idskv=spisskv.idskv") For i = 4 To dbResults.Fields.Count - 1 Cells(7, i + 1).Value = dbResults.Fields(i).Name Next i Cells(7,2).CopyFromRecordset dbResults ****_Connection.Close 'изменение формата на знач Columns("B:B").Select Selection.Replace " ","" Columns("C:C").Select Selection.Replace " ","" 'обновление Columns("D:D").Select Selection.Replace What:="20", Replacement:="Ю", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Columns("F:F").Select Selection.Replace What:="21", Replacement:="П", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Columns("F:F").Select Selection.Replace What:="281", Replacement:="Т", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace What:="701", Replacement:="1", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub |