Avatar billede Slettet bruger
03. oktober 2004 - 15:09 Der er 9 kommentarer og
1 løsning

Køre en macro på et dokument fra en genvej..

Er der nogle eksperten i denne kategori som har idéer til/erfarring med http://www.eksperten.dk/spm/545858 ?
Avatar billede jkrons Professor
04. oktober 2004 - 10:00 #1
Du kan sagtens køre en makro, hver gang et dokument åbnes, og du kan få makroen til at lukke dokumentet igen, men jeg ved til gengæld ikke lige, hvordan du får dokumentet åbnet, hver gang der kommeer et nyt dokument i mappen.
Avatar billede jkrons Professor
04. oktober 2004 - 10:21 #2
Din makro skal hedde autoopen og vil gælde for alle dokumenter, du åbner, altså også dokumenter, du selv åbner i Word. Derfor må din egen kode nok indeholde et check for om der skal afsluttes på en eller anden måde.

Sub autoopen()

'din kode her...

ActiveDocument.Close  'Hvis du vil lukke dokumentet
Application.Quit      'Hvis du vil afslutte Word

End Sub
Avatar billede Slettet bruger
04. oktober 2004 - 11:14 #3
se nu begynder det at virke interesant ;)
kan man så flette ind i koden at det kun skal være på dokumenter fra en bestemt mappe?
Lukker ActiveDocument.Close uden at gemme ændringer?
Avatar billede jkrons Professor
04. oktober 2004 - 12:13 #4
Ja til det sidste. Men hvis du skjal have gemt ændringer indsætter du
ActiveDocument.Save lige før lukke  kommandoen.

Det første tror jeg godt man kan kode sifg ud af (så den kun ser på dokumenter fra en bestemt mappe).
Avatar billede jkrons Professor
04. oktober 2004 - 12:24 #5
Denne kode ser på, hvor dokumentet ligger gemt. Kun hvis det ligger i c:\test udføres resten af koden, ellers åbnes dokumentet normalt.

Hvis dokumentet ligger i c:\test udføres koden, dokumentet gemmes og lukkes.

Sub autoopen()
    If UCase(ActiveDocument.Path) = UCase("c:\test") Then
        'Din kode....
    Else
        Exit Sub
    End If
    ActiveDocument.Save
    ActiveDocument.Close
End Sub
Avatar billede tofte Juniormester
04. oktober 2004 - 13:19 #6
du kan køre et vbScript

Option Explicit

dim myFolderP
'stien til mappen som skal undersøges
myFolderP="C:\test"

sub openWord1(fname)
    dim oShell
    Set oShell = WScript.CreateObject("WScript.shell")
    oShell.run("winword "&myFolderP&"\"&fname)
    set oShell = nothing
end sub

sub openWord(fname)
    dim app
    Set app = Wscript.CreateObject("Word.Application")
    app.Visible = false
    app.Documents.Open(myFolderP&"\"&fname)
    'navnet på den makro som skal køres
    app.run("Makro1")
    app.Quit
    set app = nothing
end sub
function chkFolder()
    chkFolder=true
    Dim objFSO
    dim folder,fileCol,fil
   
    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
    set folder = objFSO.getFolder(myFolderP)
    set fileCol = folder.Files

    For Each fil in filecol
        if right(fil.name,3)="doc" then
            openWord(fil.name)
        end if     
        if left(fil.name,4)="term" then
            chkFolder=false
        end if
    Next
    Set objFSO = Nothing
end function

dim a

while chkFolder()
    WScript.sleep(10000)
wend



Scriptet kører hvert 10 sek, og undersøger en mappe for worddocumenter. Hvis der findes et worddocument i mappen kører den en makro på dokumentet og lukker dokumentet igen. Scriptet kører i en uendelighed ind til der lægges en fil som starter med "term" i mappen.

Det eneste problem som jeg ser det med ovenstående script er, at den jo bliver ved med at køre hvert 10 sek, sålænge dokumentet er i mappen. Men jeg ved ikke helt hvad du har tænkt på der.

Håber det var det du mente.
Avatar billede jkrons Professor
04. oktober 2004 - 13:24 #7
tofte-> Som jeg læser det oprindelige spørgsmål ligger der hele tiden word-dokumenter i mappen, og koden skal derfor undersøge om der er kommet nye dokumenter siden den blev kørt sidst. Og så skal den åbne de nye dokumenter.

Og hvor lægger du din kode? Hvis det er i word kræver det jo at word er startet hele tiden.
Avatar billede tofte Juniormester
04. oktober 2004 - 13:29 #8
nej det er bare et vbs. Du gemmer bare ovenstående kode som en .vbs fil. som så kører som et alm job på maskinen. Så den bruger kun word til at køre macroen på dokumentet. Jeg skal lige tænke over, hvordan jeg klarer det andet.
Avatar billede Slettet bruger
04. oktober 2004 - 14:04 #9
Der ligger hele tiden dokumenter i mappen med almindelig tekst. Som i et txt dokument, filnavnsendelses hedder bare rpt..
Der kan godt blive lagt to dokumenter ind med meget kort mellemrum. (samtidigt)
Jeg vælger at bruge din kode, jkrons (04/10-2004 12:24:37)
Og så kører jeg overvågningen og selve åbningen af dokumenterne fra c++.
Jeg opretter et nyt spm mht overvågning og åbning.
Tak for hjælpen begge to.
Jkrons, du får point.. (hvis du da lægger et svar ;) )
Avatar billede jkrons Professor
04. oktober 2004 - 14:12 #10
Selvf. :-)  og velbekomme
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester