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

Страницы: 1 2 3 4 След.
Определить имя файла созданного сегодня
 
Доброго всем дня. Посерфил вопрос по форумам но не нашел простого решения. У меня ситуация в директорию складываются файлы с похожими названиями но обработке нужно выбрать только файл который создан сегодня для преобразования его в удобочитаемый вид. Как получить из директории название только такого файла? Помогите, плиз.
проверка, что строка входит в массив строк с именем, как сделать проверку, что строка входит в массив строк с именем
 
Всем доброго дня.

У погуглил по форуму но не смог найти. У меня задача сравнить строку с массивом строк. Строки с которыми я сравниваю объединены как массив с именем. и задача просто определить есть ли в данном массиве строк такая строка. Как я понимаю в excel под такое безобразие есть какая то встроенная функция. Хотя я могу ошибаться. Не подскажете как решить задачу? Или где искать вариант решения.
Изменено: alex_j - 13.02.2024 17:37:13 (загрузка файла)
Вопрос по выпадающему списку
 
Всем доброго дня. Пытаюсь сделать выпадающий список предопределенных значений по условию. Если условие А то один список Если Б то другой. Использую конструкцию:
Код
Private Sub CommandButton2_Click()

Dim OshB(8), OshW(8), OshQ(8), OshE(4), h, u, Za, v As String
Dim wLastRow, oLastRow, az, ao, dso As Long
Set wb = ThisWorkbook.Worksheets(1)
Set ob = ThisWorkbook.Worksheets(2)
    
      OshW(0) = "Изменение процесса без отчетности, с требованиями"
      OshW(1) = "Изменение отчета без процесса, с требованиями"
      OshW(2) = "Изменение процесса и отчета, с требованиями"
      OshW(3) = "Изменение процесса без отчетности, без требований"
      OshW(4) = "Изменение отчета без процесса, без требований"
      OshW(5) = "Изменение процесса и отчета, без требований"
      OshW(6) = "Технические изменения"
      OshW(7) = "Не удалось классифицировать"
      u = Join(OshW, ",") 'Новая функциональность, Улучшение
      
      OshQ(0) = "Запрос на консультацию"
      OshQ(1) = "Корректировка данных"
      OshQ(2) = "Проведение анализа без доработок"
      OshQ(3) = "Изменение процесса без отчетности, без требований"
      OshQ(4) = "Технические операции"
      OshQ(5) = "Формирование документации"
      OshQ(6) = "Непроизводственные трудозатраты"
      OshQ(7) = "Не удалось классифицировать"
      Za = Join(OshQ, ",") 'Задача
      
      
      wLastRow = wb.Cells(1, 1).CurrentRegion.Rows.Count
      For dsw = 2 To wLastRow
      If wb.Cells(dsw, 3) Like "Задача" Then
      wb.Cells(dsw, 9).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Za
      Else: wb.Cells(dsw, 9).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=u
      End If
при этом получаю выпадающие списки "<n/a>"
Хотя конструкция
Код
Dim OshB(8), OshW(8), OshQ(8), OshE(4), h, u, Za, v As String
Dim wLastRow, oLastRow, az, ao, dso As Long
Set wb = ThisWorkbook.Worksheets(1)
Set ob = ThisWorkbook.Worksheets(2)

oLastRow = ob.Cells(1, 1).CurrentRegion.Rows.Count 'лист "ошибки"
Application.AskToUpdateLinks = False
      OshB(0) = "Отмененные ошибки (в т.ч. Вошедшие в другие задачи)"
      OshB(1) = "Исторические ошибки"
      OshB(2) = "Ошибки переноса кода"
      OshB(3) = "Ошибки тестирования"
      OshB(4) = "Ошибки данных или действий заказчика"
      'OshB(5) = "Ошибки анализа"
      OshB(6) = "Ошибки разработки"
      OshB(7) = "Ошибки проектирования" '"Ошибки внедрения нового функционала"
      'OshB(8) = "Ошибки наложения функционала"
      h = Join(OshB, ",") 'ошибки
      For dso = 2 To oLastRow
      On Error Resume Next
      ob.Cells(dso, 9).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=h
      Next
работает корректно.

Может есть какая то особенность по вариативности выпадающих списков? Подскажите плиз. Или я где то жестоко ошибаюсь.
Автоматическое изменение в файле XLS в заданной папке, необходимо отслеживать изменения файлов в папке и заменять в них точку на точку.
 
Всем доброго дня!

Есть такая проблема, что программа вносящая изменения в файл excel сохраняет даты в общем формате. А потом не может корректно их читать. лечение - заменить "." на "." - даты преобразуются в формат "дата". Как я понимаю VBA может получить информацию о дате фохранения файла. Идея ориентироваться на дату сохранения файла в папке а если дата+время равно текущему с отклонением 1 секунда открывать измененный файл и менять "." на "."
Скажите насколько идея жизнеспособна или есть другие варианты решения. и как отследить изменения дата+время сохранения внешнего файла excel в режиме онлайн?
Формирование раскрывающегося списка в ячейке
 
Доброго всем дня. Пытаюсь организовать список в котором будет выбор действий из выпадающего списка в определенной ячейке. Но у меня не формируется список хотя ошибки при компиляции не возникает. Подскажите пожалуйста, чего не хватает в коде
Код
Set wb = ThisWorkbook.Worksheets("Лист1")
For b= 2 to 100
With wb.Cells(b, 9).ComboBox1
        .AddItem "Действие 1"
        .AddItem "Действие 2"
        .AddItem "Действие 3"
End With
wb.Cells(b, 9).Show
Получить данные из html, распарсить страницу для получения данных после определенных символов
 
Доброго всем дня.
Пытаюсь получить данные из внешнего источника в таблицу. Но все время валятся не те данные, Подозреваю что где то логическая ошибка в коде, правда не понимаю где. Помогите люди добрые понять в чем косяк.
То что в первом блоке отрабатывает замечательно
А вот когда я пытаюсь получить значение идущее после "ЗЗЗ 3.1.1." то получаю массу неверных данных.

Код
URL2 = "https://jira.хххх.local/browse/" & sb.Cells(a, 1)
     Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
     XMLHTTP.Open "GET", URL2, False
     XMLHTTP.SEND
     Txt = XMLHTTP.responseText
     n = InStr(1, Txt, "jira-issue-status-lozenge-max-width-medium")
     k = InStr(n, Txt, "</span>")
     If InStr(1, Replace(Mid(Txt, n, k - n), " ", " "), "АААА", vbTextCompare) > 0 Then wb.Cells(b, 5) = "а!"
     If InStr(1, Replace(Mid(Txt, n, k - n), " ", " "), "ББББ", vbTextCompare) > 0 Then wb.Cells(b, 5) = "б!"
     On Error Resume Next


     n1 = InStr(1, Txt, "fixVersions-field")
     k1 = InStr(n1, Txt, "</span>")
     k2 = InStr(n1, Txt, "ЗЗЗ 3.1.1")
          'Ttxt1 = Replace(Mid(Txt, n1, k1 - n1), " ", " ")
          'TTxt2 = Replace(Mid(Txt, n1, k2 - n1), " ", " ")
     If InStr(1, Replace(Mid(Txt, n1, k1 - n1), " ", " "), "ЗЗЗ 3.1.1", vbTextCompare) > 0 Then wb.Cells(b, 6) = Mid(Txt, k2 - n1, 3)
     'If InStr(1, Replace(Mid(Txt, n1, k1 - n1), " ", " "), "РРР-2", vbTextCompare) > 0 Then wb.Cells(b, 6) = Right(Mid(Txt, n1, k - n1), 9)
     
    b = b + 1
Вопрос по преобразованию дат в значени год\месяц\день
 
Всем доброго вечера.

У меня возник вопрос по пересчету стажа. Есть входные данные дата приема, дата увольнения, коэффициент
на форуме вопрос поднимали и рекомендовано использовать функцию РАЗНДАТ. Она вычисляет разницу между значением 2 и значением 1 и выводит сколько это в годах, месяцах и днях. Но проблемма в коэффициенте. Т.к. он влияет на итоговое количество учитываемых лет месяцев и дней. Не подскажете каким образом можно правильно пересчитать стаж с учетом коэффициента?
при выполнении макроса вырубается Excel
 
Помогите люди добрые.
Не совсем понимаю что происходит. С помощью макроса собранного из мудрости отсюда
http://www.script-coding.com/WSH/WshShell.html#3.4.
Код
Sub Сканировать()
    Dim x As Object
    Set WshShell = CreateObject("WScript.Shell")
    Set WshExec = WshShell.Exec("Microsoft Edge")
    x = Shell("""C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe""" & """https://jira.sibur.local/projects/CK1CNIPI?selectedItem=com.atlassian.jira.jira-projects-plugin%3Arelease-page&status=released-unreleased""", vbNormalFocus, True)
    Res = WshShell.AppActivate(WshExec.ProcessID)
    If Res Then WshShell.SendKeys ("^a^c")
    Set WshExec = WshShell.Exec("Microsoft Excel")
    Res = WshShell.AppActivate(WshExec.ProcessID)
    Set wb = ThisWorkbook.Worksheets("Лист3")    'база рабочая
    wb.Paste
