1

Тема: Сохранение Word-файла с именем из текста

Уважаемые эксперты, ситуация такая.. Есть программа, в ней хранятся документы. Я экспортирую оттуда документ в Word. Задача: задать ему имя(номер, указанный в документе) и сохранить в отдельную папку (хотя можно и в мои документы). Помогите ПЛЗ.. Буду признателен..

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

По всей видимости нужен макрос, который потом надо будет добавить кнопкой на панель, если не так то поправьте..

Post's attachments

dbnsdbnsb.doc 137.5 Кб, 21 скачиваний с 2012-07-09 

You don't have the permssions to download the attachments of this post.

2

Re: Сохранение Word-файла с именем из текста

Вот самый простой макрос. Выделяете номер документа, жмете на созданную Вами на панели инструментов, будет произведен запрос папки сохранения и и сохранение ативного документа в указанную папку с выделенным номером
Public Sub Test()
Dim FD As FileDialog
Dim FName As String
Dim Path As String
    FName = Trim(Selection.Text)
        Set FD = Application.FileDialog(msoFileDialogFolderPicker)
            With FD
                .AllowMultiSelect = False
                .Title = "Сохранение документа " & FName
                .ButtonName = "Сохранить"
            End With
            FD.Show
            Path = FD.SelectedItems(1) & "\" & FName & ".doc"
            ActiveDocument.SaveAs2 Path
End Sub

3

Re: Сохранение Word-файла с именем из текста

Спасибо за ответ. При использовании макроса(нажатие кнопки), предлагает сохранить на рабочий стол. Нельзя ли как то исправить, чтобы Word предлагал сохранить в папку "документы"? Либо в какую либо другую папку, созданную на рабочем столе? Иначе рабочий стол быстро заполнится..

4

Re: Сохранение Word-файла с именем из текста

Так в открывшемся меню, выберете папку которую вам нужно

5

Re: Сохранение Word-файла с именем из текста

aap77 пишет:

Так в открывшемся меню, выберете папку которую вам нужно

Объем большой, поэтому если это можно сделать макросом, то пожалуйста скажите как..

6

Re: Сохранение Word-файла с именем из текста

Noodle пишет:
aap77 пишет:

Так в открывшемся меню, выберете папку которую вам нужно

Объем большой, поэтому если это можно сделать макросом, то пожалуйста скажите как..

Каждый раз выбирать папку, если документов больше тысячи, да и еще есть возможность промахнуться мимо нужной папки, что тоже может исказить желаемый результат..

7

Re: Сохранение Word-файла с именем из текста

Public Sub Test()
Dim FD As String
Dim FName As String
Dim Path As String
    FName = Trim(Selection.Text)
       FD = [здесь указывается папка сохранения]
            Path = FD & "\" & FName & ".doc"
            ActiveDocument.SaveAs2 Path
End Sub
Где выделено жирным указывается путь папки сохранения и автоматически туда будут сохраняться документы

8

Re: Сохранение Word-файла с именем из текста

aap77 пишет:

Public Sub Test()
Dim FD As String
Dim FName As String
Dim Path As String
    FName = Trim(Selection.Text)
       FD = [здесь указывается папка сохранения]
            Path = FD & "\" & FName & ".doc"
            ActiveDocument.SaveAs2 Path
End Sub
Где выделено жирным указывается путь папки сохранения и автоматически туда будут сохраняться документы

в каком формате указывать? Напрмер мне нужно на рабочи стол в папку "1". ТАкой путь будет правильным? C:\Users\user\Desktop\1

9

Re: Сохранение Word-файла с именем из текста

Уже разобрался с форматом пути к папке.. Я написал правильно.. Спасибо большое за все, aap77!!

10

Re: Сохранение Word-файла с именем из текста

Но если все таки можно сделать, чтобы макрос сам находил имя, под которым ему надо будет сохраниться - было бы великолепно.. параметрами для поиска можно взять "G00", например. Если появятся мыли как это реализовать - напишите здесь..

11

Re: Сохранение Word-файла с именем из текста

Да мысли в принципе есть, надо их проверить на других файлах, чтобы убедиться что по Вордовским понятиям они составлены одинаково

12

Re: Сохранение Word-файла с именем из текста

aap77 пишет:

Да мысли в принципе есть, надо их проверить на других файлах, чтобы убедиться что по Вордовским понятиям они составлены одинаково

Этот файл размножить и поменять номер накладной. Другие файлы идут, почти всегда, по возрастанию..

13

Re: Сохранение Word-файла с именем из текста

Опять же хотелось бы уточнить диапазон букв например от A-Z и максимальное количество которое встречается

14

Re: Сохранение Word-файла с именем из текста

aap77 пишет:

Опять же хотелось бы уточнить диапазон букв например от A-Z и максимальное количество которое встречается

Буква не меняется.. меняются только цифры.. в данный момент диапазон цифр дошел до G0010921, и с каждой накладной, номер соответственно увеличивается на единицу.

15

Re: Сохранение Word-файла с именем из текста

Noodle пишет:
aap77 пишет:

Опять же хотелось бы уточнить диапазон букв например от A-Z и максимальное количество которое встречается

Буква не меняется.. меняются только цифры.. в данный момент диапазон цифр дошел до G0010921, и с каждой накладной, номер соответственно увеличивается на единицу.

Опять же, не всегда, на единицу.. бывает и на 2 и на 3 единицы..

16

Re: Сохранение Word-файла с именем из текста

Вот предварительный макрос в котором вы выбираете файлы которые надо пересохранить, выбираете папку куда сохранить, цикл автоматически открывает файлы, ищет в них комбинацию G00 и последущее число неразрывных чисел, сохранят в указанную папку и закрывает документ

Public Sub SaveMyDocument()
Dim FD1 As FileDialog, FD2 As FileDialog
Dim FName As String, Fold As String, i As Long, Doc As Document
Dim Shp As Shape
    Set FD1 = Application.FileDialog(msoFileDialogFilePicker)
        With FD1
            .AllowMultiSelect = True
            .ButtonName = "Пересохранить"
            With .Filters
                .Clear
                .Add "Все файлы", "*.*"
                .Add "Файлы Word", "*.doc, *.docx"
             End With
             .Title = "Пересохранение файлов"
        End With
    FD1.Show
    Set FD2 = Application.FileDialog(msoFileDialogFolderPicker)
        With FD2
        .ButtonName = "Выбрать"
        .Title = "Выбор папки сохранения"
        End With
    FD2.Show
        Fold = FD2.SelectedItems(1)
        If FD1.SelectedItems.Count = 0 Then Exit Sub
            For i = 1 To FD1.SelectedItems.Count
                Set Doc = Documents.Open(FD1.SelectedItems(i))
                    For Each Shp In Doc.Shapes
                        Shp.Select
                        If Shp.Type = msoTextBox Then
                             Selection.Find.ClearFormatting
                            Selection.Find.Replacement.ClearFormatting
                                With Selection.Find
                                    .Text = "G00([0-9]{1;})"
                                    .Replacement.Text = ""
                                    .Forward = True
                                    .Wrap = wdFindContinue
                                    .MatchWildcards = True
                                    .Execute
                                        If .Found = True Then
                                            Doc.SaveAs2 = Fold & "\" & Selection.Text & "*.doc"
                                            Doc.Close
                                            Exit For
                                        End If
                                End With
                            End If
                    Next Shp
        Next i
End Sub

17

Re: Сохранение Word-файла с именем из текста

aap77 пишет:

Вот предварительный макрос в котором вы выбираете файлы которые надо пересохранить, выбираете папку куда сохранить, цикл автоматически открывает файлы, ищет в них комбинацию G00 и последущее число неразрывных чисел, сохранят в указанную папку и закрывает документ

Спасибо за ваше рвение помочь. Но увы это не много не то, что мне нужно.. Я экспортирую файлы из программы в word, по одному. Экспортируются они с одинаковым именем "xxx.doc", и предварительно сохраняются в папке Temp, под тем же именем(xxx.doc). При экспорте следующего документа в Word (имя опять же xxx.doc), предыдущий удаляется и на его место сохраняется только что экспортированный документ. Поэтому смысл должен быть таков: Я вручную экспортирую документ из программы - применяю макрос - макрос должен найти номер накладной (например по параметру "G00") - потом макрос сохраняет этот файл в папку( указанную мной в макросе(напр. "C:\Users\user\Desktop\1")), с именем, которое будет идентичным номеру накладной.

18

Re: Сохранение Word-файла с именем из текста

aap77 пишет:

Public Sub Test()
Dim FD As String
Dim FName As String
Dim Path As String
    FName = Trim(Selection.Text)
       FD = [здесь указывается папка сохранения]
            Path = FD & "\" & FName & ".doc"
            ActiveDocument.SaveAs2 Path
End Sub
Где выделено жирным указывается путь папки сохранения и автоматически туда будут сохраняться документы

Этот макрос работает, его надо только чуток доработать, добавив в него поиск и выделение номера накладной, по тому же параметру "G00". И я думаю все будет работать, если это выполнимо конечно.. Заранее спасибо.

19

Re: Сохранение Word-файла с именем из текста

Попробуйте так

Public Sub Test()
Dim FD As String
Dim FName As String
Dim Path As String
Dim Shp As Shape
   Set Doc = ActiveDocument
         FD = [здесь указывается папка сохранения]
                    For Each Shp In Doc.Shapes
                        Shp.Select
                        If Shp.Type = msoTextBox Then
                             Selection.Find.ClearFormatting
                             Selection.Find.Replacement.ClearFormatting
                                With Selection.Find
                                    .Text = "G00([0-9]{1;})"
                                    .Replacement.Text = ""
                                    .Forward = True
                                    .Wrap = wdFindContinue
                                    .MatchWildcards = True
                                    .Execute
                                        If .Found = True Then
                                            FName = Selection
                                            Path = FD & "\" & FName & ".doc"
                                            Doc.SaveAs2 Path
                                            Doc.Close
                                            Exit Sub
                                        End If
                                End With
                            End If
                  Next Shp
End Sub

Отредактировано aap77 (11.07.2012 09:49:24)

20

Re: Сохранение Word-файла с именем из текста

aap77 пишет:

Попробуйте так

Спасибо преогромнейшее. Несказанно рад, но макрос выдает ошибку:

Compile error:

For without Next

Скрин прикладываю.

Post's attachments

ScreenShot.JPG 60.92 Кб, 1 скачиваний с 2012-07-11 

You don't have the permssions to download the attachments of this post.

21

Re: Сохранение Word-файла с именем из текста

Перед End Sub надо поставить Next Shp

22

Re: Сохранение Word-файла с именем из текста

aap77 пишет:

Перед End Sub надо поставить Next Shp

"Ошибка команды"

При нажатии кнопки "Debug", выскакивает окно Visual Basic с выделенной строкой :

Doc.SaveAs2 Path

Скрин прикладываю.

Post's attachments

Screen.JPG 53.93 Кб, 1 скачиваний с 2012-07-11 

You don't have the permssions to download the attachments of this post.

23

Re: Сохранение Word-файла с именем из текста

Команду закрытия документа после сохранения - желательно..

24

Re: Сохранение Word-файла с именем из текста

Теперь должно работать

Public Sub Test()
Dim FD As String
Dim FName As String
Dim Path As String
Dim Shp As Shape
   Set Doc = ActiveDocument
         FD = [здесь указывается папка сохранения]
                    For Each Shp In Doc.Shapes
                        Shp.Select
                        If Shp.Type = msoTextBox Then
                             Selection.Find.ClearFormatting
                             Selection.Find.Replacement.ClearFormatting
                                With Selection.Find
                                    .Text = "G00([0-9]{1;})"
                                    .Replacement.Text = ""
                                    .Forward = True
                                    .Wrap = wdFindContinue
                                    .MatchWildcards = True
                                    .Execute
                                        If .Found = True Then
                                            FName = Selection
                                            Path = FD & "\" & FName & ".doc"
                                            Doc.SaveAs2 Path
                                            Doc.Close
                                            Exit Sub
                                        End If
                                End With
                            End If
                  Next Shp
End Sub

25

Re: Сохранение Word-файла с именем из текста

Ох спасибо вам огромное!! Заработало! не перевелись еще добрые люди в этом проклятом мире.. Спасибо Вам еще раз!

26

Re: Сохранение Word-файла с именем из текста

Всегда пожалуйста!

27

Re: Сохранение Word-файла с именем из текста

А есть продолжение?

Как работает этот поиск?

.Text = "G00 ([0-9]{1;})"

Или как сделать поиск по №, чтобы он включал все цифры после символа '№' в будущее имя файла.

28

Re: Сохранение Word-файла с именем из текста

aap77 пишет:

Public Sub Test()
Dim FD As String
Dim FName As String
Dim Path As String
    FName = Trim(Selection.Text)
       FD = [здесь указывается папка сохранения]
            Path = FD & "\" & FName & ".doc"
            ActiveDocument.SaveAs2 Path
End Sub
Где выделено жирным указывается путь папки сохранения и автоматически туда будут сохраняться документы

Если я правильно понял, это макрос сохранения файла с именем из текста и в определённую папку?
Скопировал этот макрос, в редакторе кода в Normal дважды ЛКМ на ThisDocument, в (General) вставил код, ввёл путь к папке в двойных кавычках, сохранил документ. Открываю новый документ, ввожу текст, запускаю макрос - не работает. Выдаёт сообщение см. приложенный файл. Что я не правильно делаю или сделал?

Post's attachments

Скрин.jpg 33.52 Кб, файл не был скачан. 

You don't have the permssions to download the attachments of this post.