Мне было интересно, как я могу установить свойства файла?Я говорю о полях, авторе, компании и т. Д. Я нашел способ сделать это с помощью встроенных свойств Word.Но это немного глючит.Поэтому мне было интересно, возможно ли сделать это другими способами?
У меня есть этот код, который работает для всех файлов документов Word, кроме формата * .doc.Это код, который у меня есть, одно текстовое поле и одна кнопка.Кнопка запускает findDocLoop ()
Dim oWord As Word.Application
Dim oDoc As Word.Document
Dim oBuiltInProps As Object
Public Sub findDocLoop()
Dim strRootPath As String
strRootPath = txtBoxRootpath.Text
Dim di As New IO.DirectoryInfo(strRootPath)
Dim aryFi As IO.FileInfo() = di.GetFiles("*.doc")
Dim aryFi2 As IO.FileInfo() = di.GetFiles("*.dot")
Dim aryFi3 As IO.FileInfo() = di.GetFiles("*.doc*")
Dim fi As IO.FileInfo
For Each fi In aryFi
If Not fi.FullName.Contains("~$") Then
RunRenameProcess(txtBoxRootpath.Text & "\" & fi.ToString)
End If
Next
For Each fi In aryFi2
If Not fi.FullName.Contains("~$") Then
RunRenameProcess(txtBoxRootpath.Text & "\" & fi.ToString)
End If
Next
For Each fi In aryFi3
If Not fi.FullName.Contains("~$") Then
RunRenameProcess(txtBoxRootpath.Text & "\" & fi.ToString)
End If
Next
oDoc = Nothing
lblDone.Text = "Finished"
End Sub
Public Function FileInUse(ByVal sFile As String) As Boolean
Dim thisFileInUse As Boolean = False
If System.IO.File.Exists(sFile) Then
Try
Using f As New IO.FileStream(sFile, FileMode.Open, FileAccess.ReadWrite, FileShare.None)
thisFileInUse = False
End Using
Catch
thisFileInUse = True
writeToLog(sFile)
End Try
End If
Return thisFileInUse
End Function
Public Sub writeToLog(ByVal strFile As String)
Dim sContents As String
sContents = strFile & " - " & DateTime.Now.ToLongTimeString
SaveTextToFile(sContents, Directory.GetCurrentDirectory & "\errorlog.txt")
End Sub
Private Sub RunRenameProcess(ByVal strFile)
If FileInUse(strFile) = False Then
'Create instance of Word and make it visible
'On Error Resume Next
oDoc = oWord.Documents.Open(strFile)
'Get the properties collection in file
oBuiltInProps = oDoc.BuiltInDocumentProperties
'Set the value of the properties
oBuiltInProps.Item("Company").Value = txtBoxCompany.Text
' AT THIS POINT, THE PROPERTY IS ACTUALLY SET (IF I CHECK IN WORD)
oDoc.Save()
' AT THIS POINT, THE PROPERTY IS RESET TO THE DEFAULT WORD COMPANY VALUE(DOMAIN)
oDoc.Close()
End If
End Sub
Я знаю, что, вероятно, это можно сделать лучше, но я спешу.Я только заметил, когда я устанавливаю точку останова сразу после того, как код устанавливает значение свойства.Я установил Word для открытия, попал туда и проверил значение свойства.И это было на самом деле установлено!Но после фазы сохранения он, похоже, потерян.Или "сбросить" до некоторых значений по умолчанию Office.Какое название моей компании.