Avatar billede talos Nybegynder
16. september 2003 - 12:59 Der er 35 kommentarer og
1 løsning

Kopier macro fra word

Hej alle,

Jeg sidder lige nu og skal have lavet en macro til udskrift på en printer. Denne knap skal udskrive fra 2 forskellige skuffer på printeren. Der eksisterer allerede en tilsvarende knap i Word og mit spm er derfor følgende:

1) Kan man direkte kopiere en macro fra word til Excel?
2) Hvor/hvordan skal denne macro gemmes så den er standard ved alle fremtidige nye excel dokumenter?

Håber i kan hjælpe mig

På forhånd tak
Anders
Avatar billede aheiss Praktikant
16. september 2003 - 13:10 #1
Svaret er 1) ja og 2) via. xla. fil. Men din makro fra Word virker ikke i excel, så det kan være du ikke er interesseret i en xla. endnu. Se evt.

http://www.eksperten.dk/spm/399803
Avatar billede talos Nybegynder
16. september 2003 - 13:23 #2
Hej igen,

Jeg er langt fra ret skrap til det med macro, hermed poster jeg den macro der er i word, måske du kan fortælle mig hvad jeg skal gøre for at få den til at køre i excel?

Ellers er jeg lidt på den, for fatter ikke helt hvad der sker i den tråd du henviser til :)

Sub HP4000Ny_Side1_2()
    ActivePrinter = "\\BECK\4000Ny"
   
    With ActiveDocument.PageSetup
'      .LineNumbering.Active = False
'      .Orientation = wdOrientPortrait
'      .TopMargin = CentimetersToPoints(3)
'      .BottomMargin = CentimetersToPoints(3)
'      .LeftMargin = CentimetersToPoints(2)
'      .RightMargin = CentimetersToPoints(2)
'      .Gutter = CentimetersToPoints(0)
'      .HeaderDistance = CentimetersToPoints(1.25)
'      .FooterDistance = CentimetersToPoints(1.25)
'      .PageWidth = CentimetersToPoints(21)
'      .PageHeight = CentimetersToPoints(29.7)
        .FirstPageTray = 264
        .OtherPagesTray = 265
'      .SectionStart = wdSectionNewPage
'      .OddAndEvenPagesHeaderFooter = False
'      .DifferentFirstPageHeaderFooter = True
'      .VerticalAlignment = wdAlignVerticalTop
'      .SuppressEndnotes = False
'      .MirrorMargins = False
    End With
   
    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
        Collate:=True, Background:=True, PrintToFile:=False
End Sub
Sub HP4000Ny_Blank()

    ActivePrinter = "\\BECK\4000Ny"
   
    With ActiveDocument.PageSetup
'      .LineNumbering.Active = False
'      .Orientation = wdOrientPortrait
'      .TopMargin = CentimetersToPoints(4.1)
'      .BottomMargin = CentimetersToPoints(2.5)
'      .LeftMargin = CentimetersToPoints(1.5)
'      .RightMargin = CentimetersToPoints(1.5)
'      .Gutter = CentimetersToPoints(0)
'      .HeaderDistance = CentimetersToPoints(1.5)
'      .FooterDistance = CentimetersToPoints(1.5)
'      .PageWidth = CentimetersToPoints(21)
'      .PageHeight = CentimetersToPoints(29.7)
        .FirstPageTray = 263
        .OtherPagesTray = 263
'      .SectionStart = wdSectionNewPage
'      .OddAndEvenPagesHeaderFooter = False
'      .DifferentFirstPageHeaderFooter = True
'      .VerticalAlignment = wdAlignVerticalTop
'      .SuppressEndnotes = False
'      .MirrorMargins = False
    End With
   
    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
        Collate:=True, Background:=True, PrintToFile:=False
End Sub
Avatar billede aheiss Praktikant
16. september 2003 - 13:28 #3
.FirstPageTray = 263
        .OtherPagesTray = 263
Fungerer ikke i excel.
Lige for at være sikker. Du vil trykke på en knap, hvorefter din excel side bliver printet ud fra skuffe a og derefter fra skuffe b. Eller skal man evt. til at starte med vælge skuffe?
Avatar billede talos Nybegynder
16. september 2003 - 13:30 #4
lige nøjagtigt, vil have at der trykkes på en knap hvorefter første side udskrives fra den første bakke, dernæst de følgende sider fra anden bakke.

/Anders
Avatar billede aheiss Praktikant
16. september 2003 - 13:42 #5
Du kan starte med at kopiere alt nedenfor ind i et modul i excel. Så vil "Udskriv" makroen lade dig vælge hvilken skuffe du ønske at printe ud fra. Så kigger jeg lige på et lille sub der kan vælge skuffe 1 til ark 1 og skuffe 2 til resten. I øvrigt er det BAK's kode fra :
http://www.eksperten.dk/spm/399803 (lige for god ordens skyld)
_______________________________________________________
Option Explicit

Private Type PRINTER_DEFAULTS
  pDatatype As Long
  pDevmode As Long
  DesiredAccess As Long
End Type

Private Type PRINTER_INFO_2
  pServerName As Long
  pPrinterName As Long
  pShareName As Long
  pPortName As Long
  pDriverName As Long
  pComment As Long
  pLocation As Long
  pDevmode As Long              ' Pointer to DEVMODE
  pSepFile As Long
  pPrintProcessor As Long
  pDatatype As Long
  pParameters As Long
  pSecurityDescriptor As Long    ' Pointer to SECURITY_DESCRIPTOR
  Attributes As Long
  Priority As Long
  DefaultPriority As Long
  StartTime As Long
  UntilTime As Long
  Status As Long
  cJobs As Long
  AveragePPM As Long
End Type

Private Type DEVMODE
  dmDeviceName As String * 32
  dmSpecVersion As Integer
  dmDriverVersion As Integer
  dmSize As Integer
  dmDriverExtra As Integer
  dmFields As Long
  dmOrientation As Integer
  dmPaperSize As Integer
  dmPaperLength As Integer
  dmPaperWidth As Integer
  dmScale As Integer
  dmCopies As Integer
  dmDefaultSource As Integer
  dmPrintQuality As Integer
  dmColor As Integer
  dmDuplex As Integer
  dmYResolution As Integer
  dmTTOption As Integer
  dmCollate As Integer
  dmFormName As String * 32
  dmUnusedPadding As Integer
  dmBitsPerPel As Integer
  dmPelsWidth As Long
  dmPelsHeight As Long
  dmDisplayFlags As Long
  dmDisplayFrequency As Long
  dmICMMethod As Long
  dmICMIntent As Long
  dmMediaType As Long
  dmDitherType As Long
  dmReserved1 As Long
  dmReserved2 As Long
End Type

Private Const DM_ORIENTATION = &H1
Private Const DM_PAPERSIZE = &H2
Private Const DM_PAPERLENGTH = &H4
Private Const DM_PAPERWIDTH = &H8
Private Const DM_DEFAULTSOURCE = &H200
Private Const DM_PRINTQUALITY = &H400
Private Const DM_COLOR = &H800
Private Const DM_DUPLEX = &H1000

Private Const DM_IN_BUFFER = 8
Private Const DM_OUT_BUFFER = 2
Private Const PRINTER_ACCESS_USE = &H8
Private Const STANDARD_RIGHTS_REQUIRED = &HF0000
Private Const PRINTER_NORMAL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or _
                PRINTER_ACCESS_USE)

Private Const PRINTER_ENUM_CONNECTIONS = &H4
Private Const PRINTER_ENUM_LOCAL = &H2

Private Declare Function ClosePrinter Lib "winspool.drv" _
      (ByVal hPrinter As Long) As Long
Private Declare Function DocumentProperties Lib "winspool.drv" _
      Alias "DocumentPropertiesA" (ByVal hwnd As Long, _
      ByVal hPrinter As Long, ByVal pDeviceName As String, _
      ByVal pDevModeOutput As Long, ByVal pDevModeInput As Long, _
      ByVal fMode As Long) As Long
Private Declare Function GetPrinter Lib "winspool.drv" Alias _
      "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _
      pPrinter As Byte, ByVal cbBuf As Long, pcbNeeded As Long) As Long
Private Declare Function OpenPrinter Lib "winspool.drv" Alias _
      "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, _
      pDefault As PRINTER_DEFAULTS) As Long
