Madeleine Posted January 19, 2005 Share Posted January 19, 2005 Hej, i en wordmall har jag skapat ett macro som tar bort ett "autonew"-macro när man skickar iväg det som mail. Mitt problem är att användaren får frågan om den vill spara ändringar i dokumentmallen vid stängning av dokumentet och råkar de då svara "ja" så går det inte att använda mallen fler gånger... Går det på något sätt att kringgå, så att de inte får chansen att svara ja på en sån fråga? Link to comment Share on other sites More sharing options...
MH Posted January 20, 2005 Share Posted January 20, 2005 Vet inte om jag tänker rätt nu, men kan du inte öppna/stänga mallen själv utan att spara? typ Mall.Close SaveChanges:=wdDoNotSaveChanges (eller 0) Ett helt bakvänt exempel, men jag tror själva öppna/stäng principen borde fungera: //eforum.idg.se/viewmsg.asp?EntriesId=574995#658296 Förmodligen tänker jag helt fel här. Kan inte riktigt greppa hur du gör innan. Link to comment Share on other sites More sharing options...
Madeleine Posted January 25, 2005 Author Share Posted January 25, 2005 svårt att förklara. Gör ett försök 1. användaren öppnar en mall och makrot autonew aktiveras automatiskt. 2. när användaren är klar så aktiverar denne själv makrot "send mail", för att i sin tur sända dokumentet till kund. 2. Autonew startas automatiskt och har referenser till en ini.fil. Det gör den även hos kunden, vilket orsakar någon form av körfel eftersom kunden varken skall eller har tillgång till ini-filen. Det är därför som jag vill plocka bort makrot autonew i sendmail makrot och därefter inte spara ändringarna i mallen (som är kvar hos användaren) eftersom den skall användas med makrot autonew även i fortsättningen. Något klarare:-) Link to comment Share on other sites More sharing options...
MH Posted January 26, 2005 Share Posted January 26, 2005 Lite sent svar, men jag känner mig enbart förvirrad... Öppnar din användare mallen som mall? Inte ett nytt dokument baserat på mallen (arkiv->nytt, som dokument)? Om metod 2 används så följer ju inte makron Autonew med dokumentet som skapas utifrån mallen. Eller använder du ett "vanligt" dokument som förlaga/mall? Då har jag svarat uppåt väggarna. Link to comment Share on other sites More sharing options...
Madeleine Posted January 26, 2005 Author Share Posted January 26, 2005 Hej, då är vi två förvirrade :-) Användarna öppnar mallen som ett nytt dokument, via arkiv -> nytt. Det märkliga är att när de sedan stänger dokumentet kommer först frågan om de vill spara dokumentet och sedan om de vill spara ändringarna i mallen... Link to comment Share on other sites More sharing options...
MH Posted January 26, 2005 Share Posted January 26, 2005 Ok, men det betyder väl att du rensar bort Autonew i din mall istället för i "slutkundsdokumentet", eller? Men om "Autonew" bara finns i mallen så skulle slutkundsdokumentet ha varit rent och du skulle inte ha behövt skapa rensningsmakrot... Svarar nej på min egen fråga. Det kan ju vara en helt annan ändring den vill spara, typ ???? Hur pass hemligt är ditt projekt? Blir lite nyfiken på hur du koden för "send mail" ser ut. Dels hur du bestämmer vad som skickas och dels hur själva "Autonew" rensningen ser ut. Annars vet jag inte. Det borde ju finnas en allmän mall-motsvarighet till "fråga om ändringar i normal.dot skall sparas" eller vad det heter. Annars är jag tillbaks till första posten. Dvs att du stänger mallen manuellt utan att spara ändringar när slutkundsdokumentet är skickat. Typ Mall.Close SaveChanges:=wdDoNotSaveChanges (eller 0) Där Mall = ActiveDocument.AttachedTemplate (på något sätt) Borde ju gå ganska smidigt. /M Link to comment Share on other sites More sharing options...
Madeleine Posted January 26, 2005 Author Share Posted January 26, 2005 Koden är inte speciellt hemlig... håller precis på att lära mig så den är väl bara inte speciellt snygg... din lösning att autonew bara finns i mallen låter väldigt intressant Prövade ditt förslag med "Mall.Close SaveChanges:=wdDoNotSaveChanges" men fick det inte att fungera här kommer koden: ******************************************* Sub SendDocumentAsAttachment() Dim bStarted As Boolean 'Dim oOutlookApp As Outlook.Application 'Dim oItem As Outlook.MailItem On Error Resume Next If Len(ActiveDocument.Path) = 0 Then MsgBox "Dokumentet måste sparas först!" Exit Sub End If ' *** Tar bort makrot Autonew *** With ThisDocument.VBProject.VBComponents .Remove .Item("AutoNew") End With ' *** Gör så att verktygsfältet döljs *** blnBar = CommandBars("S1").Visible ' = False On Error Resume Next If blnBar = True Then With CommandBars("S1") .Visible = False .Position = msoBarTop End With End If ' *** Sparar ActiveDocument.Save Set oOutlookApp = GetObject(, "Outlook.Application") If err <> 0 Then Set oOutlookApp = CreateObject("Outlook.Application") bStarted = True End If Set oItem = oOutlookApp.CreateItem(olMailItem) ' *** Hämtar kundens E-postadressadress *** ActiveDocument.Unprotect Password:="" ActiveWindow.ActivePane.View.SeekView = wdSeekFirstPageHeader Selection.HomeKey wdStory Selection.MoveRight wdCell, Count:=33 If txtErepost = "" Then strErepost = " " Else strErepost = txtErepost If Selection.Text <> Chr(13) Then strErepost = Selection Else strErepost = " " ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument ActiveDocument.Protect Password:="", NoReset:=True, Type:= _ wdAllowOnlyFormFields With oItem .To = strErepost .Subject = "Garanti/Retur av produkt" .Attachments.Add ActiveDocument.Path & "\" & ActiveDocument.Name .Display End With Set oItem = Nothing Set oOutlookApp = Nothing End Sub ********************************************** Link to comment Share on other sites More sharing options...
MH Posted January 27, 2005 Share Posted January 27, 2005 Hej, har inte haft tid att tränga in i din kod riktigt. Men du kan väl spara en kopia av din mall och slänga in lite felsökningskod, typ [log] Public Sub AutoNew() MsgBox ("hej hå, AutoNew finns kvar") End Sub Sub SendDocumentAsAttachment() ' *** Tar bort makrot Autonew *** ' Kolla vilket dokument du egentligen tar bort ' autonew ifrån MsgBox ("Tar bort autonew från " & ThisDocument.Name) ' *** Gör så att verktygsfältet döljs *** 'Funderade på om det kan vara den här ändringen som ' sparas i mallen? Vad tror du? MsgBox ("sparar " & ActiveDocument.Name) ' Kolla vilket dokument som är aktivt (det du sparar) Set oOutlookApp = GetObject(, "Outlook.Application") If Err <> 0 Then Set oOutlookApp = CreateObject("Outlook.Application") bStarted = True End If Set oItem = oOutlookApp.CreateItem(olMailItem) ' *** Hämtar kundens E-postadressadress *** strErepost = "xxx@xxx.xx" With oItem .To = strErepost .Subject = "attachar dokument = " & ActiveDocument.Name .Display End With Set oItem = Nothing Set oOutlookApp = Nothing End Sub [/log] Om jag fattar det rätt så är ju "ThisDocument" mallen. Dvs du tar bort autonew från mallen, inte dokumentet (som du hittar med ActiveDocument). Jag Tror nästan att du kan strunta i hela autonew rensningen! Den behövs helt enkelt inte. Vet inte hur du fick med den i slutkundsdokumentet. Kan det vara så att problemet bara fanns i tidigare (felaktig) kod? Typ att du skickade mallen istället för dokumentet? Om du inte får till det så kan du avsluta med manuella stäng och spara/spara inte. ' du måste (tror jag) stänga dokumentet innan du kan stänga mallen. ' Eftersom du sparade dokumentet tidigare så borde det inte behövas ' igen och mallen vill du ju inte spara ActiveDocument.close SaveChanges:=wdDoNotSaveChanges ThisDocument.close SaveChanges:=wdDoNotSaveChanges Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.