Avatar billede kasper_knaldperle Nybegynder
01. april 2005 - 16:21 Der er 10 kommentarer og
1 løsning

Åbne og gemme dokument fra formular.

Er det muligt fra en formular at have en kommandoknap, der åbner et bestemt dokument F.eks (Word-skabelon)og gemmer den et andet sted under et andet navn.

Både sti til skabelon, sti til færdigt dokument og det nye dokumentnavn står på formularen.

Det betyder ingenting om dokumentet åbner op, det skal bare helst ligge rigtigt på computeren med det rigtige navn inden man begynder at skrive.
01. april 2005 - 16:31 #1
Du kan jo kopiere filer vha kommandoen Filecopy:

Filecopy Me!Skabelon, Me!NySti
01. april 2005 - 16:34 #2
Hvis du også vil åbne filen til redigering kan du bruge denne kode:

  Dim Wrd As New Word.Application
  Wrd.Visible = True
  Wrd.Activate
  Wrd.Documents.Add Me!StiTilSkabelon
  Wrd.ActiveDocument.SaveAs Me!NySti


Så oprettes et nyt dokument baseret på skabelonen. det nye dokumet gemmes i Me!NySti og brugeren kan herefter begynde at skrive (og skal således kun gemme, når han lukker)
01. april 2005 - 16:35 #3
PS: den sidste kodestump kræver reference til Microsoft Word
Avatar billede kasper_knaldperle Nybegynder
01. april 2005 - 16:43 #4
Tror du ikke den med Filecopy er den nemmeste. Hvis dokumentet så kunne omdøbes i samme omgang ville den jo være hjemme...kan det lade sig gøre??

Det er ikke tvingende nødvendigt at åbne den med det samme da man allerede kan åbne filer fra Access ved hjælp af ShellExecute (som du også hjalp med :D)
Ved at kopiere er det jo let at bruge alle filer som skabeloner, også selvom det er AutoCad eller et eller andet obskurt.
01. april 2005 - 16:57 #5
Omdøbningen sker jo samtidig med filecopy.

Eks:

Filecopy C:\MitDokument.doc, C:\MitNyeDokument.doc

Du kan efterfølgende åbne filen med ShellExecute, som kan downloades her: http://www.makeiteasy.dk/eksempler/VBFunktioner.htm

ShellExecute Me!NySti, WIN_NORMAL

Denne kommando kan netop åbne alle filer, som er kendt af Windows.

Det kræver bare, at du lægger denne kode i et selvstændigt modul (modulet må IKKE hedde ShellExecute):

Private Declare Function apiShellExecute Lib "Shell32.dll" _
    Alias "ShellExecuteA" _
    (ByVal hWnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) _
    As Long

'***App Window Constants***
Public Const WIN_NORMAL = 1        'Open Normal
Public Const WIN_MAX = 3            'Open Maximized
Public Const WIN_MIN = 2            'Open Minimized

'***Error Codes***
Private Const ERROR_SUCCESS = 32&
Private Const ERROR_NO_ASSOC = 31&
Private Const ERROR_OUT_OF_MEM = 0&
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&

Public Function ShellExecute(stFile As String, lShowHow As Long)
Dim lRet As Long, varTaskID As Variant
Dim stRet As String
    'First try ShellExecute
    lRet = apiShellExecute(hWndAccessApp, vbNullString, _
            stFile, vbNullString, vbNullString, lShowHow)
           
    If lRet > ERROR_SUCCESS Then
        stRet = vbNullString
        lRet = -1
    Else
        Select Case lRet
            Case ERROR_NO_ASSOC:
                'Try the OpenWith dialog
                varTaskID = Shell("rundll32.exe shell32.dll,OpenAs_RunDLL " _
                        & stFile, WIN_NORMAL)
                lRet = (varTaskID <> 0)
            Case ERROR_OUT_OF_MEM:
                stRet = "Error: Out of Memory/Resources. Couldn't Execute!"
            Case ERROR_FILE_NOT_FOUND:
                stRet = "Error: File not found.  Couldn't Execute!"
            Case ERROR_PATH_NOT_FOUND:
                stRet = "Error: Path not found. Couldn't Execute!"
            Case ERROR_BAD_FORMAT:
                stRet = "Error:  Bad File Format. Couldn't Execute!"
            Case Else:
        End Select
    End If
    ShellExecute = lRet & _
                IIf(stRet = "", vbNullString, ", " & stRet)
End Function
Avatar billede kasper_knaldperle Nybegynder
01. april 2005 - 17:10 #6
Ok...jeg er bange for at jeg trænger til at blive holdt i hånden.
Skal koden lægges på "VedKlik"hændelsen eller hvad??
Og hvad blev der af: "me!"

ShellExecute har jeg styr på :D
01. april 2005 - 17:28 #7
Jo da. Du lægger bare denne kode på knappens VedKlik-hændelse:

Filecopy Me!Skabelon, Me!NySti
ShellExecute Me!NySti, WIN_NORMAL
Avatar billede kasper_knaldperle Nybegynder
01. april 2005 - 17:41 #8
Jeg fatter det ikke. Den skriver noget med at den ikke kunne finde makroen.
Jeg har skrevet det direkte ud for "VedKlik", skal det i et modul el.lign?
Jeg har skrevet: "Filecopy Me!sti, Me!tekst60" hvor tekst60 er en tekstboks, der indeholder stien på det nye dokument, og sti er stien til et eksisterende dokument.
01. april 2005 - 17:45 #9
ja, du skal skrive koden inde i VBA-editoren.

Slet hele koden fra VedKlik-egenskaben.
Klik i stedet på knappen med 3 prikker på i højre side. Vælg Kodegenerator.
Her skriver du koden som beskrevet.
Avatar billede kasper_knaldperle Nybegynder
01. april 2005 - 17:49 #10
Haha :D
Den sad lige hvor den skulle.
Tusind tak for din hjælp c",)
01. april 2005 - 18:51 #11
Super !

Og selv tak, da :o)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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