Private Declare Function SetPrinter Lib "winspool.drv" Alias _
      "SetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _
      pPrinter As Byte, ByVal Command As Long) As Long
Private Declare Function EnumPrinters Lib "winspool.drv" _
      Alias "EnumPrintersA" _
      (ByVal flags As Long, ByVal name As String, ByVal Level As Long, _
      pPrinterEnum As Long, ByVal cdBuf As Long, pcbNeeded As Long, _
      pcReturned As Long) As Long

Private Declare Function PtrToStr Lib "kernel32" Alias "lstrcpyA" _
      (ByVal RetVal As String, ByVal Ptr As Long) As Long

Private Declare Function StrLen Lib "kernel32" Alias "lstrlenA" _
      (ByVal Ptr As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
      (pDest As Any, pSource As Any, ByVal cbLength As Long)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Declare Function DeviceCapabilities Lib "winspool.drv" _
      Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, _
      ByVal lpPort As String, ByVal iIndex As Long, lpOutput As Any, _
      ByVal dev As Long) As Long


Private Function SetPrinterProperty(ByVal iPropertyType As Long, _
      ByVal iPropertyValue As Long) As Boolean

  'Code adapted from Microsoft KB article Q230743

    Dim hPrinter As Long          'handle for the current printer
    Dim pd As PRINTER_DEFAULTS
    Dim pinfo As PRINTER_INFO_2
    Dim dm As DEVMODE
    Dim sPrinterName As String

    Dim yDevModeData() As Byte        'Byte array to hold contents
                                      'of DEVMODE structure
    Dim yPInfoMemory() As Byte        'Byte array to hold contents
                                      'of PRINTER_INFO_2 structure
    Dim iBytesNeeded As Long
    Dim iRet As Long
    Dim iJunk As Long
    Dim iCount As Long
     
    On Error GoTo cleanup

    'Get the name of the current printer
    sPrinterName = Trim$(Left$(ActivePrinter, _
          InStr(ActivePrinter, " on ")))
     
    pd.DesiredAccess = PRINTER_NORMAL_ACCESS
    iRet = OpenPrinter(sPrinterName, hPrinter, pd)
    If (iRet = 0) Or (hPrinter = 0) Then
      'Can't access current printer. Bail out doing nothing
      Exit Function
    End If

    'Get the size of the DEVMODE structure to be loaded
    iRet = DocumentProperties(0, hPrinter, sPrinterName, 0, 0, 0)
    If (iRet < 0) Then
      'Can't access printer properties.
      GoTo cleanup
    End If

    'Make sure the byte array is large enough
    'Some printer drivers lie about the size of the DEVMODE structure they
    'return, so an extra 100 bytes is provided just in case!
    ReDim yDevModeData(0 To iRet + 100) As Byte
     
    'Load the byte array
    iRet = DocumentProperties(0, hPrinter, sPrinterName, _
                VarPtr(yDevModeData(0)), 0, DM_OUT_BUFFER)
    If (iRet < 0) Then
      GoTo cleanup
    End If

    'Copy the byte array into a structure so it can be manipulated
    Call CopyMemory(dm, yDevModeData(0), Len(dm))

    If dm.dmFields And iPropertyType = 0 Then
      'Wanted property not available. Bail out.
      GoTo cleanup
    End If

    'Set the property to the appropriate value
    Select Case iPropertyType
    Case DM_ORIENTATION
      dm.dmOrientation = iPropertyValue
    Case DM_PAPERSIZE
      dm.dmPaperSize = iPropertyValue
    Case DM_PAPERLENGTH
      dm.dmPaperLength = iPropertyValue
    Case DM_PAPERWIDTH
      dm.dmPaperWidth = iPropertyValue
    Case DM_DEFAULTSOURCE
      dm.dmDefaultSource = iPropertyValue
    Case DM_PRINTQUALITY
      dm.dmPrintQuality = iPropertyValue
    Case DM_COLOR
      dm.dmColor = iPropertyValue
    Case DM_DUPLEX
      dm.dmDuplex = iPropertyValue
    End Select
     
    'Load the structure back into the byte array
    Call CopyMemory(yDevModeData(0), dm, Len(dm))

    'Tell the printer about the new property
    iRet = DocumentProperties(0, hPrinter, sPrinterName, _
          VarPtr(yDevModeData(0)), VarPtr(yDevModeData(0)), _
          DM_IN_BUFFER Or DM_OUT_BUFFER)

    If (iRet < 0) Then
      GoTo cleanup
    End If

    'The code above *ought* to be sufficient to set the property
    'correctly. Unfortunately some brands of Postscript printer don't
    'seem to respond correctly. The following code is used to make
    'sure they also respond correctly.
    Call GetPrinter(hPrinter, 2, 0, 0, iBytesNeeded)
    If (iBytesNeeded = 0) Then
      'Couldn't access shared printer settings
      GoTo cleanup
    End If
     
    'Set byte array large enough for PRINTER_INFO_2 structure
    ReDim yPInfoMemory(0 To iBytesNeeded + 100) As Byte

    'Load the PRINTER_INFO_2 structure into byte array
    iRet = GetPrinter(hPrinter, 2, yPInfoMemory(0), iBytesNeeded, iJunk)
    If (iRet = 0) Then
      'Couldn't access shared printer settings
      GoTo cleanup
    End If

    'Copy byte array into the structured type
    Call CopyMemory(pinfo, yPInfoMemory(0), Len(pinfo))

    'Load the DEVMODE structure with byte array containing
    'the new property value
    pinfo.pDevmode = VarPtr(yDevModeData(0))
     
    'Set security descriptor to null
    pinfo.pSecurityDescriptor = 0
   
    'Copy the PRINTER_INFO_2 structure back into byte array
    Call CopyMemory(yPInfoMemory(0), pinfo, Len(pinfo))

    'Send the new details to the printer
    iRet = SetPrinter(hPrinter, 2, yPInfoMemory(0), 0)

    'Indicate whether it all worked or not!
    SetPrinterProperty = CBool(iRet)

