I første omgang: Koden anbringes i det aktuelle ark - i VBA-projektet er der tilføjet en reference til Microsoft Word xx Object Library
I ovennævnte er det fulde filnavn anført i Kolonne A - eller skal koden tilføje "rtf"? Hvor skal sidetallet anføres?
Dim rtfFil, sti Sub aflæsDok() sti = ActiveWorkbook.Path If Right(sti, 1) <> "\" Then sti = sti + "\" End If
Set rtfFil = CreateObject("Word.Application") With rtfFil .Documents.Open sti + "dok.rtf" antalsider = .ActiveDocument.BuiltinDocumentProperties(wdPropertyPages) End With
rtfFil.Application.Quit Set rtfFil = Nothing End Sub
Rem Koden anbringes i det pågældende ark Rem RTF-filer forventes at være i samme mappe som XLS-filen Rem ======================================================= Dim rtfFil Sub aflæsDok() Dim sti, antalRæk, filnavn, antalSider sti = findSti antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
For ræk = 1 To antalRæk filnavn = CStr(Cells(ræk, 1)) antalSider = findAntalSider(sti + filnavn) Cells(ræk, 5) = antalSider Next ræk
MsgBox ("Gennemgang afsluttet") End Sub Private Function findAntalSider(fil) On Error GoTo fejl
Set rtfFil = CreateObject("Word.Application") With rtfFil .Documents.Open fil + ".rtf" findAntalSider = .ActiveDocument.BuiltinDocumentProperties(wdPropertyPages) End With
rtfFil.Application.Quit Set rtfFil = Nothing Exit Function
fejl: On Error Resume Next findAntalSider = 0 rtfFil.Application.Quit Set rtfFil = Nothing End Function Private Function findSti() findSti = ActiveWorkbook.Path If Right(findSti, 1) <> "\" Then findSti = findSti + "\" End If End Function
Jeg har netop afprøvet koden og den driller fortsat.
Den skriver 0 i alle felterne i kolonne E (de rækker hvor der er et filnavn i kolonne A). Det ser dermed ikke ud til at den finder et antal sider.
Når programmet har kørt skal man svarer på om man vil gemme ændringer i de filer den har åbnet - kan man ikke undgå at den åbner filerne så man ikke skal svarer på alle disse bokse?
-------------------- til andre ser den endelige kode sådanne ud --------------
Rem Koden anbringes i det pågældende ark Rem RTF-filer forventes at være i samme mappe som XLS-filen Rem ======================================================= Dim rtfFil Sub aflæsDok() Dim sti, antalRæk, filnavn, antalSider sti = findSti antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
For ræk = 1 To antalRæk filnavn = CStr(Cells(ræk, 1)) antalSider = findAntalSider(sti + filnavn) Cells(ræk, 5) = antalSider Next ræk
MsgBox ("Gennemgang afsluttet") End Sub Private Function findAntalSider(fil) On Error GoTo fejl
Set rtfFil = CreateObject("Word.Application") With rtfFil .Documents.Open fil + ".rtf"
Rem Sæt visning til "UdskriftsVisning" If .ActiveWindow.View.SplitSpecial = wdPaneNone Then .ActiveWindow.ActivePane.View.Type = wdPrintView Else .ActiveWindow.View.Type = wdPrintView End If
findAntalSider = .ActiveDocument.BuiltinDocumentProperties(wdPropertyPages) End With
rtfFil.ActiveDocument.Close rtfFil.Application.Quit Set rtfFil = Nothing Exit Function
fejl: On Error Resume Next findAntalSider = 0 rtfFil.Application.Quit Set rtfFil = Nothing End Function Private Function findSti() findSti = ActiveWorkbook.Path If Right(findSti, 1) <> "\" Then findSti = findSti + "\" End If End Function
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.