Новости:

Форум на данный момент в стадии обновления. Если у Вас возникли проблемы со входом в свою учетную запись - просьба писать на email: info@excel-vba.ru

Главное меню

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.

Просмотр сообщений

Сообщения - novinky

#1
Цитата: Дмитрий Щербаков(The_Prist) от 02.12.2024, 11:42:41задачу и все условия
скриншот табл disk.yandex.ru/i/2djQUUw3uGURww (вставить картинку не получилось)
один из файлов источников: 101006649.csv
22;11;24;09;26;15;101006649;
001;28;00;00;D2;76;44;19;28;-24.72;
002;28;00;00;D2;76;44;11;12;-18.77;
003;28;00;00;D2;76;44;EA;FE;-13.24;
004;28;00;00;D2;76;44;D9;00;-8.71;
005;28;00;00;D2;76;44;1A;23;-5.02;
006;28;00;00;D2;76;44;7A;5A;-2.75;
007;28;00;00;D2;E8;00;4D;FB;-1.78;
008;28;00;00;D2;E8;00;15;84;-1.45;
009;28;00;00;D2;E8;00;19;D9;-1.45;
010;28;00;00;D2;E8;00;2C;D1;-1.77;
011;28;00;00;D2;E8;00;3C;3F;-1.88;
Function Get_Value_From_Close_Book(sWb As String, sShName As String, sAddress As String)

    Dim vData, objCloseBook As Object
    Set objCloseBook = GetObject(sWb)

    vData = objCloseBook.Sheets(sShName).Range(sAddress).Value   ' чтение из .csv
    objCloseBook.Close False   ' закрытие .csv
    Set objCloseBook = Nothing

    Get_Value_From_Close_Book = Replace(vData, ".", ",")   ' замена точек на запятые
End Function
Если добавлю
NRow = Application.ThisCell.Rowто в переменной NRow будет значение номера строки ячейки откуда вызывается функция
=Get_Value_From_Close_Book("F:\1\101006657.csv";"101006657";"J2")
Это хотел бы использовать примерно так ("D" & NRow & ":N" & NRow)
чтобы заполнить все ячейки в строке одним вызовом, а не 11-ю как сейчас.
Позже узнал как отвязаться от фиксированного пути и при вызове функции передавать только имя файла и номер ячейки. имя листа совпадает с именем файла.
Dim Path As String
    Path = ThisWorkbook.Path
    Path = (Path & "\")   
    Path = (Path & sWb & ".csv")
#2
пытаюсь решить задачу копирования J2:J12 с файла источника в "D" & NRow & ":N" & NRow целевого файла, один файл источник для каждой строки в целевом файле.
Пока решил копированием по одному значению, соответственно вызовом функции в каждой ячейке. Для заполнения строки файл источник открывается и закрывается 11 раз. Для следующих строк другие файлы так же.
 Хотел бы оптимизировать так чтобы прописывать вызов 1 раз на строку с передачей в аргументе только  имени файла для этой строки. И так для каждой строки.
#3
пытаюсь копировать столбец значений в строку, в статике работает.
Sub ColumnToRow(rowN)
    Range("A1:A5").Select
    Selection.Copy
    Range("B1").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
    Application.CutCopyMode = False
End Sub

Но не первый день бьюсь чтобы копировать в номер строки читаемой из "переменной"
Function NRow()
    NRow = Application.ThisCell.Row
End Function

пытаюсь их скрестить
в Function NRow добавил строку
 Call ColumnToRow(NRow)а в Sub ColumnToRow
изменил строчку на
    Range("B" & rowN).Selectпрописываю в ячейку =NRow() уже не работает. Пробовал и кучу др вариантов, помогите пожалуйста.

#4
"A" & i & ":С" & i исправил на "B" & i & ":D" & i  ячейки не заполняет все равно не заполняет, переданный аргумент не возвращает
#5
 Function ii(b As String)
Dim vData As Object

i = Application.ThisCell.Row
Range("A1:A3").Copy Destination:=Range("A" & i & ":С" & i)

vData = b

ii = vData
End Function

В Alt+F8 не отображается. прописал автовыполнение
Sub Workbook_Open()
ActiveWorkbook.UpdateLink (ActiveWorkbook.LinkSources(xlOLELinks))
End Sub
Ячейки A1:A3 заполнил, обращение к функции ii в ячейке прописал.
Подскажите пожалуйста
#6
Извиняюсь тему удалить не могу.
Проблема ушла после удаления строки с Application.Volatile.
Про которое ранее читал что при
 Application.Volatile False в начале и
 Application.Volatile True в конце скрипта
Скрипт должен выполняться быстрее и кушать меньше ресурсов
#7
Единственный макрос в файле
Function Get_Date(sWb As String)
    Application.Volatile True
    Dim vData, objCloseBook As Object
   
    Dim Path As String
    Path = ThisWorkbook.Path
    Path = (Path & "\")
   
    Path = (Path & sWb & ".csv")
   
    Set objCloseBook = GetObject(Path)
   
    vData = objCloseBook.Sheets(sWb).Range("A1").Value
   
    objCloseBook.Close False
    Set objCloseBook = Nothing
   
    Get_Date = vData
End Function
И вызывается 1 раз в А1, =Get_Date("101006668"), книга из одного листа все остальные ячейки пусты.
Свою функцию выполняет, но при включенном разрешении выполнения макросов и при нажатии сохранить:
1. При нажатии Сохранить .xlms файл вместо простого сохранения предлагает путь для сохранения как при нажатии "Сохранить как", далее в этом окне нажимаю "Сохранить" файл закрывается сам без сохранения и при следующем открытии предлагает файлы для восстановления как при некорректном завершении.
2. Но при нажатии Х (закрыть), файл сохраняется корректно.
3. При нажатии "Файл" -> "Закрыть" так же падает как и в 1 случае.

101006668.csv файл из 11 строк содержания
23;11;24;7;52;48;101006668;;;
1;28;0;0;D2;E8;0;1F;7A;-25.15
2;28;0;0;D2;E8;0;0B;B9;-17.30
3;28;0;0;D2;E8;0;13;8D;-8.20
...

Подскажите пожалуйста возможные варианты исправления.
#8
справку майкрософта смотрел но не понял, поиск по форуму и "Данные"-"Подключения"-"Добавить"файл источник не помогли.
Сейчас в ячейках =Get_Value_From_Close_Book("F:\1\101006657.csv";"101006657";"J3")
Пробую =Get_Value_From_Close_Book(".\101006657.csv";"101006657";"J3") - т.е. файл откуда читаем находиться в той же папке где и файл куда читаем, но не работает.
Подскажите пожалуйста, есть ли возможность исправить и как? Чтобы работал без изменения всех ссылок вручную при перемещении в др папки диски.
csv вложение в форме запрещен посему содержание 101006657.csv
21;11;24;11;03;49;101006657;
001;28;00;00;D2;E8;00;06;E1;-23.75;
002;28;00;00;D2;E8;00;09;77;-18.68;
003;28;00;00;D2;E8;00;15;06;-12.92;
004;28;00;00;D2;E8;00;10;1B;-7.81;
005;28;00;00;D2;E8;00;13;95;-3.50;
006;28;00;00;D2;E8;00;0A;41;-0.57;
007;28;00;00;D2;E8;00;31;D3;-0.15;
008;28;00;00;D2;E8;00;32;93;-0.36;
009;28;00;00;D2;E8;00;3B;31;-0.79;
010;28;00;00;D2;E8;00;3F;22;-1.14;
011;28;00;00;D2;E8;00;2F;B2;-1.50;
Яндекс.Метрика Рейтинг@Mail.ru