Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 28 След.
Вставка названия ЧекБокса, В ячейки по выбору столбцов
 
Tigo, Смотрите файл, удачи.
Формирование списка выпадающих данных в excel
 
NTK12, Ну и для вашего развития можете почитать интересные статьи на данном сайте по вашему вопросу.
ADODB. Ошибка выполнения SQL при попытке доступа к данным, После обновления Windows возникает ошибка "Операция не поддерживается для объектов этого типа"
 
captain_s, Проверьте так:
Код
Sub Test_v2()
    Dim cn As Object
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & ThisWorkbook.FullName & ";" & _
            "Extended Properties=""Excel 12.0 Macro;HDR=No;IMEX=1"";"

    Dim rs As Object
    Set rs = CreateObject("ADODB.Recordset")
    rs.CursorLocation = 3
    rs.CursorType = 3

    rs.Open "SELECT * FROM [Лист1$A1:B2]", cn

    Do Until rs.EOF
        Debug.Print rs.Fields(0).Value, rs.Fields(1).Value
        rs.MoveNext
    Loop

    rs.Close
    cn.Close
    Set rs = Nothing
    Set cn = Nothing
End Sub
Данная строка:
Код
rs_temp.Open "select * from [Excel 12.0 macro;Database=" & ThisWorkbook.FullName & ";HDR=NO;IMEX=1;].[Лист1$A1:B2]", cn
Больше не поддерживается современными версиями: Windows 10/11 (после апдейтов), Office 365 / 2019 / 2021, ACE OLEDB 12/16. Раньше ACE позволял inline-connection string в FROM, сейчас - нет. Это где-то я находил на забугорных форумах (уже и не найду наверное).
перенос данных по условию макросом
 
Бррр, что-то ещё более запутался. Ну да ладно.
перенос данных по условию макросом
 
Ещё вариант:
Код
Option Explicit

Sub MoveByFarshmak()
    On Error GoTo CleanExit

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    With ActiveSheet
        Dim lastRow As Long, r As Long, outRow As Long
        Dim dataArr As Variant, key As Variant
        Dim dict    As Object

        Do
            lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
            If lastRow < 2 Then Exit Do

            dataArr = .Range("A2:D" & lastRow).Value
            Set dict = CreateObject("Scripting.Dictionary")

            For r = 1 To UBound(dataArr, 1)

                If Not dict.exists(dataArr(r, 4)) Then
                    dict.Add dataArr(r, 4), New Collection
                End If

                dict(dataArr(r, 4)).Add Array(dataArr(r, 1), dataArr(r, 2), dataArr(r, 3))
            Next r

            .Range("E2:H" & lastRow).Delete Shift:=xlUp
            outRow = 2

            For Each key In dict.Keys
                .Cells(outRow, "H").Value = key

                Dim i As Long

                For i = 1 To dict(key).Count
                    .Cells(outRow, 5).Resize(1, 3).Value = dict(key)(i)
                    outRow = outRow + 1
                Next i

            Next key

            .Range("A2:D" & lastRow).Delete Shift:=xlUp
        Loop

    End With

CleanExit:
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

    If Err.Number <> 0 Then
        MsgBox Err.Description, vbCritical
    End If

End Sub
перенос данных по условию макросом
 
Цитата
Farshmak написал:
ячейки удаляются со сдвигом вверх
Какие имено ячейки, в колонках
Цитата
Farshmak написал:
E, F, и G
или ячейки в колонках
Цитата
Farshmak написал:
A, B, и C
? Нужно уточнить данный момент.
Как в форму в Listbox вывести таблицу из диапазона ячеек
 
Voltz, Строго для приведённого вами файла!
Скрытый текст
Возможно вы не сможете его аддаптировать под ваш оригинальный файл.
Как в форму в Listbox вывести таблицу из диапазона ячеек
 
Цитата
Voltz написал:
по типу как ячейки брать в границы?
Нет, но если это у вас получиться то дайте нам знать.
Как в форму в Listbox вывести таблицу из диапазона ячеек
 
Voltz, Думаю что стоит вам почитать данную статью (на форуме много схожих тем с вашей темой). Стоит только поиском воспользоваться. Удачи.
откорректировать макрос, непечатается шапка на листе результат только данные
 
alex_tixi, А так?
Надеюсь поможет вам
Перенос данных из одной книги в другую, Перенос данных из одной книги в другую
 
FYS, Файлы ваши несмотрел, взял ваш код и отредактировал (оптимизировал).
Код
Option Explicit

