Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Экспорт Excel → Word - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Экспорт Excel → Word (Макросы Sub)
Экспорт Excel → Word
Валерьянка Дата: Вторник, 04.03.2014, 09:36 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Помогите пжт разобраться с макросом
Задача такая- область из листа экселя копируется и вставляется в новый документ ворд,
Далее создается папка под именем (текущая дата), туда сохраняется документ ворд (с именем из value ячейки), после документ Word закрывается

Получилось вот что, но не работает- не сохраняет :( :(
[vba]
Код

Sub SaveSSP1()

Dim PathForFile As String
Dim NameWRD As String

NameWRD = Sheets(1).Range("C22").Value & ".docx"
PathForFile$ = ThisWorkbook.Path & "\" & Date & "\": MkDir PathForFile$

Sheets(7).Range("A1:E26").Copy
Set AppWord = CreateObject("Word.Application")
AppWord.Visible = True
AppWord.Documents.Add.Range.PasteExcelTable False, False, False

ChangeFileOpenDirectory = PathForFile$
ActiveDocument.SaveAs2 Filename:=NameWRD, FileFormat:=wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False, CompatibilityMode:=14
ActiveDocument.Close

End Sub
[/vba]

А еще есть глюк с MkDir, - ошибка на эту строку (если папка уже существует)
Как проверку сделать на директорию не совсем понимаю, только учусь.

Спасибо!!!


Сообщение отредактировал Валерьянка - Вторник, 04.03.2014, 09:47
 
Ответить
СообщениеПомогите пжт разобраться с макросом
Задача такая- область из листа экселя копируется и вставляется в новый документ ворд,
Далее создается папка под именем (текущая дата), туда сохраняется документ ворд (с именем из value ячейки), после документ Word закрывается

Получилось вот что, но не работает- не сохраняет :( :(
[vba]
Код

Sub SaveSSP1()

Dim PathForFile As String
Dim NameWRD As String

NameWRD = Sheets(1).Range("C22").Value & ".docx"
PathForFile$ = ThisWorkbook.Path & "\" & Date & "\": MkDir PathForFile$

Sheets(7).Range("A1:E26").Copy
Set AppWord = CreateObject("Word.Application")
AppWord.Visible = True
AppWord.Documents.Add.Range.PasteExcelTable False, False, False

ChangeFileOpenDirectory = PathForFile$
ActiveDocument.SaveAs2 Filename:=NameWRD, FileFormat:=wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False, CompatibilityMode:=14
ActiveDocument.Close

End Sub
[/vba]

А еще есть глюк с MkDir, - ошибка на эту строку (если папка уже существует)
Как проверку сделать на директорию не совсем понимаю, только учусь.

Спасибо!!!

Автор - Валерьянка
Дата добавления - 04.03.2014 в 09:36
alex77755 Дата: Вторник, 04.03.2014, 10:10 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

[vba]
Код
Sub MakeDir(dirname As String) 'функция проверки-создания
Dim i As Long, path As String
Do '
     i = InStr(i + 1, dirname & "\", "\")
     path = Left$(dirname, i - 1)
     If Right$(path, 1) <> ":" And Dir$(path, vbDirectory) = "" Then
         MkDir path
        MsgBox "Была создана необходимая для работы папка", 64, dirname
     End If
Loop Until i >= Len(dirname)

End Sub
[/vba]


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
Сообщение[vba]
Код
Sub MakeDir(dirname As String) 'функция проверки-создания
Dim i As Long, path As String
Do '
     i = InStr(i + 1, dirname & "\", "\")
     path = Left$(dirname, i - 1)
     If Right$(path, 1) <> ":" And Dir$(path, vbDirectory) = "" Then
         MkDir path
        MsgBox "Была создана необходимая для работы папка", 64, dirname
     End If
Loop Until i >= Len(dirname)

End Sub
[/vba]

Автор - alex77755
Дата добавления - 04.03.2014 в 10:10
alex77755 Дата: Вторник, 04.03.2014, 10:13 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

SaveAs2 такой метод наверное есть в линейчатых версиях офиса?!
В 2003 нет!


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеSaveAs2 такой метод наверное есть в линейчатых версиях офиса?!
В 2003 нет!

Автор - alex77755
Дата добавления - 04.03.2014 в 10:13
Валерьянка Дата: Вторник, 04.03.2014, 10:42 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
alex77755, почему-то при использовании Вашей функции выходит ошибка 75

Вот это для проверки директории вроде работает, но как мне еще не совсем понятно
[vba]
Код

On Error Resume Next
PathForFile$ = ThisWorkbook.path & "\" & Date & "\": MkDir PathForFile$
If Err.Number <> 75 And Err.Number <> 0 Then GoTo Ext
Err.Clear
On Error GoTo Ext
Randomize
On Error Resume Next
Kill PathForFile$
Err.Clear
On Error GoTo Ext
Open PathForFile$ For Output As #1
Print #1, tempstr
Close #1
Exit Sub
Ext:
[/vba]


Сообщение отредактировал Валерьянка - Вторник, 04.03.2014, 10:43
 
Ответить
Сообщениеalex77755, почему-то при использовании Вашей функции выходит ошибка 75

Вот это для проверки директории вроде работает, но как мне еще не совсем понятно
[vba]
Код

On Error Resume Next
PathForFile$ = ThisWorkbook.path & "\" & Date & "\": MkDir PathForFile$
If Err.Number <> 75 And Err.Number <> 0 Then GoTo Ext
Err.Clear
On Error GoTo Ext
Randomize
On Error Resume Next
Kill PathForFile$
Err.Clear
On Error GoTo Ext
Open PathForFile$ For Output As #1
Print #1, tempstr
Close #1
Exit Sub
Ext:
[/vba]

Автор - Валерьянка
Дата добавления - 04.03.2014 в 10:42
Валерьянка Дата: Вторник, 04.03.2014, 10:46 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
alex77755,
SaveAs2 такой метод наверное есть в линейчатых версиях офиса?!
В 2003 нет!

у меня 2010 , а какой метод порекомендуете? Сохранение Ворда из Экселя возможно реализовать??
Этот код записан рекордером- почему не сохраняет никак не пойму


Сообщение отредактировал Валерьянка - Вторник, 04.03.2014, 11:13
 
Ответить
Сообщениеalex77755,
SaveAs2 такой метод наверное есть в линейчатых версиях офиса?!
В 2003 нет!

у меня 2010 , а какой метод порекомендуете? Сохранение Ворда из Экселя возможно реализовать??
Этот код записан рекордером- почему не сохраняет никак не пойму

Автор - Валерьянка
Дата добавления - 04.03.2014 в 10:46
doober Дата: Вторник, 04.03.2014, 16:26 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Проверено.Код рабочий
[vba]
Код
Sub SaveSSP1()

     Dim PathForFile As String
     Dim NameWRD As String
     NameWRD = Sheets(1).Range("C22").Value & ".docx"
     PathForFile$ = ThisWorkbook.Path & "\" & Date & "\"
     Set FSO = CreateObject("Scripting.FileSystemObject")

     If Not FSO.FolderExists(PathForFile$) Then
         FSO.CreateFolder (PathForFile$)    '

     End If
     Set FSO = Nothing
     Sheets(7).Range("A1:E26").Copy
     Set AppWord = CreateObject("Word.Application")
     AppWord.Visible = True
     AppWord.Documents.Add.Range.PasteExcelTable False, False, False
     AppWord.ActiveDocument.SaveAs2 PathForFile$ & "\" & NameWRD, _
                    12, False, "", True, "", False, False, False, False, False, 14
     AppWord.ActiveDocument.Close

End Sub
[/vba]


 
Ответить
СообщениеПроверено.Код рабочий
[vba]
Код
Sub SaveSSP1()

     Dim PathForFile As String
     Dim NameWRD As String
     NameWRD = Sheets(1).Range("C22").Value & ".docx"
     PathForFile$ = ThisWorkbook.Path & "\" & Date & "\"
     Set FSO = CreateObject("Scripting.FileSystemObject")

     If Not FSO.FolderExists(PathForFile$) Then
         FSO.CreateFolder (PathForFile$)    '

     End If
     Set FSO = Nothing
     Sheets(7).Range("A1:E26").Copy
     Set AppWord = CreateObject("Word.Application")
     AppWord.Visible = True
     AppWord.Documents.Add.Range.PasteExcelTable False, False, False
     AppWord.ActiveDocument.SaveAs2 PathForFile$ & "\" & NameWRD, _
                    12, False, "", True, "", False, False, False, False, False, 14
     AppWord.ActiveDocument.Close

End Sub
[/vba]

Автор - doober
Дата добавления - 04.03.2014 в 16:26
Валерьянка Дата: Вторник, 04.03.2014, 17:58 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
doober, АБАЛДЕТЬ)))
Всё отлично работает!!! hands
Огромное спасибо!!! :D
 
Ответить
Сообщениеdoober, АБАЛДЕТЬ)))
Всё отлично работает!!! hands
Огромное спасибо!!! :D

Автор - Валерьянка
Дата добавления - 04.03.2014 в 17:58
alex77755 Дата: Вторник, 04.03.2014, 20:44 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Валерьянка,
Не могу помочь: у меня 2003. В 2010 другие методы.
Той функцией я пользуюсь. В 2003 работает


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеВалерьянка,
Не могу помочь: у меня 2003. В 2010 другие методы.
Той функцией я пользуюсь. В 2003 работает

Автор - alex77755
Дата добавления - 04.03.2014 в 20:44
RAN Дата: Вторник, 04.03.2014, 22:40 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Мне приглянулось.
Рекомендую.
http://excelvba.ru/code/MkDir


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеМне приглянулось.
Рекомендую.
http://excelvba.ru/code/MkDir

Автор - RAN
Дата добавления - 04.03.2014 в 22:40
Валерьянка Дата: Пятница, 07.03.2014, 17:46 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
RAN, alex77755, Спасибо большое за отзывчивость :D
 
Ответить
СообщениеRAN, alex77755, Спасибо большое за отзывчивость :D

Автор - Валерьянка
Дата добавления - 07.03.2014 в 17:46
Валерьянка Дата: Пятница, 07.03.2014, 17:48 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
doober, после создания файлов остаются пустые окна Word, подскажите, пжт, как этого можно избежать?


Сообщение отредактировал Валерьянка - Пятница, 07.03.2014, 18:04
 
Ответить
Сообщениеdoober, после создания файлов остаются пустые окна Word, подскажите, пжт, как этого можно избежать?

Автор - Валерьянка
Дата добавления - 07.03.2014 в 17:48
Валерьянка Дата: Пятница, 07.03.2014, 17:57 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
doober, все в порядке, ответ найден
[vba]
Код

Sub KillAllWord()
     Dim o As Object
     On Error GoTo GetObjectError
     Do While True
         Set o = GetObject(, "Word.Application")
         o.Quit
         Set o = Nothing
     Loop
NoMoreWord:
     On Error GoTo 0

     Exit Sub
      
GetObjectError:
     Debug.Print Err.Description
     Resume NoMoreWord
End Sub
[/vba]
 
Ответить
Сообщениеdoober, все в порядке, ответ найден
[vba]
Код

Sub KillAllWord()
     Dim o As Object
     On Error GoTo GetObjectError
     Do While True
         Set o = GetObject(, "Word.Application")
         o.Quit
         Set o = Nothing
     Loop
NoMoreWord:
     On Error GoTo 0

     Exit Sub
      
GetObjectError:
     Debug.Print Err.Description
     Resume NoMoreWord
End Sub
[/vba]

Автор - Валерьянка
Дата добавления - 07.03.2014 в 17:57
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Экспорт Excel → Word (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!