Excel VBA - открыть предыдущий сохраненный документ - PullRequest
0 голосов
/ 05 ноября 2018

Я действительно застрял на этом и не знаю, с чего начать. Все еще новичок в VBA.

Я получил код, который записывает значения текстовых полей из пользовательской формы в текстовый документ с использованием закладок. Этот документ затем сохраняется в C: \ documents после нажатия кнопки отправить.

По сути, я пытаюсь добиться использования другой кнопки на пользовательской форме, чтобы открыть этот сохраненный файл на основе одного из значений, которые я ввел ранее, и при необходимости изменить документ.

Возможно ли это вообще?

Спасибо.

Это то, что у меня работает, чтобы писать в слово doc от пользовательской формы, когда я нажимаю кнопку отправки. Но я добавил еще одну командную кнопку, чтобы вспомнить, что документ на основе значения текстового поля в примере пользовательской формы, значение пользовательской формы textbox1 равно 3. Поэтому, когда я нажимаю на кнопку редактирования команды, он вызывает документ, который имеет это значение в своем содержимом, т.е. bookmark1 = 3

        '----------The Script below writes values to the document ----------------------- 
     -----------------

    Dim wApp As Object
    Dim wDoc As Object

    'We need to continue through errors since if Word isn't
    'open the GetObject line will give an error

    On Error Resume Next
    Set wApp = GetObject(, "Word.Application")


'We've tried to get Word but if it's nothing then it isn't open
If wApp Is Nothing Then
    Set wApp = CreateObject("Word.Application")
End If

'It's good practice to reset error warnings
On Error GoTo 0

'Open your document and ensure its visible and activate after openning

Set wDoc = 
wApp.Documents.Open(Filename:="C:\Documents\template.docx ", 
ReadOnly:=False)
    With wDoc
    .Bookmarks("bookmark1").Range.Text = Me.TextBox1.Value
    .Bookmarks("bookmark2").Range.Text = Me.TextBox3.Value
    .Bookmarks("bookmark3").Range.Text = Me.TextBox4.Value
    .Bookmarks("bookmark4").Range.Text = Me.TextBox5.Value
    .Bookmarks("bookmark5").Range.Text = Me.TextBox6.Value
    .Bookmarks("bookmark6").Range.Text = Me.TextBox7.Value
    .Bookmarks("bookmark7").Range.Text = Me.TextBox8.Value
    End With

wApp.Visible = True

'set default file name and file path

ProposedFileName = Format(Now(), "DDMMMYYYY") &  
TextBox1.Value & "-" & TextBox2.Value & ".doc"
ProposedFilePath = "C:\Users\Documents\"

    With wApp.FileDialog(msoFileDialogSaveAs)
    wDoc.SaveAs2 ProposedFilePath & ProposedFileName, _
    FilterIndex = 1, _
    FileFormat:=wdFormatDocument

    End With   
End Sub

В другой пользовательской форме есть кнопка редактирования, при нажатии которой вызывается сохраненный документ из приведенного выше сценария. Может быть, что-то вроде ниже?

Sub EditButton_Cick()
Set wDoc = wApp.Documents.Open(Filename:="C:\Documents\SavedDoc.docx ", 
ReadOnly:=False) 'here is where I want to open the previous saved document located in C:\Documents from the script in my initial question however it should open the` doc referenced to textbox1.value
    With wDoc
    .Bookmarks("bookmark10").Range.Text = Me.TextBox10.Value 'In the userform, I add in another value later to the saved document

   objDoc.Save

End Sub

1 Ответ

0 голосов
/ 10 ноября 2018

Как это:

В верхней части обычного модуля кода:

Dim savePath As String '<< global variable for saved file path

В вашем первом пользовательском формате:

Sub cmdSave_Click()
    '...
    '...
    savePath = ProposedFilePath & ProposedFileName  '<< save to Global var

    wDoc.SaveAs2 ProposedFilePath & ProposedFileName, _
        FilterIndex = 1, _
        FileFormat:=wdFormatDocument
    '...
    '...
End Sub

В более поздней пользовательской форме:

Sub cmdReOpenFile_Click()

    Dim doc
    '...
    Set doc = wApp.Documents.Open(savePath) '<< read from global var
    '... work with doc

End Sub

К вашему сведению, вы используете позднюю привязку, поэтому вам нужно определить любые константы Word, такие как wdFormatDocument

Если вы поместите Option Explicit в верхней части своих модулей кода, он предупредит вас о подобных вещах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...