Помогите пжт разобраться с макросом Задача такая- область из листа экселя копируется и вставляется в новый документ ворд, Далее создается папка под именем (текущая дата), туда сохраняется документ ворд (с именем из value ячейки), после документ Word закрывается
Получилось вот что, но не работает- не сохраняет :( [vba]
А еще есть глюк с MkDir, - ошибка на эту строку (если папка уже существует) Как проверку сделать на директорию не совсем понимаю, только учусь.
Спасибо!!!
Помогите пжт разобраться с макросом Задача такая- область из листа экселя копируется и вставляется в новый документ ворд, Далее создается папка под именем (текущая дата), туда сохраняется документ ворд (с именем из value ячейки), после документ Word закрывается
Получилось вот что, но не работает- не сохраняет :( [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]
[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)
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]
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:
SaveAs2 такой метод наверное есть в линейчатых версиях офиса?! В 2003 нет!
у меня 2010 , а какой метод порекомендуете? Сохранение Ворда из Экселя возможно реализовать?? Этот код записан рекордером- почему не сохраняет никак не пойму
SaveAs2 такой метод наверное есть в линейчатых версиях офиса?! В 2003 нет!
у меня 2010 , а какой метод порекомендуете? Сохранение Ворда из Экселя возможно реализовать?? Этот код записан рекордером- почему не сохраняет никак не поймуВалерьянка
Сообщение отредактировал Валерьянка - Вторник, 04.03.2014, 11:13
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
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