powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с макросом для Excel
8 сообщений из 8, страница 1 из 1
Помогите пожалуйста с макросом для Excel
    #33563953
zergik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста решить такую задачу:
Есть текстовый файл в котором хранится такая информация:

№ 35/98 // номер заказа
10.01.06 // дата оформления заказа
1500 // цена заказа
20% // скидка
1200 // цена со скидкой
+ другие данные

Именем файла является номер заказа, т.е. 35-98.txt
Тепер эти данные нужно передать в таблицу Excel. Сам процес мне представляется так: Я ввожу в ячейку номер заказа --> Запускаю макрос, который берет информацию с файла в соответствии с введенным номером и записывает в ячейки (находящиеся в одной строке с номером заказа) информацию из файла.
Или сделать какую-то формочку на которой есть например ComboBox со списком имен файлов (хранящихся в опр. папке), и после выбора файла данные занеслись в соотв. ячейки.
В VB я не силен (так что если это возможно, то поподробнее).
Заранее благодарен всем откликнувшимся!!!
...
Рейтинг: 0 / 0
Помогите пожалуйста с макросом для Excel
    #33565108
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помести этот код в модуль листа
текстовые файлы должны находится в той же папки что и этот файл
при вводе в ячейку "A1" имени файла например: "35-85.txt"
данные занесутся на лист начиная с ячейки "А3"

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ImpRng As Range
    Dim Filename As String
    Dim r As Long
    Dim c As Integer
    Dim txt As String
    Dim Char As String *  1 
    Dim Impt
    If Target.Address <> "$A$1" Then Exit Sub ' проверка ввода данных в "А1"
    Set ImpRng = ActiveSheet.Cells( 3 ,  1 ) 'ячейка откуда начнут вставлятся данные
    Filename = Left(ThisWorkbook.fullname, Len(ThisWorkbook.fullname) - Len(ThisWorkbook.name)) & _
        cells( 1 , 1 ).value 'путь к текущему файлу + имя файла из ячейки "А1"
    If Dir(Filename, vbNormal) = "" Then 'проверка существования файла
        MsgBox "Фаил " & cells( 1 , 1 ).value & " был удалён или перемещён.", vbCritical
        Exit Sub
    End If
    r =  0 
    c =  0 
    txt = ""
    Open Filename For Input As # 1  'открытие файла
        Do Until EOF( 1 )
            Line Input # 1 , Impt 'считывание строки
            For i =  1  To Len(Impt)
                Char = Mid(Impt, i,  1 )
                If Char = "," Then 'разделитель между значениями
                    ImpRng.Offset(r, c) = txt 'вставка данных
                    c = c +  1 
                    txt = ""
                ElseIf i = Len(Impt) Then 'проверка конца строки
                    If Char <> Chr( 34 ) Then txt = txt & Char
                    ImpRng.Offset(r, c) = txt 'вставка данных
                    txt = ""
                ElseIf Char <> Chr( 34 ) Then
                    txt = txt & Char
                End If
            Next i
            c =  0 
            r = r +  1 
        Loop
    Close # 1 
End Sub
...
Рейтинг: 0 / 0
Помогите пожалуйста с макросом для Excel
    #33565851
Посмотри.
...
Рейтинг: 0 / 0
Помогите пожалуйста с макросом для Excel
    #33566856
zergik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо!!!.
И еще один вопросик по макросу. Можно ли сделать так, чтоб например в ячейку 1.2 ввел номер заказа - в ячейках 1.2...1.3... и т.д. появились данные.
Потом в ячейку 2.1 ввел номер заказа, вызвал макрос и уже в ячейках 2.2...2.3... и т.д. появились данные. (т.е. добавлять заказы в таблицу.)
...
Рейтинг: 0 / 0
Помогите пожалуйста с макросом для Excel
    #33567060
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ImpRng As Range
Dim Filename As String
Dim r As Long
Dim c As Integer
Dim txt As String
Dim Char As String * 1
Dim Impt
If Target.Address <> "$A$1" Then Exit Sub ' проверка ввода данных в "А1"
Set ImpRng = ActiveSheet.Cells(3, Target.Column) 'ячейка откуда начнут вставлятся данные
Filename = Left(ThisWorkbook.fullname, Len(ThisWorkbook.fullname) - Len(ThisWorkbook.name)) & _
cells(1,1).value 'путь к текущему файлу + имя файла из ячейки "А1"
If Dir(Filename, vbNormal) = "" Then 'проверка существования файла
MsgBox "Фаил " & cells(1,1).value & " был удалён или перемещён.", vbCritical
Exit Sub
End If
r = 0
c = 0
txt = ""
Open Filename For Input As #1 'открытие файла
Do Until EOF(1)
Line Input #1, Impt 'считывание строки
For i = 1 To Len(Impt)
Char = Mid(Impt, i, 1)
If Char = "," Then 'разделитель между значениями
ImpRng.Offset(r, c) = txt 'вставка данных
c = c + 1
txt = ""
ElseIf i = Len(Impt) Then 'проверка конца строки
If Char <> Chr(34) Then txt = txt & Char
ImpRng.Offset(r, c) = txt 'вставка данных
txt = ""
ElseIf Char <> Chr(34) Then
txt = txt & Char
End If
Next i
c = 0
r = r + 1
Loop
Close #1
End Sub
...
Рейтинг: 0 / 0
Помогите пожалуйста с макросом для Excel
    #33567905
zergik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще такой вопрос:
Как определить номер строки в которой выделена ячейка, какой метод за это отвечает?
...
Рейтинг: 0 / 0
Помогите пожалуйста с макросом для Excel
    #33568107
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
MsgBox ActiveCell.Row
...
Рейтинг: 0 / 0
Помогите пожалуйста с макросом для Excel
    #33568117
Дмит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ActiveCell.Row
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с макросом для Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]