cleanup:
  'Release the printer handle
  If (hPrinter <> 0) Then Call ClosePrinter(hPrinter)
     
  'Flush the message queue. If you don't do this,
  'you can get page fault errors when you try to
  'print a document immediately after setting a printer property.
  For iCount = 1 To 20
      DoEvents
  Next iCount
  End Function

Private Function GetPrinterProperty(ByVal iPropertyType As Long) As Long

  'Code adapted from Microsoft KB article Q230743

  Dim hPrinter As Long
  Dim pd As PRINTER_DEFAULTS
  Dim dm As DEVMODE
  Dim sPrinterName As String

  Dim yDevModeData() As Byte
  Dim iRet As Long
     
  On Error GoTo cleanup
     
  'Get the name of the current printer
  sPrinterName = Trim$(Left$(ActivePrinter, _
        InStr(ActivePrinter, " on ")))
     
  pd.DesiredAccess = PRINTER_NORMAL_ACCESS
     
  'Get the printer handle
  iRet = OpenPrinter(sPrinterName, hPrinter, pd)
  If (iRet = 0) Or (hPrinter = 0) Then
    'Couldn't access the printer
      Exit Function
  End If

  'Find out how many bytes needed for the printer properties
  iRet = DocumentProperties(0, hPrinter, sPrinterName, 0, 0, 0)
  If (iRet < 0) Then
    'Couldn't access printer properties
      GoTo cleanup
  End If

  'Make sure the byte array is large enough, including the
  '100 bytes extra in case the printer driver is lying.
  ReDim yDevModeData(0 To iRet + 100) As Byte
     
  'Load the printer properties into the byte array
  iRet = DocumentProperties(0, hPrinter, sPrinterName, _
              VarPtr(yDevModeData(0)), 0, DM_OUT_BUFFER)
  If (iRet < 0) Then
    'Couldn't access printer properties
    GoTo cleanup
  End If

  'Copy the byte array to the DEVMODE structure
  Call CopyMemory(dm, yDevModeData(0), Len(dm))

  If Not dm.dmFields And iPropertyType = 0 Then
    'Requested property not available on this printer.
    GoTo cleanup
  End If

  'Get the value of the requested property
  Select Case iPropertyType
  Case DM_ORIENTATION
    GetPrinterProperty = dm.dmOrientation
  Case DM_PAPERSIZE
    GetPrinterProperty = dm.dmPaperSize
  Case DM_PAPERLENGTH
    GetPrinterProperty = dm.dmPaperLength
  Case DM_PAPERWIDTH
    GetPrinterProperty = dm.dmPaperWidth
  Case DM_DEFAULTSOURCE
    GetPrinterProperty = dm.dmDefaultSource
  Case DM_PRINTQUALITY
    GetPrinterProperty = dm.dmPrintQuality
  Case DM_COLOR
    GetPrinterProperty = dm.dmColor
  Case DM_DUPLEX
    GetPrinterProperty = dm.dmDuplex
  End Select
     
cleanup:
  'Release the printer handle
  If (hPrinter <> 0) Then Call ClosePrinter(hPrinter)

End Function
Public Function GetPrinterTray()
GetPrinterTray = GetPrinterProperty(DM_DEFAULTSOURCE)
End Function
Public Sub SetPrinterTray(iTray As Long)
    SetPrinterProperty DM_DEFAULTSOURCE, iTray
End Sub
Sub udskriv()
Dim old As Long
old = GetPrinterTray    'gem forrige indstilling
SetPrinterTray InputBox("hvilken skuffe", "indtast skuffe nummer")        '4 betyder manuel fødning
ActiveSheet.PrintOut
SetPrinterTray old      'stil tilbage til forrige indstilling
End Sub
Avatar billede talos Nybegynder
16. september 2003 - 14:10 #6
Det er helt supert, det ville være helt perfekt hvis du kan lave sådan en bandit så man ikke selv skal vælge skuffe hver gang, mange tak.

Hvordan får jeg den lavet til en knap som er standard hver gang jeg starter excel??

MVH
Anders
Avatar billede aheiss Praktikant
16. september 2003 - 14:35 #7
Ja jeg har lidt problemer med at læse hvor mange sider der aktivt skal skrives ud. Denne her starter med at du skriver hvor mange udskriftssider der er i pågældende ark. Derefter skriver den side.1 ud i tray 1 og resten ud i tray 2 ( håber jeg).
_____________________________
Sub udskriv_tray1_2()
Dim antal As Integer
antal = InputBox("Hvor mange sider skal skrives ud", "Antal sider")
Dim old As Long
old = GetPrinterTray    'gem forrige indstilling
SetPrinterTray 1
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1
SetPrinterTray 2
ActiveWindow.SelectedSheets.PrintOut From:=2, To:=antal
SetPrinterTray old      'stil tilbage til forrige indstilling
End Sub
Avatar billede aheiss Praktikant
16. september 2003 - 14:42 #8
Mht. standard knappen.

1. Gem excel filen indeholdende printermakroerne som .xla (excel tilføjelses program)
2. Vælg funktioner /tilføjelsesprogram/ og vælg den xla fil du netop har gemt
3. Højreklik på en eksisterende knap og vælg tilpas
4. Vælg kommandoer / Makroer
5. Drag Drop den brugerdefinereede knap op hvor du vil ha den.
6. Højreklik på den
7. Vælg tildel makro
8. Skriv makronavn (udskrivtray1_2) Du kan ikke vælge den fra listen da den er fra xla filen.

Så skulle den være i vinkel, og vil være der næste gang du starter, hvis du lukker ned normalt.
Avatar billede talos Nybegynder
16. september 2003 - 14:45 #9
der skulle gerne kunne udskrives X antal sider.

1. side på brev papir fra tray 1, resten af siderne på papir fra tray 2.

Tak for vejledningen
Anders
Avatar billede aheiss Praktikant
16. september 2003 - 14:51 #10
Vil det sige at "Sub udskriv_tray1_2()" fungerer bortset fra at du skal skrive tallet X hver gang.

Skal der også vælges brevpapir i tray 1, og A4-papir i tray 2, eller virker det.
Avatar billede talos Nybegynder
16. september 2003 - 15:01 #11
både ja og nej,

Den skriver fint ud, skal bare have den til at skrive ud fra skufferne, lige nu tager den manuelt indsat papir.

