Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 26.03.2016
Сообщений: 42
1

Прикрепления файлов

26.03.2016, 15:06. Показов 1903. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно создать базу с полями
- дата в формате ГГГГ-ММ-ДД (не знаю как сделать маску ввода)
- номер отдела
- фамилия
- краткая информация
- прикрепить файл служебной записки в формате pdf
с 4 колонками проблем не возникло, была создана форма которая вводит данные ( но пока не реализована маска для вводы даты)
Возникли проблемы с написание кода для добавления ссылки на файл, было найдено вот такое решение
Visual Basic
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
Sub ShowFileDialog()
    Dim oFD As FileDialog
    Dim x, lf As Long
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD 'используем короткое обращение к объекту
    'так же можно без oFD
    'With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Title = "Выбрать файлы отчетов" 'заголовок окна диалога
        .ButtonName = "Выбрать файлы Excel или текстовые файлы"
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Excel files", "*.xls*;*.xla*", 1 'устанавливаем возможность выбора только файлов Excel
        .Filters.Add "Text files", "*.txt", 2 'добавляем возможность выбора текстовых файлов
        .Filters.Add "pdf", "*.pdf", 3 'добавляем возможность выбора текстовых файлов
        .FilterIndex = 3 'устанавливаем тип файлов по умолчанию - Text files(Текстовые файлы)
        .InitialFileName = "C:\Temp\Книга1.xlsx" 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)
        If .Show = 0 Then Exit Sub 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        For lf = 1 To .SelectedItems.Count
            x = .SelectedItems(lf) 'считываем полный путь к файлу
            'Workbooks.Open x 'открытие книги
            'можно также без х
            'Workbooks.Open .SelectedItems(lf)
            Cells(lf + 8, 1).Value = .SelectedItems(lf)
        Next
    End With
    MsgBox "Пути с именами файлов записаны, начиная с ячейки A9", vbInformation, "www.excel-vba.ru"
End Sub
оно очень изящно, но оно немного не соответствует, не могу сделать что бы к каждой записи была возможность прикрепить файл, если файл не прикрепен, то не давало возможности добавить эту запись.
После того как будет получена ссылка на файл в ячейку при каждой записи, нужно сформировать имя нового файла из колонок в таком виде дата+номер отдлеа+фамилия+ краткое описание и скопировать файл по ссылке в определнную папку с новым именем. Буду очень рада любой информации, которая подтолкнет к решению, пролистывала весь интренет не нашло похожего...
Так же прикреплю файл с моей формой (она немного не моя, но была переделана под то что мне нужно)
Возможно решение будет другим. Но суть моей проблемы в том, что нужно сканировать документы и присваивать им нужные имена и помещать в папку, видела тут темы как переименовывать файлы, но не подходит потому что когда фал открыт его не нельзя переименовать. Как то так...
Вложения
Тип файла: xls post_13502.xls (42.0 Кб, 4 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2016, 15:06
Ответы с готовыми решениями:

Скрипт обратной связи с возможностью прикрепления фотографии
Поручили мне сделать сайт на html, сайт вроде сделал, но требуется скрипт для обратной связи,...

форма обратной связи с функцией прикрепления фаила
Вот с такой задачей не могу справиться: Требуется сделать кнопку "Прикрепить фаил" в стандартной...

Создание универсального метода выборки из БД и прикрепления в качестве источника данных к комбобоксу
Подскажите пожалуйста! Я в DataSet ResultData гружу данные из БД. А затем выбираю их в массив,...

После прикрепления к письму текстовый файл оказывается занят каким-то процессом
Всем привет! Помогите, пожалуйста, решить проблему. Делаю следующее. По нажатию кнопки программно...

2
0 / 0 / 0
Регистрация: 26.03.2016
Сообщений: 42
26.03.2016, 22:22  [ТС] 2
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Copy_File()
    Dim objFSO As Object, objFile As Object
    Dim sFileName As String, sNewFileName As String
    sPathNew$ = [b3]
    sFileName = [f2] 'ссылка на отсканированный документ
    sNewFileName = sPathNew & [e2] & ".xls"   'новое имя + новый путь
    If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "ошибка": Exit Sub
    
    '???????? ????
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.GetFile(sFileName)
    objFile.Copy sNewFileName
 
    MsgBox "Все ок", vbInformation, "www.excel-vba.ru"
End Sub
Вот так копирую и называю по новой файл

Добавлено через 6 минут
не могу только одно сделать
Visual Basic
1
Cells(lf + 8, 1).Value = .SelectedItems(lf)
вот это записывает путь до файла в ячейку, а мне еще нужно записывать путь ну или хотя бы имя файла в TextBox1
Visual Basic
1
пишу еще TextBox1).Value = .SelectedItems(lf)
но это не работает, помогите пожалуйста и все будет решено
дальше я просто каждый раз буду очищать список и вновь переименовывать и копировать
Visual Basic
1
2
3
Sub ОчисткаСписка()
   Worksheets("Лист1").Range("A2:E2" & Range("A65536").End(xlUp).Row).ClearContents
