Avatar billede mimet Nybegynder
22. september 2008 - 13:24 Der er 8 kommentarer

Undgå msgbox "skal ændringerne i xx.xls gemmes"

Den nedenstående VBA-kode gennemser, og kopierer værdier fra nogle definerede celler i alle regneark i et bibliotek.
Værdierne indsættes i et separat regneark.
Når dette er gjort popper der en msgbox med teksten fra overskriften. Det sker for alle de regneark der har været åbnet af VBA-koden.
Hvordan undgår jeg at msgboxen for hver fil popper op.
Jeg har indsat den del af VBA-koden kigger i filerne.

Rem behandling af alle filer i mappe
    For Each fil In fc
        Set xlsFil = CreateObject("Excel.Application")
        With xlsFil
            .Workbooks.Open mappe + "\" + fil.Name
            .Sheets(1).Activate
            kolA = .Range("C1")
            kolB = .Range("C5")
            kolC = .Range("F8")
            kolD = .Range("D11")
            kolE = .Range("G11")
            kolF = .Range("D13")
            kolG = .Range("G13")
            kolH = .Range("J13")
        End With
        xlsFil.Application.Quit

        (Det er her msgboxen popper op)

        Set xls = Nothing

Rem Opdater i samling
        With ActiveWorkbook
            .Sheets(1).Activate
            With ActiveSheet
                .Cells(samlRæk, 1) = kolA
                .Cells(samlRæk, 2) = kolB
                .Cells(samlRæk, 3) = kolC
                .Cells(samlRæk, 4) = kolD
                .Cells(samlRæk, 5) = kolE
                .Cells(samlRæk, 6) = kolF
                .Cells(samlRæk, 7) = kolG
                .Cells(samlRæk, 8) = kolH
            End With
            samlRæk = samlRæk + 1
        End With
    Next
Avatar billede ini Nybegynder
22. september 2008 - 14:14 #1
hvis du kun skal kopiere fra filerne, så prøv at finde en anden funktion til at åbne filerne, den du bruger åbner dem nok, men hvis de kun bliver åbnet med læserettighed slipper du nok for boxen :) kender dog ikke lige de funktioner :p
Avatar billede kabbak Professor
22. september 2008 - 16:15 #2
Du kan  fortæller at den er gemt, det er den ikke, men den tror det, med

xlsFil.Saved True
det skal stå lige før
xlsFil.Application.Quit
Avatar billede mimet Nybegynder
22. september 2008 - 23:24 #3
Det virker desværre ikke.
Hvis jeg sætter linien xlsFil.Saved True
ind på den foreslåede placering, får jeg
Run-time error '438', Object doesn´t support this property or method

Jeg har indsat hele den VBA-kode der omhandler samling af værdier fra mange regneark i ét. Det kan måske give en bedre forståelse?

Rem Version 2
Dim sti, filSti
Dim kolA, kolB, kolC, kolD, kolE, kolF, kolG, kolH, samlRæk
--------------------------------------------------------------------
Sub samlingAfFiler()
    sti = hentSti
    samlRæk = 4                                    'start-række i samling
   
    Application.ScreenUpdating = False
    traverserFilMappe sti + "TestMappe"            'erstattes af traverserFilmappe "C:\Sagsstyring\Igangværende sager"
   
    ActiveWorkbook.Sheets(1).Activate
    ActiveSheet.Columns.AutoFit
   
    Application.ScreenUpdating = True
   
'    MsgBox ("Samling er udført")
End Sub
---------------------------------
Private Function hentSti()
    hentSti = ActiveWorkbook.Path
    If Right(hentSti, 1) <> "\" Then
        hentSti = hentSti + "\"
    End If
End Function
------------------------------------
Private Sub traverserFilMappe(mappe)
Dim xlsFil
Dim fs, f, fil, fc
On Error GoTo fejl
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(mappe)
    Set fc = f.Files

Rem behandling af alle filer i mappe
    For Each fil In fc
        Set xlsFil = CreateObject("Excel.Application")
        With xlsFil
            .Workbooks.Open mappe + "\" + fil.Name
            .Sheets(1).Activate
            kolA = .Range("C1")
            kolB = .Range("C5")
            kolC = .Range("F8")
            kolD = .Range("D11")
            kolE = .Range("G11")
            kolF = .Range("D13")
            kolG = .Range("G13")
            kolH = .Range("J13")
        End With
        xlsFil.Application.Quit
        Set xls = Nothing

Rem Opdater i samling
        With ActiveWorkbook
            .Sheets(1).Activate
            With ActiveSheet
                .Cells(samlRæk, 1) = kolA
                .Cells(samlRæk, 2) = kolB
                .Cells(samlRæk, 3) = kolC
                .Cells(samlRæk, 4) = kolD
                .Cells(samlRæk, 5) = kolE
                .Cells(samlRæk, 6) = kolF
                .Cells(samlRæk, 7) = kolG
                .Cells(samlRæk, 8) = kolH
            End With
            samlRæk = samlRæk + 1
        End With
    Next
    Exit Sub

fejl:
    xlsFil.Application.Quit
    Set xls = Nothing
    MsgBox ("Fejl erkendt - kontakt udvikler")
End Sub
Avatar billede kabbak Professor
22. september 2008 - 23:38 #4
prøv

  For Each fil In fc
        Set xlsFil = CreateObject("Excel.Application")
        With xlsFil
            .Workbooks.Open mappe + "\" + fil.Name
            .Sheets(1).Activate
            kolA = .Range("C1")
            kolB = .Range("C5")
            kolC = .Range("F8")
            kolD = .Range("D11")
            kolE = .Range("G11")
            kolF = .Range("D13")
            kolG = .Range("G13")
            kolH = .Range("J13")
        End With
          ActiveWorkbook.Close False NY
        xlsFil.Application.Quit
        Set xls = Nothing
Avatar billede mimet Nybegynder
27. september 2008 - 13:13 #5
Jeg troede den løsning fra kabbak virkede. Der blev tilsyneladende kvitteret for save af filer.
Det så sådan ud indtil jeg ville lukke windows. Først da poppede msg-boxene for hver fil op. Jeg kunne derfor ikke lukke windows før end, der var kvitteret for alle de filer vba-koden havde haft fat i.
Jeg mangler derfor stadig en løsning. Hvis den findes.
Avatar billede mimet Nybegynder
21. februar 2013 - 00:30 #6
Jeg fik løst det lille problem til sidst med hjælpen fra kabbak og lidt tilretninger
Avatar billede mimet Nybegynder
08. marts 2013 - 12:08 #7
Hej Kabbak
Du kan lægge et svar til dette spørgsmål.
Det er godt nok længe siden, men bedre sent end aldrig.
Avatar billede kabbak Professor
18. marts 2013 - 21:18 #8
;-))
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
Kurser inden for grundlæggende programmering

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