Just nu i M3-nätverket
Gå till innehåll

MvS

Medlem
  • Antal inlägg

    121
  • Gick med

  • Senaste besök

Allt postat av MvS

  1. Det verkar funka om jag skriver =OMFEL(LETARAD($A:$A;Tabell6;9;0);"")
  2. Hur gör jag det? Skriver jag =OMFEL(LETARAD([@Db];Tabell6;$I$7;0);"") så returnerar den blankt...
  3. Jag exakt samma formel i hela kolumnen...
  4. Jag har som sagt ett formulär som användare ska kunna lägga till data i tabellen med (se bifogat utsnitt av VBA) och hela poängen med formuläret är att enkelt tillföra data som ska uppdatera sig automatiskt via LETARAD-funktionen. Det verkar ju heltossigt att Excel inte skulle kunna klara detta... InfogaRad_VBA.txt
  5. Tack för snabbt svar! Jag har ett formulär som infogar ny rad men jag har även prövat att helt enkelt högerklicka på radrubriken och infoga med samma resultat!
  6. Här är något riktigt mysko som jag råkat ut för: Har en tabell med data och i en kolumn använder jag funktionen "LETARAD" för att länka information mot en annan flik som innehåller "databasen" eller rådata. Allt frid & fröjd so far, MEN när jag infogar en ny rad i tabellen så ändrar Excel argumentet i min LETARAD-funktion så att kolumnreferensen ökar ett steg (från 9 till 10)! Se bifogad bild. Någon som kan förklara varför detta sker?
  7. Tack för svar! Menar du att jag redan i källdokumentet (Excel-tabellen) kan styra filtret? Som det ser ut nu har jag följande kod i Excel: Sub Etiketter() On Error Resume Next Set ws = Sheets("Lista") Dir = ThisWorkbook.Path Opt = ws.Range("O1") Set objWord = CreateObject("Word.Application") objWord.Activate objWord.Visible = True AppActivate (objWord.Windows(1).Caption) Select Case Opt Case Is = 2 ' Före 1970 Result = objWord.Documents.Open(Dir & "\Etiketter_1.docm") AppActivate (objWord.Windows(2).Activate) ' & (objWord.Windows("Etiketter_1.docm").Close) Case Is = 3 ' Mellan 1970 och 1990 Result = objWord.Documents.Open(Dir & "\Etiketter_2.docm") AppActivate (objWord.Windows(2).Activate) ' & (objWord.Windows("Etiketter_2.docm").Close) Case Is = 4 ' Efter 1990 Result = objWord.Documents.Open(Dir & "\Etiketter_3.docm") AppActivate (objWord.Windows(2).Activate) ' & (objWord.Windows("Etiketter_3.docm").Close) Case Is = 1 ' Om inget av ovanstående Result = objWord.Documents.Open(Dir & "\Etiketter_3.docm") AppActivate (objWord.Windows(2).Activate) ' & (objWord.Windows("Etiketter_3.docm").Close) End Select Call Workbook_RefreshAll End Sub Jag har således tre olika dokument (Word) med etikettmallar som jag vill öppna beroende på hur jag filtrerat på tidsperiod. Det vore ju bra om jag redan härifrån kunde styra urvalet!
  8. Jag har gjort en databas i Excel 2013 åt en kompis för hans stora skivsamling. Jag försöker att skapa ett automatiserat flöde där det enkelt ska gå att skriva ut etiketter ur samlingen att fästa på hyllor och lådor där skivorna förvaras. För detta ändamål har jag skapat tre etikettmallar i Word för olika tidsperioder (Mall 1 = 1950 - 1970. mall 2 = 1970 - 1990, mall 3 = Från 1990) som kan användas att märka upp de många lådor som skivsamlingen finns i. Jag har försökt hitta VBA-kod som kan bistå med detta så att man bara behöver klicka på en knapp i Excel-databasen för att automatiskt skapa en etikettserie i Word (mailmerge). Det verkar funka så långt att Word öppnar och påbörjar mailmerge med sen hänger sig programmet i flera minuter och Word kraschar. Så här ser min kod ut för första tidspannet (1950-1970): Private Sub Document_Open() Dim wd As Object Dim wDocSource As Object, wDocPath As String Dim strWorkbookName As String Set wDocSource = ThisDocument wDocPath = ThisDocument.Path strWorkbookName = wDocPath & "\Etiketter+Db.xlsm" On Error Resume Next Set wd = GetObject(, "Word.Application") If wd Is Nothing Then Set wd = CreateObject("Word.Application") End If On Error GoTo 0 wDocSource.MailMerge.OpenDataSource Name:= _ strWorkbookName, _ Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _ SQLStatement:="SELECT * FROM `Db$`" With wDocSource.MailMerge .Destination = wdSendToNewDocument .SuppressBlankLines = True With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=False End With ActiveDocument.SaveAs2 FileName:= _ wDocPath & "\Etiketter_Pre-1970.docx", _ FileFormat:=wdFormatXMLDocument ChangeFileOpenDirectory _ wDocPath ActiveDocument.SaveAs2 FileName:= _ wDocPath & "\Etiketter_Pre-1970.docx", _ FileFormat:=wdFormatXMLDocument, LockComments:=False, Password:="", _ AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _ EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _ :=False, SaveAsAOCELetter:=False, CompatibilityMode:=15 End Sub Då jag kapar sekvensen efter SQLStatement (i.e. INNAN begäran om att fullfölja mailmerge) så verkar det gå bra, men då måste man "manuellt" välja "Slutför och koppla" för att etikettserien ska genereras och jag vill att hela processen ska funka automatiskt så att det bara är för användaren att skriva ut! Grunddelen av VBA-koden ovan har jag fått genom en makroinspelning och sedan har jag lagt till delar jag hittat på nätet. En märklig sak dock är att själva filtreringen jag gör underinspelningen i "Redigera mottagarlista" kommer av någon anledning inte med i koden - varför då? Jag har också prövat att lägga in "WHERE" argument i SQL-statement efter tips när jag Googlat runt men då hittar inte Word sökvägen till Excel-filen och dokumentet kan inte öppna! Känner spontant att detta bara måste funka men antagligen är det något knas med kodningen som ställer till det. Om det finns någon i forumet som har råkat ut för motsvarande och till äventyrs hittat en bra lösning vore jag stort tacksam för hjälp!
  9. Hittade lösningen själv! Bara att lägga till On Error Resume Next Fixat!
  10. Hej alla Excelkunniga! Har ett problem jag inte kan förstå hur det ska lösas. Har gjort en inventeringslista i Excel som jag vill kunna skriva ut etiketter på olika poster. Etiketterna kan ha tre olika symboler (bilder) i sig beroende på om posten skapades före ett visst årtal, mellan två år eller efter ett tredje årtal. Så jag har skapat tre wordmallar som jag vill anropa vid etikettutskrift från min Excelfil. Har snokat runt webben och landat i ett VBA-skript som verkade kunna göra jobbet. Jag har med mina något rudimentära kunskaper i VBA försökt anpassa skriptet att öppna beroende på vad man anger via en combobox: Före 1994, mellan 1994-2011 samt efter 2011. Jag har använt case-anrop för kommandona (se skript nedan) men när jag försöker köra det så öppnar Excel visserligen rätt Worddokument men skriptet stannar sedan och felmeddelande visas: Har prövat att modda skriptet på olika sätt, googlat efter lösning på problemet men inte lyckats finna vad som fattas. Nu står mitt sista hopp till om någon VBA-kunnig på Eforum kan hjälpa mig. Sub Etiketter() Call TaBortSkydd Dim ws As Worksheet Dim Opt As Integer, Result As Action Dim objWord As Object Set ws = ActiveSheet Opt = ws.Range("$O$1").Value Set objWord = CreateObject("Word.Application") objWord.Visible = True Select Case Opt Case Is = 1 Result = objWord.Documents.Open(Application.ActiveWorkbook.Path & "\Etiketter_1.docx") Case Is = 2 Result = objWord.Documents.Open(Application.ActiveWorkbook.Path & "\Etiketter_2.docx") Case Is = 3 Result = objWord.Documents.Open(Application.ActiveWorkbook.Path & "\Etiketter_3.docx") End Select ws.Range("$O$1").ClearContents Call Workbook_RefreshAll Call SkyddaBlad End Sub Med hopp om räddning...
  11. Tack alla för intressanta svar! Jag har efter att tagit del av era tips kommit till insikt att detta är ett företag som kommer att ta mer tid och kraft än vad som nyttan kommer att ge så jag lägger helt enkelt ner just denna ambition!
  12. Tack för tipset men det funkade inte heller. Bland annat så finns överhuvudtaget inte alternativet Klistra in bildlänk så länge man står i tabellen, endast om jag väljer en cell utanför tabellstrukturen! Då jag i alla fall prövar det senare (dvs klistra in bildlänk utanför tabellstrukturen) och sen ska ange t ex =pdf i formulärfältet så blir resultatet Ogiltig Referens! Jag börjar misströsta om att detta är ens möjligt med så pass många tabeller jag har i arbetsboken...
  13. Hej alla Excelfantaster! Jag har ett lite klurigt problem som jag undrar om någon kan lista ut hur man ska gå tillväga för att lösa. Har en arbetsbok med förteckning över en mängd olika dokument sorterade på år de skapats. Årtalen är på 21 separata flikar (1998 - 2018). Som en liten finess hade jag tänkt att en ikon på filändelsen visas efter varje dokument beroende på vilket filformat det handlar om; Är det en t ex pdf-fil ska en pdf ikon visas och om det är en Word-fil ska en Word-ikon dyka upp etc. Det handlar om inalles 13 olika dokumenttyper som jag vill ska automatisk tilldelas en liten ikonbild och eftersom detta ska vara ett levande dokument kommer filerna att ändras successivt varför jag då vill att Excel uppdaterar med rätt ikon om och när en post uppdateras! Jag har själv kommit så långt att jag lagt alla 13 ikonerna på en separat flik samt namngett dem i namnhanteraren. Har också skapat en namnrymd åt "Ikoner" med värdet INDIREKT + årtal (fliknamn) samt tabellkolumn (t ex =INDIREKT(2018![Filtyp]) ) men det fungerar inte! Någon som har en Quick-Fix till detta lilla problem?
  14. Tack för svar! Jag har prövat det mesta inklusive de tips du kommer med men utan framgång... När jag gjort föreslagna ändringar så antingen skapas ingen tidstämpel alls eller så skapas en men med dialogrutan "Ogiltigt proceduranrop..." som pop-up!
  15. Hej! Tack för svar. Ja, jag har testat olika varianter inklusive att ta bort "Private"...
  16. Jag har en matrikel där jag har infogat en tidstämpelfunktion som har funkat hyggligt men nu krånglar. Har prövat lite olika varianter men får vid varje uppdatering upp en dialogruta med "Ogiltigt proceduranrop eller argument". (Se bifogad bild.) Det är ett enkelt skript men jag blir inte klok på vad som felas - någon som vet bättre än mig? Bifogar skriptet som txt-fil! VBA Timestamp.txt Infogar texten direkt, förenklar kanske lite: Private Sub Worksheet_Change(ByVal Target As Range) Call Modul1.TaBortSkydd Application.EnableEvents = False ActiveSheet.ListObjects("Tabell2").Range.Select With Selection If Target.Column <= 13 Or Target.Column >= 15 Then Range("N" & Target.row).Value = Date End If End With Application.EnableEvents = True Call Modul1.Skydd End Sub /Mikael63, moderator
  17. Tack för din hjälp! Jag tar som sagt tacksamt emot hjälp som kan lösa detta lilla problem. Även om just nuvarande ändamål kanske inte har så hög prioritet så "samlar" jag på användbara VBA-skript och den vägen försöker lära mig kodning genom att stöta och blöta olika "kvistigheter" som kan uppstå i applicerandet av dessa skript. Du har i detta varit till stor hjälp både nu och tidigare och det ska du ha en eloge för! En liten följdfråga bara: Varför måste skriptet först skapa nya bladflikar i arbetsboken för att sedan exportera till en extern .txt-fil? Känns spontant lite som att gå över ån efter vatten s.a.s.! Jag har som sagt Googlat runt och hittat ett antal mer eller mindre komplicerade varianter som skapar txt-filen direkt. Jag kan dock inte modifiera dessa till just mitt behov då jag inte förstår VBA tillräckligt bra. //Magnus
  18. Jag beskrev nog lite dåligt vad jag var ute efter. Grejen är att jag skulle bara vilja exportera innehållet i kolumn A och J i Tabell2 till en .txt-fil. I det skript exemplet du (så välvilligt) bifogade skapas nya (tomma) bladflikar i min arbetsbok. Jag spårade det till sekvensen "Set sh = ThisWorkbook.Worksheets.Add" och detta upphör om jag kommenterar denna rad. Sedan undrar jag lite över sekvenserna "Me.Cells(1, 10)" då verkar lägga till ett löpnummer i filnamnet som jag inte behöver... Med detta sagt vill jag i alla fall tacka dig storligen för att du tar dig tid med mitt bagatellartade lilla problem!
  19. Jag knotar på och har kommit så långt att det handlade om ett dokumentskydd jag hade aktivt! I ditt exempel hade du kolumnerna i Tabell1 och du kallade dina exportkolumner för "ID" och "Annat". Detta har jag nu ändrat till min "Tabell2" samt mina kolumners namn ("Namn" i A-kolumnen samt "Email" i J-kolumnen) för att anpassa skriptet. Jag har även anpassat filnamn och sökväg för exporten och nu kör skriptet visserligen en export men innehållet i den exporterade txt-filen är oläsligt! (Se bild) Kan detta ha att göra med kolumnhänvisningen i skriptet? Vad syftar tex "Me.Cells(1, 10) + 1", "sh.Cells(1, 1)" och "sh.Cells(1, 2)" på - bör jag ändra dessa cellreferenser också? Export output:
  20. Jepp! Har kopierat direkt från din fil. Jag har Office 2013...
  21. Det var kopplat till ett annat makro... Men detta är den senaste varningen som kommer nu när jag lagt ditt makro under Blad1 och försöker köra det:
  22. Jag Insåg att detta berodde just på att jag lagt det i modul ist.f. i det aktiva bladet...! Men nu får jag istället denna varningsruta:
  23. Hej! Stort tack för ditt förslag men det verkar som om makrot inte fungerar... Får en varning om "Me."-variabeln enligt följande: //Magnus
  24. Hej och tack för svar! Mja, självklart har jag tänkt tanken men jag har designat det hela för andra användare som är "IT-imbeciller" så min tanke var att ha ett makro som sköter det hela utan att användarna ska behöva göra mer än klicka på en knapp...
×
×
  • Skapa nytt...