Avatar billede h_s Forsker
07. august 2007 - 21:13 Der er 1 løsning

Optimering af makro #1

Jeg har gennem længere tid sammenstykket nedenstående makro ved hjælp af mange brugere på eksperten.dk.

Min udfordring ligger i at den godt nok er færdig, men virker noget uoverskuelig. Derfor vil jeg gerne have hjælp til at optimere makroen.

Der er en lille ekstra makro - den (Private Function test_server(StiOgFil) As Boolean) er blot med for forståelsens skyld.
Makroen OpdateringAfVersion skal optimeres senere :-)

Husk makroen skal gøre det samme som nedenstående!

På forhånd tak!

Sub KopiAfSkattesatser()
  'Kontrol om der er skriveadgang ned i Skattesatser
  'Kopier og indsætter data fra filen Skattesatser til Stamdata
  'og laver MsgBox der fortæller at data er opdateret
 
  Dim x As Boolean
  Dim stStiOgFil As String
  Dim BeskedAdgang As String
  Dim BeskedIngenAdgang As String
  Dim objOpenWB As Workbook
  Dim objWB As Workbook
  Dim strFilename As String
  Dim objOpen As Integer
 
  'Dette er mappen hvor Stamdata.xls ligger
  Const FilMappe As String = "C:\Test\Skat\"
 
'Sti til filen - Filen skal være TEST.xls
  stStiOgFil = FilMappe & "test.xls"
 
x = test_server(stStiOgFil)
If x = True Then

    Application.ScreenUpdating = False
   
    'Skriver sti-, fil- og arknavn
    Sheets("Beregninger").Range("C25") = ActiveWorkbook.FullName
    Sheets("Beregninger").Range("C26") = ActiveWorkbook.Name
    Sheets("Beregninger").Range("C29") = ActiveSheet.Name

    'Kopi af stinavn fra C25 og C26 og version fra C27 og Årstal fra C28 og Aktivt ark fra C29
    Sheets("Beregninger").Range("C25:C29").Copy
   
    'Sætter filsti for Stamdata
    strFilename = FilMappe & "Stamdata.xls"

    'Løber alle åbne Excel-filer igennem for at tjekke Stamdata.xls findes.
    'Hvis den er åben, sættes en reference til den.
        For Each objOpenWB In Application.Workbooks
            If objOpenWB.FullName = strFilename Then
                Set objWB = objOpenWB
                objOpen = 1
                Exit For
            End If
        Next

        'Hvis Stamdata.xls ikke er åben åbnes den.
        If objWB Is Nothing Then
            Set objWB = Workbooks.Open(Filename:=strFilename, ReadOnly:=True)
           
        End If

    'Indsætter Stinavn og Filnavn ind i arket Beregninger i C25 og C26 og version fra C27 og Årstal fra C28
    ' og Aktivt ark fra C29
    objWB.Sheets("Beregninger").Range("C25:C29").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    'Køre makro i Stamdata
    Application.Run ("Stamdata.xls!OpdateringAfVersion")
       
        'Hvis Stamdata.xls er åben (objOpen =1), lukkes den ikke
        If objOpen = 1 Then
       
        Else
        'Lukker Stamdata.xls
        Workbooks("Stamdata.xls").Close savechanges:=False
        End If
       
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
Else
 
    'Besked hvis der ikke er skriverettigheder ned på server
    sLangTekst = "Du har ikke skrive-adgang til G-drevet, så du kan ikke opdaterer data!" & vbNewLine
    sLangTekst = sLangTekst & "" & vbNewLine
    sLangTekst = sLangTekst & "Tilslut dig netværket og prøv igen!"
    BeskedIngenAdgang = MsgBox(sLangTekst, vbOKOnly + vbCritical, "Ingen adgang til serveren")
 
End If
End Sub
 
Private Function test_server(StiOgFil) As Boolean
'Kontrol af skriveadgang til drev
'Bruges af KopiAfSkattesatser

  On Error GoTo IngenAdgang
  Open StiOgFil For Output As #1
  Write #1, "Testing"
  Close #1
  test_server = True
  Kill StiOgFil
  Exit Function
IngenAdgang:
  test_server = False
End Function
Avatar billede h_s Forsker
09. august 2007 - 15:58 #1
Spørgsmål lukkes, da der ikke er kommet noget respons!
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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