BUSCA DE ARQUIVO WORD
Bom dia a todos
Estou com um problema e não estou encontrando solução, estou desenvolvendo um sistema em que o usuário conforme pesquisa abra um arquivo word, ocorre que o resultado da pesquisa fornece parte do nome do arquivo word. Para abrir um arquivo word eu uso a seguinte função:
Dim word As New Word.Application
Dim docWord As New Word.Application
Dim docDoc As Word.Document = docWord.Documents.Open([Ô]C:\ControleCartorio\Textos\[Ô] & Res_Matricula.Text & [Ô].doc[Ô])
Ocorre que eu preciso abrir o arquivo usando um coringa, ou seja, quando procuramos um arquivo pelo explorer e sabemos parte d nome colocamos *parte do nome*.doc, eu preciso fazer isso por código. O nome do arquivo por exemplo é ficha 01 mat 5.161.doc, mas eu só tenho o numero da matricula que é 5.161, açguem sabe como posso montar a string?
Me ajudem por favor, é URGENTE!
Edilson Barros
Estou com um problema e não estou encontrando solução, estou desenvolvendo um sistema em que o usuário conforme pesquisa abra um arquivo word, ocorre que o resultado da pesquisa fornece parte do nome do arquivo word. Para abrir um arquivo word eu uso a seguinte função:
Dim word As New Word.Application
Dim docWord As New Word.Application
Dim docDoc As Word.Document = docWord.Documents.Open([Ô]C:\ControleCartorio\Textos\[Ô] & Res_Matricula.Text & [Ô].doc[Ô])
Ocorre que eu preciso abrir o arquivo usando um coringa, ou seja, quando procuramos um arquivo pelo explorer e sabemos parte d nome colocamos *parte do nome*.doc, eu preciso fazer isso por código. O nome do arquivo por exemplo é ficha 01 mat 5.161.doc, mas eu só tenho o numero da matricula que é 5.161, açguem sabe como posso montar a string?
Me ajudem por favor, é URGENTE!
Edilson Barros
Você está usando Net, assim, a Linq é uma opção interessante. Assim vou passar um exemplo bem básico.
Ainda, suponho que você estamos falando de Winforms, ok? Mas mesmo que seja WPF, é pouco o que se altera, não se preocupe.
Em um novo formulário, inclua um DataGridView ([Ô]grdArquivos[Ô]), um TextBox ([Ô]txtFiltro[Ô]) e um item de menu ([Ô]mnuPasta[Ô]).
Dê a sua ajeitada pessoal nos componentes, como ficar melhor para você. Em seguida, cole o código abaixo:
Com isso, se estiver funcionando como espero, resta customizar, por exemplo, para usar instâncias controladas do Word como faz hoje e o que mais for necessário, ou usar a idéia em seu formulário atual.
Ainda, suponho que você estamos falando de Winforms, ok? Mas mesmo que seja WPF, é pouco o que se altera, não se preocupe.
Em um novo formulário, inclua um DataGridView ([Ô]grdArquivos[Ô]), um TextBox ([Ô]txtFiltro[Ô]) e um item de menu ([Ô]mnuPasta[Ô]).
Dê a sua ajeitada pessoal nos componentes, como ficar melhor para você. Em seguida, cole o código abaixo:
[ô][ô][ô]
<Serializable()>
Private Class Arquivo [ô] Este é um [Ô]ViewModel[Ô] bem básico, uma classe apenas para manter os dados que se deseja visualizar.
Public Property Nome As String
Public Property Pasta As String
Public Sub New()
End Sub
End Class
[ô]Estas são variáveis de suporte.
Private tipo As String = [Ô]*.doc;*.rtf;*.docx[Ô] [ô] Extensões que normalmente estão associadas ao MS-Word.
Private mPasta As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) [ô] Pasta do desktop do usuário atual.
Private bff As FolderBrowserDialog [ô] Para selecionar pastas.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.bff = New FolderBrowserDialog
With Me.bff
.Description = [Ô]Selecione a pasta:[Ô]
.ShowNewFolderButton = False
End With
Me.grdArquivos.AutoGenerateColumns = False
FillGrid()
End Sub
Private Sub mnuPasta_Click(sender As Object, e As EventArgs) Handles mnuPasta.Click
With bff
If .ShowDialog() = System.Windows.Forms.DialogResult.OK Then
Me.mPasta = .SelectedPath
FillGrid()
End If
End With
End Sub
Private Sub FillGrid()
Dim lista As IList = Nothing
Dim pasta As New IO.DirectoryInfo(Me.mPasta)
Dim filtro As String = Me.txtFiltro.Text.Trim.ToLower
lista = (From o As IO.FileInfo
In pasta.GetFiles([Ô]*.doc[Ô])
Where (o.Name.IndexOf(filtro, System.StringComparison.InvariantCultureIgnoreCase) <> -1) Or (filtro.Length = 0)
Order By o.Name
Select New Arquivo With {.Nome = o.Name,
.Pasta = o.FullName}).AsEnumerable.ToList
Me.grdArquivos.DataSource = lista
End Sub
Private Sub grdArquivos_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles grdArquivos.CellContentClick
Dim grd = DirectCast(sender, DataGridView)
If (TypeOf grd.Columns(e.ColumnIndex) Is DataGridViewButtonColumn) AndAlso
(e.RowIndex >= 0) Then
Dim aa As Arquivo = DirectCast(grd.Rows(e.RowIndex).DataBoundItem, Arquivo)
If aa IsNot Nothing Then Process.Start(aa.Pasta)
End If
End Sub
Private Sub txtFiltro_KeyDown(sender As Object, e As KeyEventArgs) Handles txtFiltro.KeyDown
If e.KeyCode = Keys.Enter Or e.KeyCode = Keys.Return Then FillGrid()
End Sub
[ô][ô][ô]
Com isso, se estiver funcionando como espero, resta customizar, por exemplo, para usar instâncias controladas do Word como faz hoje e o que mais for necessário, ou usar a idéia em seu formulário atual.
Faça seu login para responder