ivanok_v2 написал: что то не совсем понял проблему.
Вытягиваю из mysql сервера таблицу базы данных постредством ODBC. Записал макро рекордером действия по импорту. При первом запуске - не работает. Если сделаю импорт вручную, а потом запущу макрос (ранее записанный) - работает.
Приветствую, записал макросом действитя которые я делаю при подключения к базе. Но при выполнении макроса он не работает. Сразу ругается на первую строчку:
Код
With ActiveWorkbook.Connections("base table").ODBCConnection
Цитата
Ошибка - runtime 9 subscript out of range
Если сделать это ручную, а потом попробовать макросом то макрос работает. Если закрыть ексель и снова он попробовать макрос - то не работает (только если в ручную сделать, а потом запустить макрос - если это натолкнет на какие-то мысли).
Сам записанный макрос:
Код
Sub Макрос8()
'
' Макрос8 Макрос
'
'
With ActiveWorkbook.Connections("base table").ODBCConnection
.BackgroundQuery = False
.CommandText = Array("SELECT * FROM `base`.`table`")
.CommandType = xlCmdSql
.Connection = "ODBC;DSN=alocal;"
.RefreshOnFileOpen = False
.SavePassword = False
.SourceConnectionFile = _
"C:\Users\admin\Documents\Мои источники данных\base table.odc"
.SourceDataFile = ""
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
End With
With ActiveWorkbook.Connections("base table")
.Name = "base table"
.Description = ""
End With
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:="ODBC;DSN=alocal;" _
, Destination:=Range("$A$1")).QueryTable
' .CommandType = 0
.CommandText = Array("SELECT * FROM `base`.`table`")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = _
"C:\Users\admin\Documents\Мои источники данных\base table.odc"
' .ListObject.DisplayName = "Таблица_time_table"
.Refresh BackgroundQuery:=False
End With
End Sub
Есть макрос которые записывает выделенные ячейки в файл.
Но он перезаписывает файл, как сделать до запись?
Код
Dim fsT As Object
savеMe= "D:\1.txt"
Set fsT = CreateObject("ADODB.Stream")
fsT.Type = 2 'Specify stream type - we want To save text/string data.
fsT.Charset = "utf-8" 'Specify charset For the source text data.
fsT.Open 'Open the stream And write binary data To the object
For Each i In Selection
fsT.WriteText i & vbCrLf
Next
fsT.SaveToFile savеMe, 2 'Save binary data To disk
Но почему изменив значение в колонке D копируемое значение в ячейке E не меняется, ведь от значения в ячейке D должна зависить ячейка которая бдует копироваться, 2 - на 2 ячейки выше, 5 - на ячеей выше в столбце A и так дальше....
А нечего показывать, тот же файл только с вставленной формулой. Вот пример ячейка E15 вставляет - "Скидка 10%", из ячейки A10, а должно из ячейки A 13 (т.е. перед этим стоит аргумент 2 - на ячейки выше)
KuklP спасбо, сработало как нужно. Единственное выводит ошибку type mismatch пробовал выставить одинаковый формат (числовой, текстовый) не помогло, может можно как-то обойти этот баг.
Цитата
Я предлагал менять не по одному. Выделить диапазон, Найти/Заменить (Ctrl+F)
Несковсем понял как пользоваться данным способом, я выделил 2 столба с содержимым (что на что нужно заменить), через CTRL пробовал сначала первую колонку потом вторую выделить,нажимаю Ctrl+F значение для замены пустое ничего не заменяет...
Добрый день, нужен макрос для массовой замены значений. (я уже где-то видел данную тему, но сейчас найти не могу, помогите решить задачу)
К примеру, в столбце A у нас будет содержимое ячеек в которых нужно произвести замену(нескольких значений!), столбец B старый текст для замены,а столбец C новый текст для замены соответственно. В принцыпе схема следующаяя, Макрос ищет значение из столбца B столбце A и заменяет значением из столбца C соответственно
Добрый день подскажите пожалуйста как можно сделать следующее... К пример если у нас ячейка начинается на "#2" то что бы в данную ячейку в начало вставлялось содержимое другой ячейки (на 2 ячейки выше столбца A) К примеру Есть ячейка с содержимым "#2 любой текст", а на 2 ячейки выше ячейка с содержимым "Краткие данные" И что бы у нас получилось так "Краткие данные любой текст" То есть к примеру если ячейка начинается на "#2", то что бы копировалась ячейка которая на 2 ячейки выше. Если #3 то что бы дописывалось содержимоей ячейки которое на 3 ячейки выше....