End Sub
Пытаюсь с помощью Edge получить данные из jira и перенести их в документ. При этом макрос не выдавая ошибки просто гасит Excel. Попробовал запустить макрос который предлагал doober, для подобной операции  https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=156346&TITLE_SEO=156346-kak-skopirovat-obekty-na-internet-stranitse-i-vstavit-ikh-v-excelно происходит так же выключение Excel. Вопрос: у меня что то с кодом или с настройками Excel? Если с кодом, то посоветуйте как поправить. К сожалению использовать IE для jira не умею. В нем не настроен пользователь и настроить его не получится :(
Изменено: alex_j - 27.03.2023 10:09:27 (поправил ссылки)
Как скопировать объекты на интернет странице и вставить их в Excel
 
Требуется открыть страницу в интернете, скопировать все что там есть (CTRL+A, CTRL + C) и вставить на лист активной книги
подскажите возможно ли так сделать? И если возможно то как?
Попробовал такой код, но получил ошибку :(
Код
Sub skan()
Dim xhr As New XMLHTTP60
xhr.Open "GET", "страница в интернете", False
xhr.send
    If xhr.Status = 200 Then 'If xhr.Status >= 200 And xhr.Status < 300 Then
        Debug.Print xhr.responseText
    Else
        Debug.Print xhr.responseText
    End If
Set Tl1 = ThisWorkbook.Worksheets("Лист1")
Set tl2 = ThisWorkbook.Worksheets("Лист2")
xhr.Select
tl2.Activate
 ActiveSheet.Paste
End Sub
Помогите пожалуйста.
Удаление строк в таблице
 
Прошу объяснить ошибку выполнения кода.
Задача нужно очистить таблицу удалив заполненные ранее строки. Использовал код:


Наблюдается некоторый глюк:
первая итерация - удаляются строки
последующие итерации - строки удаляются не все и не совсем по понятному мне алгоритму (хотя может я уже туплю)
Код
For nstr1 = 4 To Sh1.Cells.SpecialCells(xlLastCell).Row 
     Sh1.Rows(nstr1).Delete 
Next
попробовал удалить строки массивом но код не сработал
Код
Rows(4 & ":" & Sh1.Cells.SpecialCells(xlLastCell).Row).EntireRow.Delete
Помогите, люди добрые
Изменено: alex_j - 20.03.2023 17:14:44 (поправил код)
Вопрос по работе VBA. После отработки макросов обращающихся к другой книге перестают работать макросы на листе
 
Доброго всем дня.

Вот собственно САБЖ!
наполнил книгу макросами (поиск и подбор данных из таблицы первого листа, коррекция данных таблицы первого листа, 2 макроса на преобразование данных (1 простая корректировка второй генерация ссылки) и макрос на получение сетевых данных о имени регистрации клиента + 2 кнопки в которых идет обращение к внешнему файлу (запись измененной информации и чтение информации с корректировкой данных таблицы текущей книги).
Теперь если мы работает только внутри книги - все хорошо. но как только идет обращение к внешней книге отрабатывает все корректно после чего перестает работать макрос поиска данных в таблице рабочей книги.
Предположил что т.к. я в разных макросах использовал разные наименования переменных ексель где то проклинил - переименовал переменные приведя к однообразию - не помогает.
Почему такая хреновина может происходить, как она лечится и что нужно для корректной постановки диагноза? (понимаю что 3 вопроса в 1м запросе но все они взаимосвязаны пойду пока попробую зачистить файл от данных для примера)
Совместная работа с книгой
 
Добрый день. Возникла необходимость сквозной предачи данных между несколькими пользователями заполняющими общую таблицу. Решал задачу добавлением дополнительной книги в которую по нажатию кнопки пользователи сливают данные 9новые или измененые) и получают данные (новые или изменены). Для этого написал для кнопки следующий код
Код
Sub base()
Dim wLastRow, qLastRow, s, PosStr As Long
Dim wb, base As Worksheet
Application.ScreenUpdating = False: Application.EnableEvents = False
Set wb = ThisWorkbook.Worksheets("Лист1") 'база рабочая
If IsBookOpen("БазаРаботТестирования.xlsx") Then
    Set basejob = Workbooks("БазаРаботТестирования.xlsx")
Else
    Set basejob = Workbooks.Open("C:\Users\mayorovab\Documents\БазаРаботТестирования.xlsx")
End If
Set base = basejob.Worksheets("Лист1") 'база общая
wLastRow = wb.Cells(1, 1).CurrentRegion.Rows.Count
qLastRow = base.Cells(1, 1).CurrentRegion.Rows.Count
'определяем есть ли вносимый элемент в общей базе если нет то добавляем если есть то редактируем
For s = 3 To wLastRow
    qLastRow = base.Cells(1, 1).CurrentRegion.Rows.Count
    Set QCellFind = base.Range("A:A").Find(wb.Cells(s, 1), , xlValues, xlWhole)
    If Not QCellFind Is Nothing Then PosStr = QCellFind.Row Else PosStr = qLastRow + 1
    base.Cells(PosStr, 1) = wb.Cells(s, 1).Value
    base.Cells(PosStr, 2) = wb.Cells(s, 2).Value
    base.Cells(PosStr, 3) = wb.Cells(s, 3).Value
    base.Cells(PosStr, 4) = wb.Cells(s, 4).Value
    base.Cells(PosStr, 5) = wb.Cells(s, 5).Value
    base.Cells(PosStr, 6) = wb.Cells(s, 6).Value
    base.Cells(PosStr, 7) = wb.Cells(s, 7).Value
    base.Cells(PosStr, 8) = wb.Cells(s, 8).Value
    base.Cells(PosStr, 9) = wb.Cells(s, 9).Value
    base.Cells(PosStr, 10) = wb.Cells(s, 10).Value
    base.Cells(PosStr, 11) = wb.Cells(s, 11).Value
    base.Cells(PosStr, 12) = wb.Cells(s, 12).Value
    base.Cells(PosStr, 13) = wb.Cells(s, 13).Value
Next
'/определяем есть ли вносимый элемент в общей базе если нет то добавляем если есть то редактируем
'определяем есть ли новые элементы в рабочей базе если нет то добавляем если есть то редактируем
 For s = 3 To qLastRow
    wLastRow = wb.Cells(1, 1).CurrentRegion.Rows.Count
    Set WCellFind = wb.Range("A:A").Find(base.Cells(s, 1), , xlValues, xlWhole)
    If Not WCellFind Is Nothing Then PosStr = WCellFind.Row Else PosStr = wLastRow + 1
    wb.Cells(PosStr, 1) = base.Cells(s, 1).Value
    wb.Cells(PosStr, 2) = base.Cells(s, 2).Value
    wb.Cells(PosStr, 3) = base.Cells(s, 3).Value
    wb.Cells(PosStr, 4) = base.Cells(s, 4).Value
    wb.Cells(PosStr, 5) = base.Cells(s, 5).Value
    wb.Cells(PosStr, 6) = base.Cells(s, 6).Value
    wb.Cells(PosStr, 7) = base.Cells(s, 7).Value
    wb.Cells(PosStr, 8) = base.Cells(s, 8).Value
    wb.Cells(PosStr, 9) = base.Cells(s, 9).Value
    wb.Cells(PosStr, 10) = base.Cells(s, 10).Value
    wb.Cells(PosStr, 11) = base.Cells(s, 11).Value
    wb.Cells(PosStr, 12) = base.Cells(s, 12).Value
    wb.Cells(PosStr, 13) = base.Cells(s, 13).Value
Next
Workbooks("БазаРаботТестирования.xlsx").Close SaveChanges:=True

End Sub

Код работает корректно, но долго. Не подскажете варианты оптимизации работы кода? потому что даже при 150 строчках записи получается порядка 25-30 секунд размышления. :(
Ошибка 438. Не понимаю причины, при попытке произвести сортировку данных получаю ошибку 438
 
Люди добрые помогите понять причину возникновения ошибки. Почитал по форумам описание что ошибка может вообще быть не связана с кодом.
Описание ситуации: есть рабочий файл в который вносятся данные по работам пытаюсь создать отдельный файл который буде делать форму отчета по проектам. Для этого прочитав номера задач он собирает данные из рабочего файла и интернета в определенный шаблон. При попытке получения данных ловлю ошибку на шаге сравнения даты эталонной и из списка.
Приложил оба файла
Получение данных из html, Полуучаю вместо данных пустое окно
 
Пытаюсь получить данные из интернет страницы. Нашел вариант получения данных по тегу:
Код
Function GetHTML1(ByVal myURL As String) As String
On Error Resume Next
    With CreateObject("msxml2.xmlhttp")
        .Open "GET", myURL, False
        .send
        Do: DoEvents: Loop Until .readyState = 4
        GetHTML1 = .responseText
    End With
End Function
    
Sub Primer3()
Dim myHtml As String, myFile As Object, myTag As Object, myTxt As String
    myHtml = GetHTML1("https://expert.chistov.pro/webinars/537546/")
    Set myFile = CreateObject("HTMLFile")
    myFile.body.innerHTML = myHtml
    Set myTag = myFile.getElementsByTagName("title")
    myTxt = myTag(0).innerText
    MsgBox myTxt
End Sub

Попробовал на нужной мне странице  - получил пустое окно сообщения. предположил что косяк из-за того что я обращаюсь к странице jira (кто знает может там чего то еще нужно excel для нормального парсинга) Но т.к. страница открыта под моим же пользователем то проблем с правами вроде быть не должно.
Проверил на другом сайте - результат тот же - пустое окно. При этом про ручной проверке поле тег титул есть на обеих страницах.

Подскажите - я что то не так делаю или есть другие варианты получения нужной информации средствами VBA? По форуму искал решение но то что нашел не сработало.
Помогите оформить в коде, Задача прочитать файлы из папки и получить файл отчет содержащий часть имени файла и значения первых 2х строк из из этого файла.
 
Всем доброго дня. Примерно представляю как это сделать но не могу оформить в коде. Те описания которые нашел мне не сильно помогают т.к. используют обьекты о которых я мало что знаю.
Идея следующая:
на активном листе в ячейке (2,1) путь к папке с файлами
в этой папке создается файл с именем "отчет"
Цикл на чтение файлов из папки открываем
 В файл отчет пишется имя файла из папки (часть которая идет после символа _
     открываем файл имя которого написали
 Следующей строкой в отчет пишем первую Ячейку (1,1) из открытого файла
 Следующей строкой в отчет пишем первую Ячейку (1,2) из открытого файла
     закрываем открытый файл
 следующая строка в файле отчет пропускается
Переходим к следующему файлу в папке.
По окончании цикла чтения файлов в папке сохраняем файл "отчет"


Понимаю что опять написал сумбурно. Но оформить кодом быстро боюсь не смогу. Помогите люди добрые.
Подставить время начала работы после завершения предыдущей относительно выбранного сотрудника.
 
Необходимо подставить время начала следующей работы (лист «Анализ» столбец "C") равное времени окончания предыдущей работы (лист «Анализ» столбец "D") время затрачиваемое на работу вычисляется отдельно.

Идея в том, что выбрав исполнителя (Лист «Анализ" столбец "E") из выпадающего списка в ячейке столбца "C" строки в которой выбран исполнитель появляется время когда он закончил ранее взятые на себя обязательства. Для этой цели время его освобождения от этих обязательств записывается в ячейке напротив его имени (Лист «Анализ» столбец "I").

Для этой цели был написан следующий макрос
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a
    If Target.Cells.Count > 1 Then Exit Sub
    If Target = Empty Then Exit Sub
    If Intersect(Target, Range("e2:e150")) Is Nothing Then Exit Sub
    a = Range("E2:E150").Value
    For i = 1 To UBound(a, 1)
    If a(i, 1) = Cells(2, 8) Then Cells(2, 9) = Cells(i + 1, 4).Value Else
    If a(i, 1) = Cells(3, 8) Then Cells(3, 9) = Cells(i + 1, 4).Value
    Next
    If Intersect(Target, Range("d2:d150")) Is Nothing Then Exit Sub
    For i = 1 To UBound(a, 1)
    If a(i, 1) = Cells(2, 8) And Cells(i + 1, 3).Value < Cells(2, 9) Then Cells(i + 1, 3).Value = Cells(2, 9) Else
    If a(i, 1) = Cells(3, 8) And Cells(i + 1, 3).Value < Cells(3, 9) Then Cells(i + 1, 3).Value = Cells(3, 9)
    Next
End Sub
Но ожидаемый результат не получается. Прошу скорректировать макрос или предложить другой вариант решения задачи
Изменено: alex_j - 08.10.2021 16:13:12
Получить значение из заданной ячейки в случае изменения данных в массиве
 
Добрый день.
У меня  цель получить значение из заданной ячейки в случае изменения данных в массиве.
Для этой цели использую вот такое безобразие в модуле листа
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a() As Integer
Dim i As Integer
    If Target.Cells.Count > 1 Then Exit Sub
    If Target = Empty Then Exit Sub
    If Intersect(Target, Range("e2:e150")) Is Nothing Then Exit Sub

проверяю наличие изменений в массиве
Далее заполняю массив, но видимо криво т.к. ошибку получаю именно в этой части
 
Код
 For i = 2 To 150
    a(i) = .Range("E1").Offset(i)
    Next i

Сравниваю значения массива с предопределенными данными и меняю значения в ячейках
 
Код
 If Value.a(i) = Cells("h2").Value Then Cells("c" & i).Value = Cells("i2") Else
    If Value.a(i) = Cells("h3").Value Then Cells("c" & i).Value = Cells("i3")
End SubP

Приложен файл пример
Большая просьба объяснить что именно в коде не верно код по заполнению массива я взял вот отсюда https://excelpedia.ru/makrosi-v-excel/massivi-v-vba

Используется код на листе "Анализ"
Как привязать выполнение макроса к определнному действию пользователя на листе?
 
К сожалению не нашел подобных тем. Но подозреваю что они должны были бы возникать.
На листе EXCEL есть ячейки с раскрывающимся списком, по умолчанию значение ячейки пустое. Мне необходимо, чтобы при выборе значения в этих ячейках запускался макрос с определенной последовательностью действий.
Т.е. если значение ячеек в определенном столбце листа изменилось то запустить макрос. Как это можно сделать?
Заранее спасибо за помощь.
Возможно ли без применения VBA обойти ошибку циклической ссылки
 
Простите за мой французский, но я не могу понять как обойти циклическую ссылку. У меня простая система планирования 3х этапных задач. Т.к. идет распределение задач между сотрудниками я определяю дату освобождения сотрудника от прежних задач, если очередная задача назначается тому же сотруднику то автоматически подставляется рассчитанное время освобождения от работ. В этот момент все падает из за циклической ссылки. Большая просьба подсказать как можно эту ситуацию обойти. Желательно с помощью формул. В приложенном файле страница "Анализ".
Заранее спасибо
Преобразование формата даты из dd.mm.yyyy в yyyy-mm-dd
 
Задача преобразования даты из формата 12.08.2021 в формат 2021-08-12. Применил функцию format получилась конструкция
Код
tdate = sh.Cells(a, 5)
tdated = Format(tdate, "yyyy-mm-dd")
если дальше я присоединяю текст
Код
WMS_DATEd = tdated & "T00:00:00"
то результат как и планировалось
Цитата
2021-08-12T00:00:00
если нет присоединенного строкового значения то опять получаю исходный вариант даты.
пробовал конструкцию. Но преобразовать нужный вариант в строковое значение не получается
Код
tdate = sh.Cells(a, 5)
tdated = CStr(Format(tdate, "yyyy-mm-dd"))

Прошу подсказать каким способом эта задача решается.  
Изменено: vikttur - 13.08.2021 16:21:08
Считывание данных из таблицы в набор переменных, Непонятно куда, что пишется.
 
Считываю данные из внешней таблицы. Планирую формировать текстовые файлы по определенным шаблонам используя эти переменные.
На этапе считывания решил проверить правильно ли все интерпритируется (даты должны преобразовываться в особый формат). Макрос работает, наверно, результат работы ни где не отображается. Не могу понять почему. Прошу взглянуть на код и сказать где я туплю. Может порекомендуете более простое решение.
Код
Sub Генератор_запросов_СДТ()
Dim wb, ab As Workbook
Dim sPath As String
Dim sh, sha As Worksheet
'Dim tdate As Date
Set ab = ThisWorkbook
sPath = ThisWorkbook.Worksheets(1).Cells(1, 1).Value
Set wb = Workbooks.Open(sPath & "\" & "СуперФайл", False, True)
Set sh = wb.Worksheets(1)
Set sha = ab.Worksheets(2)
    For a = 2 To sh.UsedRange.Rows.Count
        tdate = sh.Cells(5, a)
        tdated = Format(tdate, "yyyy-mm-dd")
        named = sh.Cells(1, a).Value
        FACT_NUMd = sh.Cells(3, a).Value
        FACT_DATEd = tdated
        WMS_NUMd = sh.Cells(8, a).Value
        WMS_DATEd = tdated & "T00:00:00"
        DOC_NUMd = sh.Cells(11, a).Value
        DOC_DATEd = WMS_DATEd
        DOC_TYPEd = sh.Cells(13, a).Value
        SUB_FROM_CODEd = sh.Cells(20, a).Value
        SUB_TO_CODEd = sh.Cells(21, a).Value
        ITEM_CODEd = sh.Cells(22, a).Value
        QUANTITYd = sh.Cells(23, a).Value
        PACKAGE_NUMd = sh.Cells(24, a).Value
        For b = 1 To 13
            sha.Cells(a, b).Value = named
            sha.Cells(a, b).Value = FACT_NUMd
            sha.Cells(a, b).Value = FACT_DATEd
            sha.Cells(a, b).Value = DOC_NUMd
            sha.Cells(a, b).Value = DOC_DATEd
            sha.Cells(a, b).Value = DOC_TYPEd
            sha.Cells(a, b).Value = SUB_FROM_CODEd
            sha.Cells(a, b).Value = SUB_TO_CODEd
            sha.Cells(a, b).Value = ITEM_CODEd
            sha.Cells(a, b).Value = QUANTITYd
            sha.Cells(a, b).Value = PACKAGE_NUMd
        Next
    Next
End Sub
Перенос данных между столбцами двух книг. Ошибка 400
 
Задача: из файла А (по определенному пути) перенести данные из определенных столбцов в определенные столбцы файла Б. Конвертнуть часть перенесенных данных в штрихкод.
Как решал: есть некая функция по конвертации. + написал макрос
Код
Sub Äàòà()
Dim wb, ab As Workbook
Dim sWb As String
Dim Cel As Long
Dim ai, bi, ci As Range
Dim sh As Worksheet
Set ab = ActiveWorkbook
  sPath = ThisWorkbook.Worksheets(4).Cells(1, 1).Value
  sWb = ThisWorkbook.Worksheets(4).Cells(1, 2).Value
Set wb = Workbooks.Open(sPath & "\" & sWb, False, True)
Set sh = wb.Worksheets(1)
With sh
lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
ai = Range("d15:d" & lLastRow)
bi = Range("k15:k" & lLastRow)
ci = Range("y15:y" & lLastRow)
End With
ab.Worksheets(5).Range("A2:a" & lLastRow - 14) = ai
ab.Worksheets(5).Range("c2:c" & lLastRow - 14) = bi
ab.Worksheets(5).Range("d2:d" & lLastRow - 14) = ci
For Cel = 2 To lLastRow - 14
If Not Cells(Cel, 1) Like "" Then
Cells(Cel, 2) = Barcode.Code_128("A" & Cel)
        End If
If Not Cells(Cel, 3) Like "" Then
Cells(Cel, 5) = Barcode.Code_128("d" & Cel)
        End If
Next Cel
wb.Close False
End Sub
Результат:
Получена ошибка 400 без объяснения о возникновении :(
Можете помочь с тем что делается макросом не там и не то? Откуда эта ошибка? И что она обозначает?

Приложен файл источник данных. К сожалению файл результат превышает 9 мегабайт даже при обрезанных данных.
Получение данных из закрытого файла
 
В свое время для получения данных из закрытого файла мне рекомендовали использовать функцию Get_Value_From_Close_Book. У меня сложности по этой функции т.к. она возвращает О\ошибку типа "Значение". Я предположил что функция неверно находит путь к файлу и немного ее переделал:
Код
Function Get_Value_From_Close_Book(sPach As String, sWb As String, sShName As String, sAddress As String)
   Dim vData, objCloseBook As Object
   SW = sPach + "\" + sWb
   Set objCloseBook = GetObject(SW)
   vData = objCloseBook.Sheets(sShName).Range(sAddress).Value
   objCloseBook.Close False
   Get_Value_From_Close_Book = vData
End Function

Теперь название файла задается одним параметром а путь к файлу другим. При ввде данных в функцию она верно определяет искомое значение. Но при этом возвращает в ячейку ошибку с типом "Значение". не подскажете как поправить функцию для получения искомого результата. Заранее спасибо.
Экспорт значений выделенных ячеек в файл тхт
 
Добрый день.
Столкнулся с проблемой при копировании значений ячеек в файл тхт.
использую макрос:
Код
Sub Запрос()
    
Dim Nam As String
Dim vWorkingRange As Range
Nam = "Запрос боксбери" & " " & ActiveSheet.Cells(1, 2).Value
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set vWorkingRange = ActiveWorkbook.Sheets("Лист2").Range("a1:a33")
Workbooks.Add
vWorkingRange.Copy Destination:=ActiveSheet.Cells(1, 1)
ActiveWorkbook.SaveAs Filename:="C:\Users\ABMayorov\Documents\описания\" & Nam & ".txt", FileFormat:= _
xlText, CreateBackup:=False
ActiveWorkbook.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True

End Sub

Все хорошо кроме того, что добавляет лишние кавычки в копируемые строки.
Пробовал:
Код
Sub Запрос()
    
Dim Nam As String
Nam = "Запрос боксбери" & " " & ActiveSheet.Cells(1, 2).Value
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ActiveWorkbook.Sheets("Лист2").Range("a1:a33").Copy
Workbooks.Add
ActiveSheet.Range("a1:a33").PasteSpecial xlPasteValues
ActiveWorkbook.SaveAs Filename:="C:\Users\ABMayorov\Documents\описания\" & Nam & ".txt", FileFormat:= _
xlText, CreateBackup:=False
ActiveWorkbook.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True

End Sub
Та же беда.

Подскажите как обяснить Экселю, что данные для копирования не переменные а строковые. Или как еще возможно сделать требуемую операцию.
Заранее спасибо.
Экспорт выделенных ячеек в файл тхт
 
Данная тема уже рассматривалась и на этом форуме. У меня задача выделенный диапазон ячеек сохранить в файл тхт с определенным именем. Для решения заадачи я нашели поправил макрос ЮрияМ от 2010 года. Но столкнулся с проблемой: в текстовый файл сохраняются формулы, а не значения. Если использовать преобразование формул в значения до копирования выделенного диапозона то исходный файл меняется - формулы пропадают. Не подскажете как сделать корректную выгрузку в файл тхт без потери формул в исходной книге.
Код
Sub Экспорт()
Dim Nam As String
Nam = InputBox(Prompt:="Укажите имя файла", Title:="Выбираем имя")
                                                         ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value  / преобразование формул в значение
Selection.Copy
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Workbooks.Add
ActiveSheet.Paste
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
ActiveWorkbook.SaveAs Filename:="C:\Users\ABMayorov\Documents\описания\" & Nam & ".txt", FileFormat:= _
xlText, CreateBackup:=False
ActiveWorkbook.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Если необходимы какие то дополнительные данные для помощи с удовольствием предоставлю.
Заранее спасибо.
Копирование части строк по заданному признаку., Ошибка при попытке копировать часть строки
 
Доброго всем дня.

Продолжая выделение информации из файла.  Задача скопировать ячейки из таблицы одного файла на лист второго файла при условии что значение ячейки в строке равно определенному значению. Попробовал код.
Код
Sub macros1()
Dim sh, sb As Worksheet
Set sh = ThisWorkbook.Worksheets(2)
Set sb = GetObject("D:\1ñ\price_1c.xls").Worksheets(1)
For i = 1 To sb.Cells(Rows.Count, 1).End(xlUp).Row
 If sb.cels(i, 3) = "руб." Then sb.Range(Cells(i, 1), Cells(i, 4)).Copy sh.Range("a:d") Else
Next i
End Sub

При этом копирование без проверки условия проходит нормально но я не могу предположить как будет меняться диапазон т.ч. пробуюу копирование с условием.
Выдает ошибку метода. Подозреваю, что опять косяк в коде. Большая просьба помочь.
Если  нужен пример то постараюсь сделать.
Изменено: alex_j - 06.05.2019 17:28:19
Ошибка 432 при копировании данных, При копировании данных ихз 1 файла в другой появляется ошибка 432 без указания момента возникновения ошибки.
 
Всем доброго дня.

пытаюсь из файла забрать часть информации. Но получаю ошибку 432. по описанию ошибки не могу понять причины ее возникновения. Прошу помочь. т.к. думаю ошибка в моем коде.
Код
Sub makros1()
Dim sh, sb As Worksheet
Dim i As Integer
Set sh = ThisWorkbook.Worksheets(2)
Set sb = GetObject("d:\1c\price_1c.xls").Worksheets(1)
With sb.Range("a179:d388,a475:d553").Select.Copy
sh.Range("a:d").past
End With
End Sub


Если для решения задачи нужен пример то с удовольствием приложу.
запускать макрос по значению в ячейке
 
Доброго всем времени суток.
У меня следующий вопрос по этому описанию ссылка сделал скрытие строк. Но у меня задача показывать эти строки если значение в ячейке выбираемое из мписка будет равно "заказной" и скрывать если оно таковым не является. как я понимаю есть 2 варианта этого добиться постоянно контролировать изменение ячейки и сравнивать с контрольным значением типо такого проверка значения. Либо ставить выбор из элемента актив.
Есть ли еще варианты?
Буду признателен за ответ.
Next при отсутствии For: ошибка
 
Доброго всем дня. В очередной раз столкнулся с ошибкой Next при отсутствии For. Должно, вроде, лечиться правильным расположением строк в коде. Но уже перепробовал вариантов 10, а победы над компилятором не видно. Большая просьба помочь. И если есть в интернете описание того как правильно ставить строки то дайте ссылки. Это позволит не мучить всех подобными несуразностями.
Заранее спасибо.
Оптимальное заполнение площади.
 
Доброго всем дня.

Есть задача: Существует лист материала на котором нужно расположить набор прямоугольников. Задача сделать это с максимальным использованием пространства. Если я правильно понимаю то подобные задачи были уже множество раз решены. Может кто нибудь посоветовать где бы такое решение найти. Или помочь его сгенерить самостоятельно?
Вот тут я пожалуй файл приложу иначе не смогу обьяснить.
Страницы: 1 2 3 4 След.
Наверх