End Sub
вот такая логика
0
0 / 0 / 0
Регистрация: 26.03.2016
Сообщений: 42
27.03.2016, 11:04  [ТС] 3
Visual Basic
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Sub ShowFileDialog11()
    Dim oFD As FileDialog
    Dim x, lf As Long
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD 'используем короткое обращение к объекту
    'так же можно без oFD
    'With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Title = "Выбрать файлы отчетов" 'заголовок окна диалога
        .ButtonName = "Выбрать файлы Excel или текстовые файлы"
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Excel files", "*.xls*;*.xla*", 1 'устанавливаем возможность выбора только файлов Excel
        .Filters.Add "Text files", "*.txt", 2 'добавляем возможность выбора текстовых файлов
        .FilterIndex = 2 'устанавливаем тип файлов по умолчанию - Text files(Текстовые файлы)
        .InitialFileName = "C:\Temp\Книга1.xlsx" 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)
        If .Show = 0 Then Exit Sub 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        For lf = 1 To .SelectedItems.Count
            x = .SelectedItems(lf) 'считываем полный путь к файлу
            'Workbooks.Open x 'открытие книги
            'можно также без х
            'Workbooks.Open .SelectedItems(lf)
            Cells(lf + 1, 6).Value = .SelectedItems(lf)
           
        Next
    End With
    MsgBox "Все прошло нормально", vbInformation, "www.excel-vba.ru"
End Sub
Sub Copy_File()
    Dim objFSO As Object, objFile As Object
    Dim sFileName As String, sNewFileName As String
    sPathNew$ = [H1]
    sFileName = [f2] 'ссылка на отсканированный документ
    sName = [a2] & ". " & [b2] & ". " & [c2] & ". " & [d2]
    sNewFileName = sPathNew & sName & ".xls"  'новое имя + новый путь
    ActiveSheet.Hyperlinks.Add Range("a" & Rows.Count).End(xlUp), sNewFileName, "", _
                                   "Просмотреть файл" & vbNewLine
    If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "ошибка": Exit Sub
    Cells(2, 5).Value = sNewFileName
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.GetFile(sFileName)
    objFile.Copy sNewFileName
 
    MsgBox "Все ок", vbInformation, "www.excel-vba.ru"
End Sub
Sub mCopyData()
Dim mRng As Range
    Set mRng = Worksheets("Лист1").Range("A2:D2")
    If Application.CountA(mRng) = 0 Then
        MsgBox "Empty!!!"
        Exit Sub
            Else
                mRng.Copy Sheets("Лист2"). _
                        Cells(Rows.Count, 1) _
                                .End(xlUp).Offset(1, 0)
    End If
End Sub
Sub ОчисткаСписка()
   Worksheets("Лист1").Range("A2:F2" & Range("A65536").End(xlUp).Row).ClearContents
End Sub
Вот что вышло поправьте, если будут у ког мысли как сделать лучше
но алгоритм такой добавляем файл, вносим данные, делаем новое имя, копируем в другую директорию с новым именем, записываем на новый лист с гиперсылкой и стираем данные из ячеек! Как то так....
Вложения
Тип файла: xls 777.xls (87.5 Кб, 9 просмотров)
0
27.03.2016, 11:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.03.2016, 11:04
Помогаю со студенческими работами здесь

Gmail "У вас нет прав на прикрепления этого файла" при попытке программно добавить файл к письму
Почтовик gmail пишет "У вас нет прав на прикрепления этого файла" при попытке программно добавить...

Проверка существования файлов, создание файлов и вывод содержимого файлов на принтер
Создать BAT-файл который поддерживает создание файлов проверку их и вывод на принтер. Как это...

Написать программу, которая обеспечивает:начальное формирование каталога файлов;вывод каталога файлов;удаление файлов...
Уважаемые хакеры!Прошу вашей помощи!Я в СИ не особо шарю.((( А на днях уже сдавать.Очень...

Открытие неизвестных файлов, например файлов ресурсов игры для распаковки
Хочу научиться писать программы для открытия неизвестных файлов. например, вышла какая-нибудь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru