Det foregår på din printer, så hvis du kan få adgang til den....! Prøv at indspille en makro, hvor du udskriver manuelt og skifter bakke, så kan du se i koden, om du kan gøre det via VBA. Måske kan du ikke.
Declare Function PrinterProperties Lib "winspool.drv" Alias "PrinterProperties" (ByVal hwnd As Long, ByVal hPrinter As Long) As Long Declare Function PrintDlg Lib "comdlg32.dll" Alias "PrintDlgA" (pPrintdlg As PRINTDLG) As Long
Da det er individuel fra printer til printer om der er flere tray' eller andre indstillinger findes dette (sansynligvis) ikke i vba. Du kan dog klare problemet med SENDKEYS ex. Sub nyprint() SendKeys "%F P %R %N" End Sub
Dette virker bare ikke, da regnearket skal distributeres til brugere med forskellige printere etc.
Synes godt om
Slettet bruger
26. oktober 2002 - 13:25#8
Du kunne oprette en kopi af din printer under Indstillinger -> Printere der som default printede til en bestemt tray.
Du kan så skifte imellem dem med Application.ActivePrinter = "Printer 1" 'Printer til tray 1 Application.ActivePrinter = "Printer 2" 'Printer til tray 4
Men det er nok ligemeget hvis der er flere forskellige brugere involveret...
Det afhænger også af hvor mange faciliteter printer-driveren stiller til rådighed.
blackadder>> du er nu inde på det helt rigtigt. Alle bruger opretter en printer som hedder det SAMME og som er sat til den rigtige bakke som standard - så skal brobaek kun koncentrere sig om at få siderne ud til printeren, hvilken printer det så er - det er underordnet.
Den holder heller ikke, da man ikke kan oprette nye printere gennem excel. Det er heller ikke hensigtsmæssigt, at man pga. et regneark skal oprette kopier af printere...
Synes godt om
Slettet bruger
26. oktober 2002 - 17:00#11
Jeg har haft en lignende problem, med en Excel makro der ligeledes skulle benyttes af flere brugere.
Min erfaring er, at det du prøver på ikke kan lade sig gøre hverken med VBA eller API kald.
Problemet er, at man ikke kan tage højde for at brugerne har forskellige printere. Der findes (såvidt jeg ved) ikke nogen generel måde at håndtere valg af udskriftsbakke på.
Er det ikke muligt bare at lade brugeren vælge bakke når det er nødvendigt ?
brobaek>> Jeg har kigget i arkivet, fordi jeg vidste jeg var været i denne problematik før, og det blev oz løst med oprettelse af printer med specifik opsætning hos hver bruger (ikke via VBA men manuelt). Jeg kan ikke bidrage med yderligere.
OK - problemet ved at lave brugeren vælge manuelt er, at der så skal vælges for hvert enkelt sheet i workbooken, i dette tilfælde 3-10 gange (og sådanne ting hader brugere)...
Men en nem (måske) løsning er at lave en ActiveX komponent som kan kontrollere printeren. Jeg skal nok ligge koden her hvis dette lykkedes tilfredsstillende...
Det er iøvrigt pudsigt, at noget som er så simpelt i både word og ren vb ikke kan lade sig gøre i Excel... Objectet printer eksisterer slet ikke i excel... Weird at MS ikke har implementeret dette...
Jeg har en ide, men det er op til dig at teste den, da jeg har en gammel printer. I vba under TOOLS/REFERENCES sæt flue ben i microsoft word object library. I din kode kan du nu bruge Options.DefaultTrayID fks. Sub test() Options.DefaultTrayID = wdPrinterManualEnvelopeFeed ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ "HP DeskJet 690C på LPT1:", Collate:=True End Sub
Lukker og slukker - vender tilbage, hvis jeg finder en løsning...
Synes godt om
Ny brugerNybegynder
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.