Sub Перенос_данных()
    Dim wbFrom      As Workbook
    Set wbFrom = Workbooks("Шаблон старый ОТКУДА.xlsx")

    Dim wbTo        As Workbook
    Set wbTo = Workbooks("Шаблон новый КУДА.xlsx")

    ' Копируем с листа ф.1
    wbFrom.Worksheets("ф.1").Range("I6:I100").Copy _
            Destination:=wbTo.Worksheets("ф.1").Range("I6")

    ' Копируем с листа ВНА2
    wbFrom.Worksheets("ВНА2").Range("U9:U68").Copy _
            Destination:=wbTo.Worksheets("ВНА2").Range("U9")
End Sub
Изменено: MikeVol - 22.01.2026 20:02:02 (Забыл код вставить...)
Запуск макроса при изменении ListBox
 
Цитата
OlegO написал:
на форме есть листбокс
А никого не смутило что нет на форме данного контролла? В который раз читаю пост стартовый от OlegO и не могу понять, где у него на форме данный контролл?
Изменено: MikeVol - 20.01.2026 21:33:45
Импорт таблицы Excel через SQL запрос в Microsoft Query с преобразованием данных на лету
 
Цитата
Excelman написал:
Но вопрос с конвертированием текста в число остался, (текст в дату).
Пробуйте так
Код
    Dim SQL         As String
    SQL = _
            "SELECT " & _
            "    *, " & _
            "    DateSerial( " & _
            "        Mid([Дата],7,4), " & _
            "        Mid([Дата],4,2), " & _
            "        Mid([Дата],1,2) " & _
            "    ) AS Дата " & _
            "FROM [Источник$A2:F]"
Возможно это поможет а может нет. Полный код будет таким
Код
Option Explicit

Sub Import_From_Data1_ADO()
    On Error GoTo Whoa
    Application.ScreenUpdating = False

    Dim dbPath      As String
    dbPath = ThisWorkbook.Path & "\Source.xlsx"

    Dim cnn         As ADODB.Connection
    Set cnn = New ADODB.Connection

    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & dbPath & ";" & _
            "Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1';"

    Dim SQL         As String
    SQL = _
            "SELECT " & _
            "    *, " & _
            "    DateSerial( " & _
            "        Mid([Дата],7,4), " & _
            "        Mid([Дата],4,2), " & _
            "        Mid([Дата],1,2) " & _
            "    ) AS Дата " & _
            "FROM [Источник$A2:F]"

    Dim rst         As ADODB.Recordset
    Set rst = New ADODB.Recordset

    rst.Open SQL, cnn, adOpenStatic, adLockReadOnly

    If rst.EOF Then
        MsgBox "В таблице Data1 нет записей.", vbCritical
        GoTo LetsContinue
    End If

    With ThisWorkbook.Worksheets("Лист1").ListObjects("Таблица_Запрос_из_Excel_Files")

        If Not .DataBodyRange Is Nothing Then
            .DataBodyRange.Delete
        End If

        .Range(2, 1).CopyFromRecordset rst

        Dim dateColIndex As Long
        dateColIndex = .ListColumns("Дата").Index
        
        .ListColumns(dateColIndex).DataBodyRange.NumberFormat = "dd.mm.yyyy"
        .Range.Columns.AutoFit
    End With

LetsContinue:
    On Error Resume Next
    rst.Close
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
    Application.ScreenUpdating = True
    On Error GoTo 0
    Exit Sub

Whoa:
    MsgBox "Error Description: " & Err.Description & vbCrLf & _
            "Error Number: " & Err.Number, vbCritical
    Resume LetsContinue
End Sub
Открой редактор VBA → Tools → References, Поставь галочку:Microsoft ActiveX Data Objects 6.1 Library (или 2.8 / 6.0 — не критично) и нажми OK.
Импорт таблицы Excel через SQL запрос в Microsoft Query с преобразованием данных на лету
 
Excelman, Доброго времени суток. НЕЛЬЗЯ получить ListObject через ODBC-подключение к Excel-файлу, об этом можно в сети много иформации найти как и через ADODB.подключение. Только с указанием листа и диапазона
Код
"SELECT * FROM [Источник$A2:F]"
если ниже вашей таблицы нет других данных. Ну а ессли есть то тогда фиксированный диапазон
Код
"SELECT * FROM [Источник$A2:F29]"
Изменено: MikeVol - 17.01.2026 11:33:45
Как скрыть ненужные листы в экселе, Как создать триггер для открытия нужных листов
 
В модуль листа
Цитата
Stereok написал:
лист1
внесите следуйший код:
Код
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws          As Worksheet

    On Error GoTo CleanExit
    If Intersect(Target, Me.Range("C16")) Is Nothing Then Exit Sub
    If Target.Value = "" Then Exit Sub

    Application.ScreenUpdating = False
    Application.EnableEvents = False

    For Each ws In ThisWorkbook.Worksheets

        If ws.Name = "Лист1" Then
            ws.Visible = xlSheetVisible
        Else

            If InStr(1, ws.Name, Target.Value, vbTextCompare) > 0 Then
                ws.Visible = xlSheetVisible
            Else
                ws.Visible = xlSheetHidden
            End If

        End If

    Next ws

CleanExit:

    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
И будет вам счасте. Удачи.
Ошибка команды MkDir, Выдает ошибку на MkDir
 
Для MakeSureDirectoryPathExists также нужно учесть 64-битный VBA.
Код
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Function MakeSureDirectoryPathExists _
        Lib "imagehlp.dll" (ByVal lpPath As String) As Long
#Else
Private Declare Function MakeSureDirectoryPathExists _
        Lib "imagehlp.dll" (ByVal lpPath As String) As Long
#End If
Ошибка команды MkDir, Выдает ошибку на MkDir
 
Цитата
Александр /// написал:
Перемещал файл в корневик С,
Что-то я очень сомневаюсь в этом из-за прав доступа к корневую директорию диска C. Возможно простым Copy - Paste вы делали это, но скриптом врядли вам это удастся.
Не работает NUM2TEXT.XLA по локальной сети, Excel дописывает адрес к функции =Сумма_прописью()
 
Цитата
galdikas написал:
Сумма_прописью
в Google поиск вбейте да и тут по на форуме была похожая фунция. Поиск делает чудеса, стоит только стремится если вас не забанил Google или что там у вас. За вас это делать никто не будет. К примеру. Удачи.
Не работает NUM2TEXT.XLA по локальной сети, Excel дописывает адрес к функции =Сумма_прописью()
 
Цитата
galdikas написал:
а там пароль
Так обратитесь к автору данной надстройки, может он вам и подскажет или поможет.
Запустить макрос из другой книги
 
Цитата
Sanja написал:
А для чего такие сложности?
Нет проблем у ТС видать, вот и занимается ... .;)
Перестал работать VBA-макрос с SQL-запросом, Excel в составе Office365 / подгрузка данных из отдельного файла по условию
 
galdikas,
Код
Option Explicit

Sub test_20New_macro()

    ' Получаем БИК с Лист3!D19
    Dim fff         As String
    fff = Trim(ThisWorkbook.Worksheets("Лист3").Range("D19").Value)

    If fff = "" Then
        MsgBox "БИК пустой!", vbExclamation
        Exit Sub
    End If

    ' Целевой лист
    Dim wsTarget    As Worksheet
    Set wsTarget = ThisWorkbook.Worksheets("Лист5")
    wsTarget.Range("B2:F2").ClearContents
    wsTarget.Columns("E").NumberFormat = "@"

    ' Путь к файлу BIC
    Dim wbPath      As String
    
    ' Временно для теста
    wbPath = ThisWorkbook.Path & "\BIC.xls"
    
    ' Раскомментируйте следуйщую строку, это оригинальный путь к вашему ФАЙЛУ BIC.xls _
    и удалите строку: wbPath = ThisWorkbook.Path & "\BIC.xls" что выше
    '    wbPath = "C:\1\BIC.xls"

    ' Создаём соединение через ADO
    Dim cn          As Object
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & wbPath & ";" & _
            "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"

    ' SQL запрос
    Dim sql         As String
    sql = "SELECT [БИК], [Банк], [Город банка], [К/с] " & _
            "FROM [Лист1$] " & _
            "WHERE [БИК] LIKE '%" & fff & "%'"

    ' Создаём Recordset
    Dim rs          As Object
    Set rs = CreateObject("ADODB.Recordset")
    rs.Open sql, cn, 0, 1   ' 0=адекватный тип курсора, 1=read-only

    ' Записываем результат в Лист5
    If Not rs.EOF Then
        wsTarget.Range("B2").Value = rs.Fields("БИК").Value
        wsTarget.Range("C2").Value = rs.Fields("Банк").Value
        wsTarget.Range("D2").Value = rs.Fields("Город банка").Value
        wsTarget.Range("E2").Value = rs.Fields("К/с").Value
        Application.Goto ThisWorkbook.Worksheets("Лист5").Range("B2:E2")
    Else
        MsgBox "Данные по БИК '" & fff & "' не найдены.", vbInformation
    End If

    ' Закрываем
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing
End Sub

