Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Word-ChangeFileOpenDirectory Добавлено: 12.09.04 12:02  

Автор вопроса:  Дмитрий С. | Web-сайт: www.sdapage.narod.ru | ICQ: 315-160-504 
Делаю макрос, который должен при закрытии документа сохранять копию в указанную папку. Застопорился вот на чем. Когда создаётся новый документ,а затем изменяется, то при закрытии его без предварительного сохранения вылетает сообщение об сохранении. А если я его перед закрытием сохранил в макросе, то сообщения не будет, документ просто закроется, и пользователь не поймет где документ (хотя я то знаю). Сделал ActiveDocument.Saved = False. Диалог о сохранении вылетает, но диалог выбора имени и места сохранения файла не вылетает. То есть он сохраняется опять по моему пути. Как вызвать диалог сохранения файла?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #1
Добавлено: 12.09.04 22:20
Используй API, в модуле:
Option Explicit

Public Enum EOpenFile
    OFN_ALLOWMULTISELECT = &H200
    OFN_CREATEPROMPT = &H2000
    OFN_ENABLEHOOK = &H20
    OFN_ENABLETEMPLATE = &H40
    OFN_ENABLETEMPLATEHANDLE = &H80
    OFN_EXPLORER = &H80000
    OFN_EXTENSIONDIFFERENT = &H400
    OFN_FILEMUSTEXIST = &H1000
    OFN_HIDEREADONLY = &H4
    OFN_LONGNAMES = &H200000
    OFN_NOCHANGEDIR = &H8
    OFN_NODEREFERENCELINKS = &H100000
    OFN_NOLONGNAMES = &H40000
    OFN_NONETWORKBUTTON = &H20000
    OFN_NOREADONLYRETURN = &H8000
    OFN_NOTESTFILECREATE = &H10000
    OFN_NOVALIDATE = &H100
    OFN_OVERWRITEPROMPT = &H2
    OFN_PATHMUSTEXIST = &H800
    OFN_READONLY = &H1
    OFN_SHAREAWARE = &H4000
    OFN_SHOWHELP = &H10
End Enum

Public Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type

Public Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long
'-----------------------------------------------
В месте, где надо вызвать диалог сохранения:
Private Sub cmdShowOpen()
    ;Dim OFN As OPENFILENAME
    With OFN
        .lStructSize = Len(OFN)
        .hInstance = App.hInstance
        .lpstrFilter = "Файлы Excel (*.xls)" & vbNullChar & "*.xls" & String$(2, 0)
        .nFilterIndex = 1
        .lpstrFile = String$(255, 0)
        .nMaxFile = 255
        .lpstrFileTitle = String$(255, 0)
        .nMaxFileTitle = 255
        .lpstrInitialDir = App.Path
        .lpstrTitle = "Сохранение отчета"
        .flags = OFN_EXPLORER
    End With
    If GetSaveFileName(OFN) <> 0 Then
        'Делаешь здесь сохранение, OFN.lpstrFile
        '- это полный путь и имя файла
        MsgBox OFN.lpstrFile
    End If
End Sub

Ответить

Номер ответа: 2
Автор ответа:
 Stas2k



Вопросов: 6
Ответов: 16
 Профиль | | #2 Добавлено: 13.09.04 05:37
Попробуй следующее:
dlgAnswer = Dialogs(wdDialogFileSaveAs).Show
Если dlgAnswer = -1, то пользователь сохранил файл, и сам будет знать где,
Если dlgAnswer = 0, то пользователь либо закрыл диалог, либо нажал Отмена.

Ответить

Номер ответа: 3
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #3
Добавлено: 13.09.04 13:00
Если этот документ не был ранее открыт, т.е. он был создан "с нуля" и ещё не сохранялся, то просто вызови

ActiveDocument.Save

Я не проверял, не по идее обязательно должно сработать.

Ответить

Номер ответа: 4
Автор ответа:
 Дмитрий С.



ICQ: 315-160-504 

Вопросов: 5
Ответов: 7
 Web-сайт: www.sdapage.narod.ru
 Профиль | | #4
Добавлено: 13.09.04 14:06
Всем спасибо,все варианты подходят.
Поэксперементирую...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам