22. maj 2002 - 13:51
Der er
14 kommentarer og 2 løsninger
Makroredigering ?
Hej, Vi har købt en makro til excell for et stykke tid siden og lagt den ind i excell som et tilføjelsesprogram. Nu vil vi gerne have tilføjet en enkelt funktion mere, men hvordan og med hvad åbner man sådan en makro ? /Ivan
Annonceindlæg tema
højre klik på arket (nederst på den lille fane) og vælg "vis programkode" !!!
tjaah... forudsat den ikke er beskyttet med kodeord, så burde du kunne se den via ALT+F11
Funktioner -> Makro -> Rediger i Visual Basic eller klik blot på Alt+F11
der er mange muligheder :o)
jep, men de forudsætte alle, at der ikke er et kodeord *S*
Hej, Imponeret !!! Meget hurtig reaktion. Jeg har fået svar på mit spørgsmål, men har lige et tillæg. Jeg giver gerne flere point for det ! Koden underneden er en makro som importerer tekst og tal fra en kommasepareret fil og ordner dem i kolonner så det kan bruges. Nu er det sådan at feltet ANTAL skal hentes et andet sted istedet for som den gør nu. Nu skal den hentes 2 kolonner længere til højre for oprindeligt. Findes der en genial - enkel og MEGET let måde at gøre det ? 'Sheets("Ark1").Select Application.ScreenUpdating = False Cells.Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Selection.ClearContents ActiveWindow.FreezePanes = False If ActiveSheet.Range("A1") <> "" Then Columns("A:AY").Delete Selection.QueryTable.Delete Selection.AutoFilter End If With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Danpots\PUDB10.TXT", Destination:=Range("A1")) .Name = "PUDB10" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlMSDOS .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .Refresh BackgroundQuery:=False End With Rows("1:1").Select Selection.Insert Shift:=xlDown Range("A1") = "Lev." Range("C1") = "Uge" Range("E1") = "Navn" Range("F1") = "Antal" (Det er denne kolonne det drejer sig om) Range("K1") = "Bemærkning" Range("P1") = "Pris" Range("Q1") = "Rab." Range("AK1") = "Potstr." ActiveSheet.Rows("1:1").Font.Bold = True With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .ShrinkToFit = False .MergeCells = False End With 'ActiveSheet.Range("A2:AY65536").Font.Bold = False ActiveSheet.Range("A2:AY65536").Select Selection.Font.Bold = False With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .ShrinkToFit = False .MergeCells = False End With For i = 1 To 51 If Cells(1, i) = "" Then Cells(1, i).EntireColumn.Hidden = True End If Next Range("P2:Q65536").Select Selection.NumberFormat = "#,##0.00" Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False j = 2 Do While Range("A" & j) <> "" Range("P" & j) = Range("P" & j) * 1 Range("Q" & j) = Range("Q" & j) * 1 j = j + 1 Loop '------------------ Columns("E:E").Select Selection.Insert Shift:=xlToRight Columns("AL:AL").Select Selection.Cut Destination:=Columns("E:E") Columns("G:G").Select Selection.Insert Shift:=xlToRight Columns("R:R").Select Selection.Cut Destination:=Columns("G:G") Columns("H:H").Select Selection.Insert Shift:=xlToRight Columns("T:T").Select Selection.Cut Destination:=Columns("H:H") Columns("S:T").Delete '------------------ Columns("A:AK").Select Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("C2") _ , Order2:=xlAscending, Key3:=Range("A2"), Order3:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom ActiveSheet.Range("A1:AY65536").AutoFilter Columns("A:A").HorizontalAlignment = xlCenter Columns("C:C").HorizontalAlignment = xlCenter Columns("E:E").HorizontalAlignment = xlCenter Columns("I:I").HorizontalAlignment = xlCenter Columns("A:A").AutoFit Columns("C:C").AutoFit Columns("E:E").AutoFit Columns("F:F").AutoFit Columns("G:G").AutoFit Columns("H:H").AutoFit Columns("I:I").AutoFit Columns("N:N").AutoFit Application.ScreenUpdating = True Rows("2:2").Select ActiveWindow.FreezePanes = True End Sub /Ivan
Skal du bare have flyttet overskriften eller bliver kolonnen slet ikke importeret nu ?
>>bak - som det er nu, er det den forkerte kolonne der bliver importeret ! Den kolonne der skal med befinder sig 2 "kolonner" længere til højre for den "kolonne" der bliver importeret på nuværende tidspunkt fra den kommaseparerede fil. /Ivan
Jeg tror faktisk at der er en meget enkel måde at fikse det på. Det ser ud til at hele tesktfilen bliver importeret og at de kolonner der ikke har/får en overskrift bliver skjult. Prøv lige at ændre det sted hvor der står Range("F1") = "Antal" til Range("H1") = "Antal"
Hej bak, Nej desværre, den læser fra samme kolonne igen. Men ok, jeg skal være den første til at indrømme at jeg aldrig har prøvet dette før, så måske er det u........ Tror du ikke at det også skal rettes lidt længere nede ? Columns("E:E").Select Selection.Insert Shift:=xlToRight Columns("AL:AL").Select Selection.Cut Destination:=Columns("E:E") Columns("G:G").Select Selection.Insert Shift:=xlToRight Columns("R:R").Select Selection.Cut Destination:=Columns("G:G") Columns("H:H").Select<<<<<<<<<<< Selection.Insert Shift:=xlToRight Columns("T:T").Select Selection.Cut Destination:=Columns("H:H") Columns("S:T").Delete Ser det ikke ud som om den vælges fra der ? /Ivan
Du kan prøve at markere hele arket og vælge "Formater > Kolonner > Vis. Se så efter om kolonnen antal er kommet med ind i arket. Hvis den er det, kan vi godt fikse det. Du er også velkommen til at sende arket + teskt-filen til mig på tommybak@netscape.net.
Her er den :-) Sub Import() ' Makro1 Makro ' Makro indspillet 15-04-2002 af xo 'Sheets("Ark1").Select Application.ScreenUpdating = False Cells.Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Selection.ClearContents ActiveWindow.FreezePanes = False If ActiveSheet.Range("A1") <> "" Then Columns("A:AY").Delete Selection.QueryTable.Delete Selection.AutoFilter End If With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Danpots\PUDB10.TXT", Destination:=Range("A1")) .Name = "PUDB10" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlMSDOS .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .Refresh BackgroundQuery:=False End With Rows("1:1").Select Selection.Insert Shift:=xlDown Range("A1") = "Lev." Range("C1") = "Uge" Range("E1") = "Navn" Range("H1") = "Antal" Range("K1") = "Bemærkning" Range("P1") = "Pris" Range("Q1") = "Rab." Range("AK1") = "Potstr." ActiveSheet.Rows("1:1").Font.Bold = True With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .ShrinkToFit = False .MergeCells = False End With 'ActiveSheet.Range("A2:AY65536").Font.Bold = False ActiveSheet.Range("A2:AY65536").Select Selection.Font.Bold = False With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .ShrinkToFit = False .MergeCells = False End With For i = 1 To 52 '**********ændret fra 51-> 52 Bak If Cells(1, i) = "" Then Cells(1, i).EntireColumn.Hidden = True End If Next Range("P2:Q65536").Select Selection.NumberFormat = "#,##0.00" Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False j = 2 Do While Range("A" & j) <> "" Range("P" & j) = Range("P" & j) * 1 Range("Q" & j) = Range("Q" & j) * 1 j = j + 1 Loop '*********--Indsat nyt. Bak---------********** Columns("E:E").Insert Shift:=xlToRight Columns("AL:AL").Cut Destination:=Columns("E:E") Columns("I:I").Insert Shift:=xlToRight Columns("R:R").Cut Destination:=Columns("I:I") Columns("J:J").Insert Shift:=xlToRight Columns("T:T").Cut Destination:=Columns("J:J") '************************************************* '-------------------------- ' Columns("E:E").Select ' Selection.Insert Shift:=xlToRight ' Columns("AL:AL").Select ' Selection.Cut Destination:=Columns("E:E") ' Columns("G:G").Select ' Selection.Insert Shift:=xlToRight ' Columns("R:R").Select ' Selection.Cut Destination:=Columns("G:G") ' Columns("H:H").Select ' Selection.Insert Shift:=xlToRight ' Columns("T:T").Select ' Selection.Cut Destination:=Columns("H:H") ' Columns("S:T").Delete '------------------ Columns("A:AK").Select Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("C2") _ , Order2:=xlAscending, Key3:=Range("A2"), Order3:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom ActiveSheet.Range("A1:AY65536").AutoFilter '*************Indsat Nyt Bak*************************** Range("A:A,C:C,E:E,K:K").HorizontalAlignment = xlCenter '******************************************************* 'Columns("A:A").HorizontalAlignment = xlCenter 'Columns("C:C").HorizontalAlignment = xlCenter 'Columns("E:E").HorizontalAlignment = xlCenter 'Columns("I:I").HorizontalAlignment = xlCenter Columns("A:A").AutoFit Columns("C:C").AutoFit Columns("E:E").AutoFit Columns("F:F").AutoFit '********Ændret Bak *********************************** Columns("G:G").AutoFit Columns("H:H").AutoFit Columns("K:K").AutoFit Columns("N:N").AutoFit '******************************************************** Application.ScreenUpdating = True Rows("2:2").Select ActiveWindow.FreezePanes = True End Sub
Beklager, der har indsneget sig en lille fejl. Sidste del af koden skal være Columns("A:AK").Select Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Key2:=Range("C1") _ , Order2:=xlAscending, Key3:=Range("A1"), Order3:=xlAscending, Header:= _ xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom ActiveSheet.Range("A1:AY65536").AutoFilter '*************Indsat Nyt Bak*************************** Range("A:A,C:C,E:E,K:K").HorizontalAlignment = xlCenter '******************************************************* 'Columns("A:A").HorizontalAlignment = xlCenter 'Columns("C:C").HorizontalAlignment = xlCenter 'Columns("E:E").HorizontalAlignment = xlCenter 'Columns("I:I").HorizontalAlignment = xlCenter Columns("A:A").AutoFit Columns("C:C").AutoFit Columns("E:E").AutoFit Columns("F:F").AutoFit '********Ændret Bak *********************************** 'Columns("G:G").AutoFit 'Columns("H:H").AutoFit Columns("K:K").AutoFit Columns("N:N").AutoFit '********************************************************
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.