USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Word x VB
tirmi
não registrado
ENUNCIADA !
Postada em 01/09/2005 15:28 hs   
Caro forum,
Tenho um arquivo do word que preciso abrir e selecionar apenas uma
determinada página, por exemplo a página 3 e gravar em um arquivo texto.
Se alguém tiver a solução agradeço.
   
Mr.Data
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 01/09/2005 18:24 hs            
Olá tirmi. Vamos lá. Algumas considerações antes de mais nada:
 
1) O código podia estar melhor. Mas foi feito em sua maior essência de cabeça e faz um tempinho que eu não mexia com o Word. Dúvidas, dê uma pesquisada no MSDN.
 
2) Vá em seu menu Project - References e adicione a referência a Microsoft Word x.0 Object Library, onde x é seu Word (para o do Office 2000 por exemplo, é o 9).
 
3) Cole a função abaixo em um módulo e a chame assim:
 
Call SaveRangeWordToTextFile("C:\Dir\SeuArquivo.doc", "C:\Dir\Arquivodesaida.txt", 3)
 
Public Sub SaveRangeWordToTextFile(strFileSource As String, strFileTarget As String, lngPageToExtract As Long)
   
    Dim wdApp As New Word.Application
    Dim wdDoc As Word.Document
    Dim wdDoc1 As Word.Document
    Dim wdDocs As Word.Documents
   
    Dim wdRange As Word.Range
    Dim wdRange1 As Word.Range
    Dim wdRange2 As Word.Range
   
    'Descomente a linha de baixo se vc quiser ver a Aplicação Word trabalhando
    'wdApp.Visible = True
    'Suprime qualquer mensagem
    wdApp.DisplayAlerts = wdAlertsNone
    'Abre seu arquivo origem
    Set wdDoc = wdApp.Documents.Open(strFileSource)
    'Seleciona a página no 1o. range, e o final da página no 2o. Range. Com isso, cria o 3o., contendo todo
    'o conteúdo requisitado ...
    Set wdRange = wdDoc.GoTo(wdGoToPage, wdGoToAbsolute, lngPageToExtract)
    Set wdRange1 = wdDoc.GoTo(wdGoToPage, wdGoToAbsolute, (lngPageToExtract + 1))
    Set wdRange2 = wdDoc.Range(wdRange.Start, (wdRange1.Start - 1))
    'Seleciona e copia o texto
    wdRange2.Select
    wdRange2.Copy
    'Joga em um novo documento
    wdApp.Documents.Add.Content.Paste
    'Seta a variável Document para ele
    Set wdDoc1 = wdApp.Documents(wdApp.Documents.Count - 1)
    'Ativa ele
    wdDoc1.Activate
    'Salva ele como arquivo texto
    wdDoc1.SaveAs strFileTarget, wdFormatTextLineBreaks
    'Fecha todos os documentos
    For Each wdDocs In wdApp.Documents
        wdDocs.Close
    Next
    'Sai
    wdApp.Quit
   
    'Avisa que terminou
    MsgBox "Ok"
   
    'Descarrega as variáveis
    Set wdApp = Nothing
    Set wdDoc = Nothing
    Set wdDoc1 = Nothing
    Set wdDocs = Nothing
    Set wdRange = Nothing
    Set wdRange1 = Nothing
    Set wdRange2 = Nothing
  
End Sub
 
4) Lembra-se que eu disse que ela pode ser melhorada? Pois bem, tabelas que passam de uma página nem sempre são salvas corretamente, ou melhor, são até demais (ele salva até o fim da tabela). O mesmo parece se aplicar a índices contínuos feitos de tópicos e sub-tópicos.
 
5) Espero que isso te ajude, então se der certo, ou melhorar ela, poste por aqui para sabermos. Emoções
 

[ ]'s

-----------------------------------------------------------------------------------------------------------------

Emoções Juliano Lopes - Coordenador de Projetos / Arquiteto de Software Emoções

TÓPICO EDITADO
 
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página