Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.51/57: Рейтинг темы: голосов - 57, средняя оценка - 4.51
30 / 8 / 0
Регистрация: 30.09.2011
Сообщений: 33
1

Открытие файла - запуск макроса и сохранение файла с новым именем

15.01.2012, 20:40. Показов 11256. Ответов 5
Метки нет (Все метки)

Пытаюсь сделать vba-программу для следующих действий:
1. открытие файла путем его выбора из окна windows;
2. запуск макроса для этого файла;
3. сохранение этого файла в указанную папку;

Пока получился такой код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub Кнопка1_Щелчок()
    Dim a, MySelectedFile
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        If .Show = -1 Then
            a = 1
            MySelectedFile = .SelectedItems(1)
        End If
    End With
    If a = 1 Then
        MsgBox MySelectedFile
        Application.Run "'Книга1.xls'!Лист2.Преобразование_КУ"
        Application.Run "'Книга1.xls'!Лист2.Преобразование_КУ_1"
        Application.Run "'Книга1.xls'!Лист2.Преобразование_КУ_2"
        Application.Run "'Книга1.xls'!Лист2.Удалениепустыхячеек_КУ"
        MySelectedFile.SaveAs Filename:= _
        "I:\ВТИ\Невинномысск\Тепловые испытания\Невинномысская ГРЭС_Архивы для построения НТД\17_11_11\OUT\File1.xls", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    End If
End Sub
Желательно, чтобы новый файл назывался аналогично открытом. Помогите пожалуйста!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2012, 20:40
Ответы с готовыми решениями:

Авто запуск макроса из личной книги при открытии файла с определенным именем
Привет, друзья! у меня есть много макросов в личной книге, как сделать что-бы при запуске файла...

Написать текстовый редактор, в котором продемонстрировать открытие файла, сохранение файла, создание нового файла
№ 5. Написать текстовый редактор, в котором продемонстрировать открытие файла, сохранение файла,...

Копия файла с новым именем
procedure TForm1.BitBtn1Click(Sender: TObject); begin if CopyFile('C:\test\test.xls',...

Добавление и перезапись файла с новым именем
Здравствуйте. Есть поля на странице: <input type='file' name='image' value='<?=$myrow;?>'>...

5
30 / 8 / 0
Регистрация: 30.09.2011
Сообщений: 33
18.01.2012, 14:25  [ТС] 2
Вот написал макрос по моему примеру он выполняет все что нужно с одним если. Если не выбрать никакого файла из диалогового окна он выдаст ошибку как можно избежать это?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Запуск()
Application.Dialogs(xlDialogOpen).Show "*.dbf"
               
       iFileName$ = ActiveWorkbook.name
       iPath$ = ActiveWorkbook.Path '''
       iPathSeparator$ = Application.PathSeparator '"\"
                
Workbooks(iFileName$).Worksheets(1).name = "Лист1"
MsgBox "Название книги " & iFileName$
Application.Run "'Преобразование файлов xls.xls'!Module1.Mac1"
Application.Run "'Преобразование файлов xls.xls'!Module1.Mac21"
 
Workbooks(iFileName$).Worksheets(1).Activate
Filename = Application.GetSaveAsFilename("Отчеты Excel (*.xls*)")
 If VarType(Filename) = vbBoolean Then Exit Sub
  
  ActiveWorkbook.Password = ""
       ActiveWorkbook.SaveAs Filename, FileFormat:=xlExcel8
       ActiveWorkbook.Close False
    End Sub
Замена Application.Dialogs(xlDialogOpen).Show "*.dbf" на
Visual Basic
1
2
3
4
5
6
7
8
9
FilesToOpen = Application.GetOpenFilename _
                  (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
                   MultiSelect:=True, Title:="Files to Merge")
       
       
If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        GoTo ExitHandler
                End If
не решает проблемы, т.к. макрос подразумевает работу с другой книгой (iFileName$)
0
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
18.01.2012, 14:32 3
Visual Basic
1
2
3
4
5
6
7
Sub Процедура1()
    With Application.FileDialog(msoFileDialogOpen)
        If .Show = 0 Then
            Exit Sub
        End If
    End With
End Sub
1
30 / 8 / 0
Регистрация: 30.09.2011
Сообщений: 33
18.01.2012, 14:38  [ТС] 4
Точнее не ошибку, а будет выполнять в исходном файле макрос. Мне нужно, чтобы при нажатии отмена в диалоговом окне открытия файла, либо при пустом поле в имени файла программа уходила в Sub end

Добавлено через 5 минут
Цитата Сообщение от Busine2012 Посмотреть сообщение
Visual Basic
1
2
3
4
5
6
7
Sub Процедура1()
    With Application.FileDialog(msoFileDialogOpen)
        If .Show = 0 Then
            Exit Sub
        End If
    End With
End Sub
При выполнении этого макроса дальнейшее выполнение программы происходит уже в исходном файле, а мне необходимо, чтобы программа дальше выполняла действия в файле который я хочу открыть(
0
Эксперт WindowsАвтор FAQ
17783 / 7519 / 888
Регистрация: 25.12.2011
Сообщений: 11,287
Записей в блоге: 16
19.01.2012, 05:21 5
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Запуск()
Application.Dialogs(xlDialogOpen).Show "*.dbf"
 
    ifilename$ = ActiveWorkbook.Name
    If ThisWorkbook.Name = ifilename$ Then Exit Sub
    
Workbooks(ifilename$).Worksheets(1).Name = "Лист1"
MsgBox "Название книги " & ifilename$
 
Application.Run "'Преобразование файлов xls.xls'!Module1.Mac1"
Application.Run "'Преобразование файлов xls.xls'!Module1.Mac21"
 
Filename = Application.GetSaveAsFilename("Отчеты Excel.xls", "Excel files (*.xl*),*.xl*", 1, "Custom Dialog Title")
If Filename <> "False" Then
    ActiveWorkbook.SaveAs Filename
End If
 
ActiveWorkbook.Close False
 
End Sub
Чтобы макрос "Преобразование файлов" работал с активной (отрывшейся в результате выбора в диалоговом окне) книгой, нужно в том макросе все конструкции, работающие с ячейками, заменить на ActiveWorkbook.
0
30 / 8 / 0
Регистрация: 30.09.2011
Сообщений: 33
19.01.2012, 11:31  [ТС] 6
У меня все конструкции были изменены изначально на ActiveWorkbook. Была проблема с неверным выбором ActiveWorkbook. Сейчас все получилось. Спасибо Вам и Busine2012 с решением этой проблемы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2012, 11:31

Сохранение файла Word с именем, взятым из данных самого файла
Добрый день! Очень нужна помощь! Есть файл, который формируется автоматически при помощи макросов...

Сохранение файла под именем открытого ранее файла
Как правильно реализовать &quot;сохранить&quot;.&quot;Сохранить как &quot; сделано: void...

Сохранение и открытие файла и занесение текста файла в ListBox
Здравствуйте! Вот никак не могу понять, прочитал уже столько тем на форуме, на...

Открытие файла с помощью макроса
Здраствуйте, подскажите пожалуйста как можна открыть вордовский файл из по Екселя. Макрос ищет в...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru