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
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
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"
' 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
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
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.
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.