Just nu i M3-nätverket
Jump to content

Search the Community

Showing results for tags 'VBA'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Datorhårdvara
    • Bildskärmar
    • Bärbara datorer
    • Grafikkort
    • Hårddiskar & Lagringsmedia
    • Ljudkort
    • Mac-hårdvara
    • Processorer, moderkort & minnen
    • Retro - datornostalgi
    • Skrivare
    • TV-kort
    • Hårdvara – övrigt
    • Arkiverat
  • Film, foto & bilder
    • Bildredigering
    • Film- och Videoredigering
    • Kameror
    • Mediaspelare – Media Player m fl
  • Internet & nätverk
    • Epostprogram
    • Internetuppkoppling
    • IP-telefoni
    • Nätverket - hårdvara
    • Nätverket - programvara
    • Surftips
    • Webbläsare
    • Chattprogram - ICQ, MSN m fl
    • Internet – övrigt t ex webbplatser
    • Driftstörningar hos operatörer, internet etc
  • Ljud och Musik
    • Ljudformat (mp3, aac, ogg m fl)
    • Musikskapande på datorn
    • Ljud & Musik – övrigt
  • Operativsystem
    • Windows 11
    • Windows 10
    • Windows 8 & 8.1
    • Windows 7
    • Windows Vista
    • Windows XP
    • Windows 95/98/ME/NT/2000
    • Windows Server
    • Linux & Unix
    • Mac OS X & Classic
    • Operativsystem - övriga
    • Arkiverade Windows-trådar
  • Program
    • CD/DVD-bränning
    • Kalkylprogram - Excel m fl
    • Mac-program
    • Ordbehandling - Word m fl
    • Presentation – PowerPoint m fl
    • Print - om trycksaker
    • Program - övriga
  • Spel
    • Datorspel
    • Konsoler & konsolspel
  • Säkerhet
    • Brandväggar
    • Skräppost
    • Virus, skadliga program & botemedel
    • Säkerhet - övrigt
  • Hemelektronik
    • Hemmabio/HTPC
    • DVD & Blu-ray
    • El & övrig hemelektronik
  • Mobilt
    • Surfplattor
    • Mobiltelefoner
    • Bärbart Ljud/Mp3-spelare
    • GPS
    • Handdatorer
    • Mobilt – andra sorters mobila enheter
  • Tips inför köpet
    • Köpa/Bygga dator
    • Köpa datortillbehör och komponenter
    • Köpa kamera
    • Köpa gps
    • Köpa internetabonnemang
    • Köpa IP-telefoni och fast telefoni
    • Köpa mobila enheter
    • Köpa nätverksutrustning
    • Köpa/Bestämma program
    • Köpa tv, hemmabio och mediacenter
  • System- och webbutveckling
    • Databaser
    • Systemutveckling
    • Webbutveckling
  • Eforum
    • Diskutera Eforum
    • Buggrapporter och önskemål om Eforum
    • PC för Alla
    • Arkiverat: Smart-forumet
  • Övrigt
    • Avreagera dig!
    • Ekonomi
    • Guider och artiklar
    • Juridik
    • Karriär & Utbildning
    • Matematik & naturvetenskap
    • På konsumentens sida
    • Språkfrågor
    • Öppet forum! Ordet är fritt ...

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Found 11 results

  1. Hej i forumet! Håller på med ett litet (förmodligen totalt meningslöst) projekt där jag skapar en korsordshjälp i Excel. Men nu sitter jag här och har i vanlig ordning trasslat in mig i VBA-kod som bara genererar felsvar! Verktyget jag skapat består av två fält med rutnät. I det högra fältet (Datafältet) är det meningen att man ska fylla i de numrerade rutorna från ett krypto. Detta fält speglas sedan i det vänstra fältet (Översiktsfältet) där man kan se resultatet. Det högra fältets numrering är kopplat till en bokstavskolumn som finns emellan de två övriga. Bokstavskolumnen innehåller upp numrerade celler från 1 - 25 som man successivt fyller i. Det vänstra fältet är kopplat till både Bokstavsfältet och datafältet via bl a en LETARAD-funktion. Så allt fungerade perfekt till dess jag kom på att olika krypton är ju olika stora varför jag har via småstölder från diverse webbsidor satt mig före att göra detta dynamiskt med VBA-proceduren Resize som hämtar info från ett UserForm där man ska fylla i önskat värde (Rad & Kolumn antal). Har lyckats få Excel att hämta värden från formuläret men när jag sedan kommer till själva "Resize:n" så tar det stopp där jag bara får en dialogruta med "Körfel 1004: Program- eller Objektdefinierat fel". Har prövat mig fram men nu har det helt tagit stopp! Finns det någon vänlig själ därute som kan bibringa lite klarhet i vad jag gör för fel? Bifogar Bild samt själva Excelfilen (Zippad) här! //Magnus Krypto.zip
  2. Hej i forumet! Har tidigare ropat på hjälp med funktionen "mail-merge" i Excel men själv lyckats lösa de problemen. Det problem jag nu adresserar forumet med verkar lite knepigare och jag behöver få hjälp om det finns någon annan som har haft liknande problem och löst det. BAKGRUND: Har en databas jag gjort i Excel där jag behöver kunna skriva ut etiketter i en Word-mall som jag anropar med mail-merge i ett VBA makro. Både Excel-filen och Word mallen ligger i en mapp centralt på en nätverksplats. Excel-filen är utformad så att den sparas automatiskt på nätverket men också med en kopia lokalt på användarens HD. Meningen är att man ska arbeta på den lokala kopian och att den sedan uppdaterar på nätverket. Detta för att säkerställa att arbetsboken inte blockeras av en användare samt att det ska gå att jobba med databasen även i utrymmen där det inte finns WiFi. Det innebär alltså att man ska kunna anropa Word-dokumentet från BÅDE filen på nätverket OCH från den lokala kopian vid behov, varför sökvägarna måste vara relativa. PROBLEMET: När jag kör koden och kommer till själva mail-merge sekvensen ger Excel felsvar att strängen innehåller fler än 255 tecken! Varför sker detta? Har testat både att ha alla mail-merge argument utskrivna i sekvensen samt, som i detta fall, att ange argumenten i variabler ─ utan framgång! Har sökt med ljus och lykta efter svar på webben men det verkar inte som någon har ett bra svar att ge hur man kan komma runt detta problem! Skulle det kunna lösas med en systemfunktion eller ett makro som tvingar Excel att skippa denna begränsning? Är min VBA felaktig på något sätt eller är detta en begränsning i Excel som inte går att åtgärda? Den enkla lösningen är ju att lägga all kopplings-kod i Word-mallen som körs när man öppnar dokumentet (vilket jag f.ö också har prövat) men då måste sökvägen vara absolut vilket inte funkar om man ska kunna etikettera från olika källor. Bifogar även en kopia på makrot jag har problem med. Med hopp om svar från forumet //Magnus
  3. Hej, får inte följande att fungera, tänkte att jag säkert gjort ett enkelt fel varvid jag ställer frågan här. Använder följande kod (eller, ja, det var ursprungligen en del av en större loop, men jag har försökt få det att fungera och har minskat ned så långt som möjligt) för att exportera givna diagram till en ppt. Någonstans på vägen har jag lyckats snurra till det varvid allt fallerar numera. Microsoft Powerpoint Libary är aktivt Sub ToMonthly() Dim PP As PowerPoint.Application Dim PPPres As PowerPoint.Presentation Dim PPSlide As PowerPoint.Slide Dim SlideTitle As String Dim shp As Object Dim strPP As String strPP = ThisWorkbook.Path & "\" & "2020board.pptx" Set PP = New PowerPoint.Application Set PPPres = PP.Presentations.Open(strPP) PP.Visible = True Sheets("Utfall").Chart("Diagram 3").CopyPicture _ Appearance:=xlScreen, Format:=xlPicture PPSlide.Shapes.Paste.Select Set shp = PP.ActiveWindow.Selection.ShapeRange shp.Height = 600 shp.Width = 600 With PPPres.PageSetup shp.Left = (.SlideWidth / 2) - (shp.Width / 2) shp.Top = (.SlideHeight / 2) - (shp.Height / 2) End With PP.Activate Set PPSlide = Nothing End Sub
  4. Jag är säker på att detta är möjligt, bara det att jag inte är kapabel att förstå… Skall se om jag kan beskriva vad jag är ute efter ordentligt. Jag önskar presentera data från ett exeldokument och har en massa härliga formler som gör merparten jobbet åt mig efter att importen från den externa datan i sin tur gjorts. Nu till problemet. Jag skulle under summeringar och liknade i ”Presentation” vilja loopa ut resultaten som uppfyller ett visst antal villkor och lägga till det som nya rader. Det är okänt antal rader var gång, från 0-ca 150st. Antalet kolumner är kända. Datan är samlade i en flik ”Data” Dvs… Jag skulle vilja få fram följande: Rubrik | Summering1 | Summering2| Summering3| - Löst del. Data!Dx | Data!Ex| Data!Fx| Data!Kx Data!Dx | Data!Ex| Data!Fx| Data!Kx Data!Dx | Data!Ex| Data!Fx| Data!Kx x för okänd rad som uppfyller tre villkor, Datum from, Datum tom, samt ett fritextvärde, där dessa rader enl. ovan är okänt antal. Hitintills har alla försök slutat med kaos, likt de flesta VBA försök jag gör, varvid jag inte ens har någon vettig kod att börja med. Alla tips är välkomna, och det behöver inte vara en VBA-lösning, bara jag som misstänker att det är dit jag skall vända mig.
  5. Hallå i forumet! Har tidigare adresserat detta forum angående problem med kopplad utskrift av db till Word och trodde först jag hittat svaret. Men efter månader av petande och sökande i så gott som det mesta som skrivits om mailmerge har jag fortfarande problem, om än ett par nivåer upp i kunskapshierarkin! Har samplat ihop ett VBA-skript från olika källor och som jag har modellerat om lite efter egna behov (Se bifogad fil "MailMerge.txt") och använder tillsammans med den databas jag skapat i Excel med relativt stort omfång (ca 8100 poster). Med denna vill jag via VBA koppla en etikettutskrift-funktion där ett av tre för-preppade Worddokument (Etiketter1, 2, 3.docm) öppnas med uppdaterad etikett-data beroende på mellan vilka årtal posterna har. Jag har tre perioder där villkoren är: (Före 1994), (Efter 1993 och Före 2013) samt (Efter 2012) som jag har angett två konstanter som får agera brytpunkter (1994 och 2012). Har som sagt prövat det mesta men har problem med kopplingen som genererar fel svar (se bif. bild "Dialog1.jpg")! Någon som kan se var felet ligger i bifogad kopia av VBA? MailMergeVBA.txt
  6. 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!
  7. 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...
  8. 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
  9. Jag har en medlemsmatrikel på ett Excel-ark där jag behöver en funktion (ett Makro) som kan exportera medlemmars namn tillsammans med respektive epost-adress till en text-fil. Har kollat runt men inga exempel jag stött på verkar fungera så jag undrar nu om det finns någon vänlig själ som kan hjälpa mig? Jag vill kunna exportera innehållet i kolumn "A" (Namn) och kolumn "J" (E-postadress) men bara från de rader där medlemmen har en epostadress. Utdata på textfilen bör vara tabbavgränsat men det är inget absolut måste... Pls help...
  10. Hej, jag har x antal flikar där jag har olika färgscheman på kolumnerna. Jag tycker det är rörigt att behöva gå igenom varje enskild flik för att få fram dessa. Min tanke är att jag har gjort en summeringsflik (blad1) som har Variabler i y-led och fliknamn i x-led. Jag har försökt anpassa denna koden men får att att indexet är utanför intervall. Sub WorksheetLoop() Dim WS_Count As Integer Dim I As Integer ' Set WS_Count equal to the number of worksheets in the active ' workbook. WS_Count = ActiveWorkbook.Worksheets.Count ' Begin the loop. For I = 2 To WS_Count Worksheets("Blad" & I).Range("A2:A31").Interior.Color = Worksheets("Blad1").Range("B2:B31").Interior.Color Next I End Sub Jag har fortfarande inte löst hur jag skall göra för att ändra rangen för andra Range satsen, då den skall även skall stega ett steg per iteration. //Fredrik
  11. Hej! Har nu suttit och dammsugit webben efter lättbegripliga exempel på hur man skapar en mall i Word som uppdateras med vba-formulär utan någon större framgång. Är inte bra alls på vba och söker efter ett konkret exempel på kodsnuttar att använda för att designa en dokumentmall där en användare som ska skapa ett nytt dokument först får upp en dialogruta där rubrik, underrubrik, författare och datum matas in och att sedan mallen öppnar med dessa värden ifyllda på rätt ställen i mallen. Jag har fattat så pass att detta detta görs bäst med vba-kod som kopplas mot bokmärken i dokumentet. Kom så långt att jag designade ett formulär i VBA-editorn men når inte ända fram med kodningen mot bokmärkena. Se bifogad bild. Anybody?
×
×
  • Create New...