2015-11-03 1 views
-1

У меня есть немного слова vba code, чтобы упростить мой рабочий процесс. Частью этого является безопасный файл шаблона для определенного местоположения файла в глубине структуры подпапки.vba word wdDialogFileSaveAs не сохраняет

Function saveFile(fileType As String) 
    Dim strFileName As String 
    Dim StrPath As String 
    Dim instance As WdSaveFormat 
    Dim format As String 

    'provide a file type 
    format = fileType 

    'provide default filename 
    docname = ActiveDocument.Tables(1).cell(2, 1).Range.Text 
    saveName = Left(docname, Len(docname) - 2) 

    'provide a path 
    projectnumber = ActiveDocument.Tables(1).cell(11, 3).Range.Text 
    projectnum = Left(projectnumber, Len(projectnumber) - 2) 
    projecttop = Left(projectnumber, Len(projectnumber) - 4) 
    pathFull = "H:\Projecten\P0" & projecttop & "00 - P0" & projecttop & "99\P0" & projectnum & "\2 - Bedrijfsbureau\2.Berekeningen\2.2 Berekeningen voorlopig\" 

    'provide a revision 
    If ActiveDocument.Tables(2).cell(2, 2).Range.Text = Chr(13) & Chr(7) Then 
     MsgBox ("Er is niets ingevult?") 
    ElseIf ActiveDocument.Tables(2).cell(3, 2).Range.Text = Chr(13) & Chr(7) Then 
     revLet = "" 
    ElseIf ActiveDocument.Tables(2).cell(4, 2).Range.Text = Chr(13) & Chr(7) Then 
     revLet = "_A" 
    ElseIf ActiveDocument.Tables(2).cell(5, 2).Range.Text = Chr(13) & Chr(7) Then 
     revLet = "_B" 
    ElseIf ActiveDocument.Tables(2).cell(6, 2).Range.Text = Chr(13) & Chr(7) Then 
     revLet = "_C" 
    Else 
     revLet = "_D" 
    End If 

    'concat path 
    StrPath = pathFull & saveName & revLet 

    With Dialogs(wdDialogFileSaveAs) 
     .Name = StrPath 
     .format = format 
     If .Display <> 0 Then 
      strFileName = .Name 
     Else 
      strFileName = "User Cancelled" 
     End If 
    End With 
End Function 

and calling the funcion 

    Private Sub CommandButton19_Click() 
    'wdFormatXMLDocument => docx wdFormatDocument => doc wdFormatPDF => pdf 
    Call saveFile(wdFormatXMLDocumentMacroEnabled) 
End Sub 

Private Sub CommandButton20_Click() 
    'wdFormatXMLDocument => docx wdFormatDocument => doc wdFormatPDF => pdf 
    Call saveFile(wdFormatPDF) 
End Sub 

ФПВ один сохраняет файл, как ожидалось, но слово один не ... Я пробовал некоторые различные опции и вручную с помощью Сохранить как подсказка ошибки ... что-то с совместимостью.

ответ

0

Я действительно удивлен тем, что с сохранением PDF-файлов ... Вы используете .Display, чтобы предоставить диалоговое окно пользователю. Экран НЕ ВЫПОЛНИЛ действие диалогового окна, выбранное пользователем: если он нажмет кнопку «Сохранить», эта команда не будет выполнена. Дисплей отображает только диалоговое окно, и пользовательские действия изменят состояние диалогового окна. Состояние можно прочитать после факта, и ваш собственный код должен будет сделать экономию.

Если вы хотите диалоговое окно, чтобы сделать то, что пользователь выбирает вам нужно использовать метод .Show: Если .Show Тогда ...

+0

Синди, спасибо, что работа! это немного странная конструкция, но я добираюсь туда. – user2815681

+0

Да, функциональность диалоговых окон Word восходит к старым дням WordBasic, около 20 лет назад. Так что они определенно странные звери! –