MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Access para word em pasta especifica

    Compartilhe
    avatar
    toyebom
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1071
    Registrado : 18/07/2012

    [Resolvido]Access para word em pasta especifica

    Mensagem  toyebom em Seg 6 Ago - 18:26

    Boas, já efectuei várias pesquisas mão não encontrei o que queria.
    Gerar um word.doc e guardá-lo automaticamente numa pasta especifica. Nem sempre é a mesma pasta e ás vezes a pasta não existe pelo que tem que se criar(aqui está o problema).

    Para pdf já consegui o problema é que necessito para word vistoque tenho um modelo pré definido.

    Em pdf utilizo:

    Código:
    Private Sub Comando851_Click()
    Dim strArquivo As String
    Dim strLocal As String
    Dim fso As Object
    Dim strDocumento As String
    Dim numCop As Integer
    Select Case MsgBox("DESEJA CRIAR PDF?", vbInformation + vbYesNoCancel, [CodBarra])
    Case vbYes
    'DoCmd.Save
    DoCmd.OpenReport "Despacho_4", acViewPreview, , "[CódigoDoProduto] = " & [CódigoDoProduto]
    DoCmd.Maximize
    strLocal = CurrentProject.Path & "\Inquéritos\" & Replace(Replace(Me!CodBarra, "/", "_"), ".", "-") & "\"
    strDocumento = "Despacho_4"
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.folderexists(strLocal) Then ' verifica se ja existe a pasta e subpasta
    DoCmd.OutputTo acOutputReport, strDocumento, acFormatPDF, strLocal & strDocumento & " " & Replace(Me!CodBarra, "/", "_") & " _ " & Me![CódigoDoProduto] & ".pdf", False
    Else
    MkDir strLocal ' se nao existir cria
    DoCmd.OutputTo acOutputReport, strDocumento, acFormatPDF, strLocal & strDocumento & " " & Replace(Me!CodBarra, "/", "_") & " _ " & Me![CódigoDoProduto] & ".pdf", False
    End If
        numCop = InputBox("Informe a quantidade de cópias: ", "IMPRIMIR") 'Valor este que pode ser obtido por outro meios
        DoCmd.PrintOut acPrintAll, , , acHigh, numCop 'Linha simplificada para a impressão
    DoCmd.Close
    Case vbNo
    DoCmd.OpenReport "Despacho_4", acViewPreview, , "[CódigoDoProduto] = " & [CódigoDoProduto]
    DoCmd.Maximize
        numCop = InputBox("Informe a quantidade de cópias: ", "IMPRIMIR") 'Valor este que pode ser obtido por outro meios
        DoCmd.PrintOut acPrintAll, , , acHigh, numCop 'Linha simplificada para a impressão
    DoCmd.Close
    Case vbCancel
    End Select
    End Sub

    Em word utilizo:

    Código:
    Private Sub Comando906_Click()
    Dim wdApl As Object
    Set wdApl = CreateObject("Word.Application")
    wdApl.Documents.Open FileName:=CurrentProject.Path & "\FormuláriosAuto\Despacho.doc"
    With wdApl
    .ActiveDocument.Bookmarks("Texto2").Select: .Selection.text = Nz(Forms![Termo recebimento inq].Rótulo615) 'Processo
    .ActiveDocument.Bookmarks("Texto3").Select: .Selection.text = Nz(Forms![Termo recebimento inq].Texto741 & " " & Forms![Termo recebimento inq].Texto743 & " " & Forms![Termo recebimento inq].Texto744) 'Processo
    .ActiveDocument.Bookmarks("Texto9").Select: .Selection.text = Nz(Forms![Termo recebimento inq].Texto741 & " " & Forms![Termo recebimento inq].Texto743 & " " & Forms![Termo recebimento inq].Texto744) 'Processo
    .ActiveDocument.Bookmarks("Texto6").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[Caixa de combinação305])
    .ActiveDocument.Bookmarks("Texto10").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[Caixa de combinação304])
    .ActiveDocument.Bookmarks("Texto5").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[Caixa de combinação669])
    .ActiveDocument.Bookmarks("Texto13").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[Caixa de combinação665])
    .ActiveDocument.Bookmarks("Texto8").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[Texto18])
    .ActiveDocument.Bookmarks("Texto4").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[CP])
    .ActiveDocument.Bookmarks("Texto11").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[postocp])
    .ActiveDocument.Bookmarks("Texto12").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[CaixaCombinação907])
    .ActiveDocument.SaveAs CurrentProject.Path & "\Inquéritos\" & Nz(Replace(Me!Rótulo615, "/", "_")) & " - Distribuição" & ".doc"
    .ActiveDocument.Close
    .Quit
    End With
    Set wdApl = Nothing
    MsgBox "''Distribuição'' gerado em Word com sucesso na pasta ''Inquéritos''.", vbInformation, "Aviso"
    Me.Comando909.Visible = True
    End Sub

    mas queria adaptar o código que tenho para criar o pdf na parte:

    Código:
    strLocal = CurrentProject.Path & "\Inquéritos\" & Replace(Replace(Me!CodBarra, "/", "_"), ".", "-") & "\"
    strDocumento = "Despacho_4"

    ou seja

    .ActiveDocument.SaveAs CurrentProject.Path & "\Inquéritos\" & Nz(Replace(Me!Rótulo615, "/", "_")) & " - Distribuição" & ".doc"
    e
    DoCmd.OutputTo acOutputReport, strDocumento, acFormatPDF, strLocal & strDocumento & " " & Replace(Me!CodBarra, "/", "_") & " _ " & Me![CódigoDoProduto] & ".pdf", False
    Else
    MkDir strLocal ' se nao existir cria
    DoCmd.OutputTo acOutputReport, strDocumento, acFormatPDF, strLocal & strDocumento & " " & Replace(Me!CodBarra, "/", "_") & " _ " & Me![CódigoDoProduto] & ".pdf", False

    visto que apenas quero gerar o word não utilizo a função print


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.
    avatar
    toyebom
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1071
    Registrado : 18/07/2012

    Access para word em pasta especifica

    Mensagem  toyebom em Seg 6 Ago - 18:33

    Melhor explicando:

    Abre um .doc, preenche e guarda na pasta que é criada com um dado de um campo, por exemplo no campo NIF(com o dado por exemplo 123A) cria a pasta CurrentProject.Path & "\Inquéritos\123A e dentro dessa pasta guarda o doc. com o nome Despacho.


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.
    avatar
    toyebom
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1071
    Registrado : 18/07/2012

    Access para word em pasta especifica

    Mensagem  toyebom em Seg 6 Ago - 19:12

    Ok após tentar consegui sozinho. Ficou:

    Código:
    Private Sub Comando906_Click()
    Dim wdApl As Object
    Set wdApl = CreateObject("Word.Application")
    wdApl.Documents.Open FileName:=CurrentProject.Path & "\FormuláriosAuto\Despacho.doc"
    With wdApl
    .ActiveDocument.Bookmarks("Texto2").Select: .Selection.text = Nz(Forms![Termo recebimento inq].Rótulo615) 'Processo
    .ActiveDocument.Bookmarks("Texto3").Select: .Selection.text = Nz(Forms![Termo recebimento inq].Texto741 & " " & Forms![Termo recebimento inq].Texto743 & " " & Forms![Termo recebimento inq].Texto744) 'Processo
    .ActiveDocument.Bookmarks("Texto9").Select: .Selection.text = Nz(Forms![Termo recebimento inq].Texto741 & " " & Forms![Termo recebimento inq].Texto743 & " " & Forms![Termo recebimento inq].Texto744) 'Processo
    .ActiveDocument.Bookmarks("Texto6").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[Caixa de combinação305])
    .ActiveDocument.Bookmarks("Texto10").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[Caixa de combinação304])
    .ActiveDocument.Bookmarks("Texto5").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[Caixa de combinação669])
    .ActiveDocument.Bookmarks("Texto13").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[Caixa de combinação665])
    .ActiveDocument.Bookmarks("Texto8").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[Texto18])
    .ActiveDocument.Bookmarks("Texto4").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[CP])
    .ActiveDocument.Bookmarks("Texto11").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[postocp])
    .ActiveDocument.Bookmarks("Texto12").Select: .Selection.text = Nz(Forms![Termo recebimento inq].[CaixaCombinação907])
    Dim fso As Object
    Dim strLocal As String
    Dim strDocumento As String
    strLocal = CurrentProject.Path & "\Inquéritos\" & Replace(Replace(Me!CodBarra, "/", "_"), ".", "-") & "\"
    strDocumento = "Despacho"
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.folderexists(strLocal) Then ' verifica se ja existe a pasta e subpasta
    .ActiveDocument.SaveAs strLocal & strDocumento & " " & Replace(Me!CodBarra, "/", "_") & " _ " & " - Distribuição" & ".doc", False
    Else
    MkDir strLocal ' se nao existir cria
    .ActiveDocument.SaveAs strLocal & strDocumento & " " & Replace(Me!CodBarra, "/", "_") & " _ " & " - Distribuição" & ".doc", False
    End If
    .ActiveDocument.Close
    .Quit
    End With
    Set wdApl = Nothing
    MsgBox "''Distribuição'' gerado em Word com sucesso na pasta" & " " & Replace(Me!CodBarra, "/", "_") & " ", vbInformation, "Aviso"
    Me.Comando909.Visible = True
    End Sub


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.

      Data/hora atual: Qui 13 Dez - 13:23