Med hjaelp fra bl.a. Bak og Oyejo har jeg lavet nedenstaaende macro der henter data i lukkede workbooks i en mappe. (Tak for det Bak og oyejo). Jeg har dog noget jeg gerne vil have rettet, hvis cellevaerdien er blank (Intet celleindhold) i mine ark, saa returneres der et nul, er det muligt at lave macroen om saa der returneres en blank celle eller alternativt "N/A" for Not available.
Sub GetValuesFromClosedFiles() Dim FS As FileSearch Dim FilePath As String Dim i As Integer, j As Integer, n As Integer, c As Integer Dim v As Variant Dim Cells2Get() Dim sheetNameEnd() Dim sheet As String
Const Filespec = "*.xls" 'udfyldes af bruger Filtype 'udfyldes af bruger Startfolder FilePath = "C:\test\" sheetNameEnd() = Array("0", "i", "ii", "iii", "iv")
'udfyldes af bruger Celler, der skal hentes, 'NB! EN LINJE(ARRAY) FOR HVERT ARK Cells2Get = Array(Array("B10", "C10"), _ Array("B11", "C11", "D11"), _ Array("B12", "C12"), _ Array("B13", "C13"), _ Array("B14", "C14"))
Application.ScreenUpdating = False
Set FS = Application.FileSearch With FS .LookIn = FilePath .Filename = Filespec .Execute If .FoundFiles.Count = 0 Then MsgBox ("Ingen filer fundet") Exit Sub End If
For i = 1 To .FoundFiles.Count c = 0 v = Split(.FoundFiles(i), Application.PathSeparator) FilePath = Left(.FoundFiles(i), InStrRev(.FoundFiles(i), _ Application.PathSeparator)) ActiveCell.Offset(i, 0) = FilePath & v(UBound(v))
For n = 0 To UBound(sheetNameEnd) sheet = "part" & sheetNameEnd(n) For j = 0 To UBound(Cells2Get(n), 1) c = c + 1 ActiveCell.Offset(i, c) = GetValue(FilePath, v(UBound(v)), sheet, Cells2Get(n)(j)) Next Next Next End With
Application.ScreenUpdating = False
End Sub
Private Function GetValue(path, file, sheet, range_ref) Dim arg As String arg = "'" & path & "[" & file & "]" & sheet & "'!" & Range(range_ref).Range("A1").Address(, , xlR1C1) GetValue = ExecuteExcel4Macro(arg) End Function
Sist jeg hjalp deg tok du pointene selv, men jeg får vel prøve å hjelpe deg likevel :-)
Det er ikke sikkert du trenger å endre noe i koden. I min norske versjon av excel kan jeg gå inn på menyen Verktøy -> Alternativer og Faneblad Vis Her kan man fjerne markeringen for Vis nullverdier
Hej Oyeyo, undskyld jeg lavede en fejl og points selv, jeg vil laegge point til dig i et nyt sporgsmaal. Ovenstaaende forslag, loeser ikke mit problem, hvis vaerdien virkelig er nul, ideen er at jeg vil skelne mellem nul vaerdi og blank.
Sub GetValuesFromClosedFiles() Dim FS As FileSearch Dim FilePath As String Dim i As Integer, j As Integer, n As Integer, c As Integer Dim v As Variant Dim Cells2Get() Dim sheetNameEnd() Dim sheet As String
Const Filespec = "*.xls" 'udfyldes af bruger Filtype 'udfyldes af bruger Startfolder FilePath = "C:\test\" sheetNameEnd() = Array("0", "i", "ii", "iii", "iv")
'udfyldes af bruger Celler, der skal hentes, 'NB! EN LINJE(ARRAY) FOR HVERT ARK Cells2Get = Array(Array("B10", "C10"), _ Array("B11", "C11", "D11"), _ Array("B12", "C12"), _ Array("B13", "C13"), _ Array("B14", "C14"))
Application.ScreenUpdating = False
Set FS = Application.FileSearch With FS .LookIn = FilePath .Filename = Filespec .Execute If .FoundFiles.Count = 0 Then MsgBox ("Ingen filer fundet") Exit Sub End If
For i = 1 To .FoundFiles.Count c = 0 v = Split(.FoundFiles(i), Application.PathSeparator) FilePath = Left(.FoundFiles(i), InStrRev(.FoundFiles(i), _ Application.PathSeparator)) ActiveCell.Offset(i, 0) = FilePath & v(UBound(v))
For n = 0 To UBound(sheetNameEnd) sheet = "part" & sheetNameEnd(n) For j = 0 To UBound(Cells2Get(n), 1) c = c + 1 If IsNull(GetValue(FilePath, v(UBound(v)), sheet, Cells2Get(n)(j))) Then ActiveCell.Offset(i, c) = "" Else ActiveCell.Offset(i, c) = GetValue(FilePath, v(UBound(v)), sheet, Cells2Get(n)(j)) End If Next Next Next End With
Jeg har forsoegt, jeg kan ikke faa det til at virke, der kommer stadig nuller. Jeg har ogsaa proevet dit forslag med IsEmpty istedet for ISNull, det virker heller ikke.
Tak Bak det virker fint, lige et par spoergsmaal: 1) Hvorfor har du indsat kommentaren: 'IsNull(ExecuteExcel4Macro(arg)) 2) Er det muligt at lave macroen saa der returneres "N/A" for Not available hvis cellen er blank?
1. Kommentaren er bare en forglemmelse fra tidligere experiment. 2. GetValue = "=if(isblank(" & arg & "),NA()," & arg & ")" 'IsNull(ExecuteExcel4Macro(arg))
Mange tak Bak, det virker fint. Laeg venligst et svar saa jeg kan give dig point. En anden ting, jeg kunne godt taenke mig at lave en macro der fylder vaerdierne tilbage i mine ark hvis jeg skulle aendre dem. Til dette brug vil jeg saa lave to raekker oeverst med information om i foerste reakke 1) hvilken celle vaerdien kommer fra, og i anden raekke 2) hvilket ark vaerdien kommer fra. Information om navnet paa workbooks kan findes i kolonne A1. Er det muligt at lave noget saadant? I saa fald vil jeg oprette et nyt spoergsmaal med nye points.
Synes godt om
Ny brugerNybegynder
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.