02. juli 2007 - 11:44
Der er
7 kommentarer og 1 løsning
tilrettelse af kode - kan kun køre koden én gang
Hej jeg har en lang fil her. Det er den sidste Querry med indkøbslinier, der laver knuder. Kan køre den en gang - men skal jeg køre koden en gang til er jeg nødt til at lukke arket op og ned igen. Nogen der kan hjælpe? Desuden når jeg prøver at tælle antal querry skriver den hhv 124 og 69 på arkene. Er dette ikke lige voldomt nok? Private Sub CommandButton1_Click() 'Application.ScreenUpdating = False Rem henter beholdning Sheets("Beholdning").Select ActiveSheet.Range("A2:B2").Select ActiveSheet.Range(Selection, Selection.End(xlDown)).Select ActiveSheet.Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents 'importerer tekstfilen og sætter den ind med start i celle A2 og starter i række 2 i tekstfilen With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;H:\sti1.txt", _ Destination:=ActiveSheet.Range("A2")) 'Destination:=Selection) .Name = "beholdning" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlOverwriteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 2 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1) .Refresh BackgroundQuery:=False End With ActiveSheet.QueryTables.Item(1).Refresh BackgroundQuery:=False Rem henter salgsdata Sheets("Salg").Select ActiveSheet.Range("A4:I4").Select ActiveSheet.Range(Selection, Selection.End(xlDown)).Select ActiveSheet.Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents 'importerer tekstfilen og sætter den ind med start i celle A2 og starter i række 2 i tekstfilen With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;H:\sti2.txt", _ Destination:=ActiveSheet.Range("A4")) 'Destination:=Selection) .Name = "salgslinier" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlOverwriteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 2 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1) .Refresh BackgroundQuery:=False End With ActiveSheet.QueryTables.Item(1).Refresh BackgroundQuery:=False MsgBox ActiveSheet.QueryTables.Count Rem henter indkøbsdata Sheets("Indkøb").Select ActiveSheet.Range("A4:G4").Select ActiveSheet.Range(Selection, Selection.End(xlDown)).Select ActiveSheet.Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Selection.QueryTable.Delete 'importerer tekstfilen og sætter den ind med start i celle A2 og starter i række 2 i tekstfilen With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;H:\sti3.txt", _ Destination:=ActiveSheet.Range("A4")) 'Destination:=Selection) .Name = "indkøbslinier" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlOverwriteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 2 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1) .Refresh BackgroundQuery:=False End With ActiveSheet.QueryTables.Item(1).Refresh BackgroundQuery:=False MsgBox ActiveSheet.QueryTables.Count 'Application.ScreenUpdating = True End Sub LN
Annonceindlæg fra Barco
Ja det er også mig der stillede spørgsmålet dengang. Det virker ellers super godt - bare kun en gang - så skal jeg lukke ned og op igen. Og ja så ser det ud til at jeg har ret mange querrys. LN
Ja - problemet er, at hvert kald til QueryTables.Add() tilføjer et nyt element til listen af queries. Det gælder om at genbruge de eksisterende queries. Hvis tekstfilerne sti(1..3).txt ændrer indhold, men beholder deres navne kan indholdet af regnearket opdateres ved i stedet kalde Refresh() på hver query.
16. august 2007 - 09:25
#4
vender lige tilage lidt senere - mener jeg har refresh inde Men måske har jeg lagt den forkert LN
10. oktober 2007 - 06:58
#5
point?? LN
10. oktober 2007 - 11:13
#6
Fik du det til at virke? - Fint nok. Hvad skulle der til?
11. oktober 2007 - 02:16
#7
Jeg prøver at komme med et nyt forslag. Det kunne godt laves på den måde som du har valgt med kun en makro. Det er bare ikke effektiv kode at fjerne query-tables for straks at oprette dem igen. Det vil være mere effektivt kun at oprette dem en enkelt gang, og siden genbruge dem. Det bliver mere effektivt med to makro'er: Hvis du laver en makro der kun skal køres en gang (efter du har fjernet alle query's) som ikke sættes på nogen knap, og en anden makro kun til at opdatere, som sættes på CommandButton1. Private Sub setup_initial() ' Kaldes med Makro -> Kør With Sheets("Beholdning").QueryTables.Add(Connection:= _ "TEXT;H:\sti1.txt", _ Destination:=ActiveSheet.Range("A2")) .Name = "beholdning" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlOverwriteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 2 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1) .Refresh BackgroundQuery:=False End With With Sheets("Salg").QueryTables.Add(Connection:= _ "TEXT;H:\sti2.txt", _ Destination:=ActiveSheet.Range("A4")) 'Destination:=Selection) .Name = "salgslinier" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlOverwriteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 2 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1) .Refresh BackgroundQuery:=False End With With Sheets("Indkøb").QueryTables.Add(Connection:= _ "TEXT;H:\sti3.txt", _ Destination:=ActiveSheet.Range("A4")) 'Destination:=Selection) .Name = "indkøbslinier" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlOverwriteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 2 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1) .Refresh BackgroundQuery:=False End With End Sub Private Sub CommandButton1_Click() Application.ScreenUpdating = False Rem henter beholdning Sheets("Beholdning").QueryTables.Item(1).Refresh BackgroundQuery:=False Rem henter salgsdata Sheets("Salg").QueryTables.Item(1).Refresh BackgroundQuery:=False Rem henter indkøbsdata Sheets("Indkøb").QueryTables.Item(1).Refresh BackgroundQuery:=False Application.ScreenUpdating = True End Sub
11. oktober 2007 - 15:00
#8
ja det har jeg faktisk været lidt i gang med
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig