Avatar billede spoi Nybegynder
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
Avatar billede jhe-ting Nybegynder
03. juli 2007 - 04:23 #1
Det 'smager lidt af' samme problemstilling som
http://www.eksperten.dk/spm/758425
Jeg er for træt nu, men vender (måske) tilbage
Avatar billede spoi Nybegynder
03. juli 2007 - 07:37 #2
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
Avatar billede jhe-ting Nybegynder
03. juli 2007 - 16:16 #3
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.
Avatar billede spoi Nybegynder
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
Avatar billede spoi Nybegynder
10. oktober 2007 - 06:58 #5
point??
LN
Avatar billede jhe-ting Nybegynder
10. oktober 2007 - 11:13 #6
Fik du det til at virke?  - Fint nok. Hvad skulle der til?
Avatar billede jhe-ting Nybegynder
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
Avatar billede spoi Nybegynder
11. oktober 2007 - 15:00 #8
ja det har jeg faktisk været lidt i gang med
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