Архив распакуйте куда-то, запустите файл 08.01.2026_Pl (Перестал работать VBA-макрос с SQL-запросом).xlsm, жмите кнопку и увидите результат. Читайте внимательно комментарии в коде. Удачи.
Запустить макрос из другой книги
 
Фрезератор, Вы разницу в своем коде файла из вашего поста #5 и кодом что вам предоставил Уважаемый Sanja в посте #2 видите?
Перестал работать VBA-макрос с SQL-запросом, Excel в составе Office365 / подгрузка данных из отдельного файла по условию
 
galdikas, Приложите файл пример ваш
Цитата
galdikas написал:
BIC.xls
, будем что-то думать.
Запустить макрос из другой книги
 
Цитата
Фрезератор написал:
Проблема решена
Что-то не верится мне!
Код
Application.Run Macro:="Nam_Fi!ModDeliter.Delet_sch"
Ты передаёшь строку "Nam_Fi!...", а не имя файла, которое хранится в переменной Nam_Fi. VBA пытается найти книгу с буквальным именем Nam_Fi.xlsm, которой не существует. Правильно будет склеить строку с именем файла:
Код
Application.Run "'" & Nam_Fi & "'!ModDeliter.Delet_sch"


Если не верите что ваш код работает неправильно, то уберите в вашем коде строку
Код
On Error Resume Next
. Вместо неё внесите следуйщую строку
Код
On Error GoTo ErrHandler
. И окончание вашей процедуры будет таким
Код
    Application.Run Macro:="Nam_Fi!ModDeliter.Delet_sch"
    Application.DisplayAlerts = False
    ActiveWorkbook.Close True
    Application.DisplayAlerts = True
    Exit Sub

ErrHandler:
    MsgBox "Ошибка при открытии или выполнении макроса: " & Nam_Fi, vbCritical
End Sub
и увидите ошибку Вам решать.
Изменено: MikeVol - 08.01.2026 09:34:23 (Дополнил ответ)
Запустить макрос из другой книги
 
Цитата
Фрезератор написал:
майкрософт заблокировала как опасные
Проделайте то что на скриншоте и будет вам счастье.
Перестал работать VBA-макрос с SQL-запросом, Excel в составе Office365 / подгрузка данных из отдельного файла по условию
 
galdikas, Добро Пожаловать на данный форум. Для ясности приложили бы файл(ы) пример. На словах, есть возможные причины по которым у вас перестал работать ваш макрос.
1. Проблемами с правами доступа/файла.
2. Несовместимостью драйвера ODBC для Excel (особенно с новым форматом .xls или .xlsx).
Может ещё что, незнаю. Но посоветовать вам хочу перейти на ADO, что надёжнее для Excel 365 (точно утверждать не могу, нет данной версии у меня).
Работа с датами в Excel, Подсчет количества ячеек в строке с датой меньше чем (текущая + количество месяцев из другой строки в этом же столбце).
 
Цитата
DAB написал:
Красным выделены необязательные минусы,
а где это? в ваших мыслях? как понять где красное?
Изменено: MikeVol - 03.01.2026 02:45:44
Vba excel 2, Продолжение работы по созданию макрос для Vba excel
 
halik3, так вы и в прошлой вашей теме отморозились.
Многократная печать листа1, путем подстановки условия из ячеек таблицы на втором листе, печать листа путем перебора значений второго листа
 
r_Vladimir, С НОвым Годом! Посмотрите тут, возможно и поможет вам.
Поиск Даты методом .Find() с конца диапазона
 
Цитата
Sanja написал:
циклом проблем не составляет
OlegO, например так:
Код
Option Explicit

Private Sub CommandButton1_Click()
    Dim c           As Range
    Dim i           As Long

    Dim f           As Double
    f = DateSerial(2025, 12, 1)   ' или 45962

    For i = [Dt].Rows.Count To 1 Step -1
        Set c = [Dt].Cells(i)

        If c.Value = f Then
            MsgBox c.Row
            Application.Goto c, True
            Exit For
        End If

    Next i

End Sub
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 28 След.
Наверх