Derudover skal jeg skrive hvor mange papirer der er....
Avatar billede aheiss Praktikant
16. september 2003 - 15:17 #12
OK koden virker ikke. Vi prøver lige en anden. Man skal stadig skrive tallet X men skufferne skulle gerne vælges. Som du kan se bruger koden Sendkeys, og derfor behøver den ikke virke hos dig. Den kan du dog tilpasse, ved at starte med lidt af gangen. Ex.
Application.SendKeys "%fu
Application.SendKeys "%fu%e^{PGDN}
Application.SendKeys "%fu%e^{PGDN}%s
men lad os lige se om den ikke skulle køre :
Jeg leder stadig efter den kode der fortaæller mig hvor mange sider der rent faktisk er på sheetet !





Sub udskriv_tray1_2_b()
Application.SendKeys "%fu%e^{PGDN}%smt{TAB}{TAB}~{ESC}", True ' vælger skuffe 1
Application.OnTime Now + TimeValue("00:00:03"), "step2"
End Sub
Sub step2()
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1
Application.SendKeys "%fu%e^{PGDN}%smtt{TAB}{TAB}~{ESC}", True ' vælger skuffe 2
Application.OnTime Now + TimeValue("00:00:03"), "step3"
End Sub
Sub step3()
Dim antal As Integer
antal = InputBox("Hvor mange sider skal skrives ud", "Antal sider")
ActiveWindow.SelectedSheets.PrintOut From:=2, To:=antal
End Sub
Avatar billede aheiss Praktikant
16. september 2003 - 15:20 #13
Inde i hjælp under sendkeys kan du se alle forkortelserne - det er faktisk rimeligt overskueligt.
Avatar billede talos Nybegynder
16. september 2003 - 15:25 #14
skal jeg erstatte hele den anden tekst eller blot det sidste?
Avatar billede aheiss Praktikant
16. september 2003 - 15:27 #15
Det hele, men du kan jo lægge det i et andet modul til at starte med.
Avatar billede talos Nybegynder
16. september 2003 - 15:35 #16
Den tager stadig kun manuel feed.
Avatar billede aheiss Praktikant
16. september 2003 - 15:38 #17
Jeg har fundet ud af at skrive alle aktive sider ud, idet blot sidste argument skulle udelades : Dvs : koden nu ser således ud ( uden nogen inputbox). Håber det virker
____________________________
Sub udskriv_tray1_2_b()
Application.SendKeys "%fu%e^{PGDN}%smt{TAB}{TAB}~{ESC}", True ' vælger skuffe 1
Application.OnTime Now + TimeValue("00:00:05"), "step2"
End Sub
Sub step2()
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1
Application.SendKeys "%fu%e^{PGDN}%smtt{TAB}{TAB}~{ESC}", True ' vælger skuffe 2
Application.OnTime Now + TimeValue("00:00:05"), "step3"
End Sub
Sub step3()
ActiveWindow.SelectedSheets.PrintOut From:=2
End Sub
Avatar billede aheiss Praktikant
16. september 2003 - 15:39 #18
OK så tager vi det stepvis
Hvor stopper denne makro ?
Sub test()
Application.SendKeys "%fu%e^", True ' vælger skuffe 1
End Sub
Avatar billede aheiss Praktikant
16. september 2003 - 15:43 #19
Har du engelsk udgave ?
Avatar billede aheiss Praktikant
16. september 2003 - 15:47 #20
Det virker upåklageligt hos mig nu. Så det er lige med at tilpasse de der sendkeys kommandoer rigtigt.
Avatar billede talos Nybegynder
16. september 2003 - 15:49 #21
Jeg har danske udgave,

stopper i egenskaber for den pågældende printer
Avatar billede aheiss Praktikant
16. september 2003 - 15:52 #22
Denne her skulle gerne vælge tray1, og venter nu kun på ENTER

Sub test()
Application.SendKeys "%fu%e^{PGDN}%smt", True ' vælger skuffe 1
End Sub
Avatar billede talos Nybegynder
16. september 2003 - 15:54 #23
det gør den ikke, den stiller sig samme sted som før i Egenskaber\effekter, men denne gang i kvik-indstillinger står der mt.
Avatar billede aheiss Praktikant
16. september 2003 - 16:05 #24
OK - så er vi da på vej. Jeg ved ikke helt hvor den standser men der skal sendes de samme keys afsted som man vil gøre manuelt. Lad os prøve med denne
her som gerne skulle standse på paper siden, men du er næsten nødt til selv at justere den til. I visual basic hjælp ved F1 på sendkeys ser du alle forkortelserne. Fyld selv på lidt ad gangen. Indtil den er der.

Sub test()
Application.SendKeys "%fu%e^{PGDN}", True ' vælger skuffe 1
End Sub
Avatar billede aheiss Praktikant
16. september 2003 - 16:07 #25
%fu = ALT + f + u  :  Udskriv box
%e  = ALT + e      :  Properties
osv...
Avatar billede talos Nybegynder
16. september 2003 - 16:18 #26
ok, tak for hjælpen, jeg må se om jeg kan finde ud af det
Avatar billede talos Nybegynder
16. september 2003 - 16:22 #27
kan se jeg skal have den til at udskrive fra henholdsvis skuffe 2 og skuffe 3, så må jeg se om jeg kan få det til at virke
Avatar billede talos Nybegynder
16. september 2003 - 16:25 #28
er der nogen forskel på at jeg kører office 97?
Avatar billede aheiss Praktikant
16. september 2003 - 16:25 #29
Hvis du vælger min løsning skal jeg lige have et svar afsted. Ellers glemmer jeg det bare.
Avatar billede aheiss Praktikant
16. september 2003 - 16:26 #30
Ikke til sendkeys (Jeg kører i øvrigt også Office 97). Men det tager altså ikke andet end et par minutter lige at få styr få sendkeys når du lige kommer ind i det.
Avatar billede talos Nybegynder
16. september 2003 - 16:29 #31
jeg kan ikke finde hjælp filen, har du et link til et sted hvor de også står beskrevet?
Avatar billede aheiss Praktikant
16. september 2003 - 16:29 #32
Øjeblik.....
Avatar billede aheiss Praktikant
16. september 2003 - 16:31 #33
Nej- men her har jeg indsat det hele :

TILBAGE    {BACKSPACE} eller {BS}
BREAK    {BREAK}
CAPS LOCK    {CAPSLOCK}
CLEAR    {CLEAR}
DELETE eller DEL    {DELETE} eller {DEL}
PIL NED    {DOWN}
END    {END}
NUM ENTER    {ENTER}
ENTER    ~ (tilde)
ESC    {ESCAPE} eller {ESC}
HELP    {HELP}
HOME    {HOME}
INS    {INSERT}
VENSTRE PIL    {LEFT}
NUM LOCK    {NUMLOCK}
PGDN    {PGDN}
PGUP    {PGUP}
RETUR    {RETURN}
HØJRE PIL    {RIGHT}
SCROLL LOCK    {SCROLLLOCK}
TAB    {TAB}
PIL OP    {UP}
F1 til og med F15    {F1} til og med {F15}
En enkelt tast kan kombineres med SKIFT og/eller CTRL og/eller ALT. Disse tastkombinationer skrives som vist i nedenstående tabel..

Hvis du vil kombinere med    Skal du skrive følgende foran tasten
SKIFT    + (plustegn)
CTRL    ^ (cirkumfleks)
ALT    % (procenttegn)
Avatar billede talos Nybegynder
16. september 2003 - 16:37 #34
mange tak, jeg roder selv lidt med det, du har været yderst hjælpsom... Tak
Avatar billede bak Forsker
16. september 2003 - 20:48 #35
Her er et eksempel på  http://tommy.bak.homepage.dk/printerindstilling.xls

Fordi der er en del, der har spurgt om hvordan man sætter de printerinstillinger excel ikke selv kan, har jeg lavet et klassemodul, lige til at indsætte/kopiere i regneark i vba.
bla. Tray (bakke), Duplex, Colormode og et par andre

Man kan så kalde sine nye printerfunktioner ret nemt. (se eksemplerne)
x.SetTray 264  'manuel fødning
Det svære er at finde de rigtige tal, der svarer til det man ønsker.
På min printer giver Settray 4 manuel fødning og settray 273 automatisk.
På HP4000 kan man af din kode se at der skal bruges SetTray 264 for manuel og 265 for Bakke.

Det er så noget jeg engang må arbejde videre på :-)

Jeg har også lavet dit som eksempel, så prøv lige at teste
Avatar billede talos Nybegynder
17. september 2003 - 12:29 #36
Hej Bak,

Jeg er ikke helt sikker på hvad jeg skal gøre med den fil, håber du eller en anden kan hjælpe mig

/Anders
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester