VBA SendKeys

Dieses Thema VBA SendKeys im Forum "Microsoft Office Suite" wurde erstellt von Mr_Tom, 2. Sep. 2008.

Thema: VBA SendKeys Moin Moin, ich habe eine Prozedur erstellt, die aus einer Exceltabelle Zahlen kopiert und z.B. in ein geöffnetes...

  1. Moin Moin,

    ich habe eine Prozedur erstellt, die aus einer Exceltabelle Zahlen kopiert und z.B. in ein geöffnetes Editorfenster
    schreibt. Mein Problem dabei, im Excel sind die Werte als Zahlen formatiert. Nach dem SendKeys wird dieses
    jedoch im Editor mit Punkt als Dezimaltrennzeichen dargestellt. Durchlaufe ich diese Schritte per Hand dann funktionierts.

    Jemand eine Idee?

    Vielen Dank
     
  2. Wie sieht denn deine Prozedur aus?

    Gruß Matjes :)
     
  3. Hallo Matjes,

    also das ist der Codeteil, der den Hauptbestandteil meines Problems ausmacht. Die Fenster werden im Vorfeld gezählt und richtig geöffnet.
    Das poste ich dehalb hier nicht.

    Code:
    Sub Start_()
    
    Set wb = ActiveWorkbook: Set ws = wb.Sheets(1)
    Set C = ws.Cells
    
    Pt = ReturnAPPTitle(*editor*)
    
    AppActivate Pt, True
    Application.Wait (Now + TimeValue(00:00:04))
    
    For Zähler = 2 To C(65536, 1).End(xlUp).Row
      Application.Wait (Now + TimeValue(00:00:02))
      Application.SendKeys {DOWN}, True
      Application.SendKeys {HOME}, True
      ws.Range(C(Zähler, 1), C(Zähler, 2)).Copy
      Application.SendKeys %bi, True
    Next Zähler
    End Sub
    
     
  4. Hallo Mr_Tom,

    da scheint zu Tage zu treten, dass Excel ein englisches Programm ist, welches intern die englische dezimal-Darstellung benutzt. An der Stelle scheint das interne Format nicht in das deutsche Format gewandelt zu werden (Bug).

    Umweg muß über eigene Formatierung erfolgen, z.B. wie im nachfolgenden Makro.

    Gruß Matjes :)
    Code:
    Option Explicit
    
    Sub Start_()
    
     Dim ws As Worksheet, wb As Workbook
     Dim z As Long, x As Long
     Dim sText As String
    
     Set wb = ActiveWorkbook
     Set ws = wb.Sheets(1)
     
     On Error Resume Next
     AppActivate Editor, True
     If Err.Number <> 0 Then
      Err.Clear
      MsgBox Editor bitte vor dem Makro-Aufruf öffnen.
      GoTo AUFRAEUMEN
     End If
     On Error GoTo 0
      
     For z = 2 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
      
      If (z Mod 5 = 0) Then->jede 5. Zeile anhalten
       Application.Wait (Now + TimeValue(00:00:01))
      End If
      
     ->entsprechend dem Type formatieren
      If VarType(ws.Cells(z, 1).Value) = vbString Then
       sText = ws.Cells(z, 1).Value
      ElseIf VarType(ws.Cells(z, 1).Value) = vbDouble Then
       sText = Format(ws.Cells(z, 1).Value, 0.00)
      ElseIf VarType(ws.Cells(z, 1).Value) = vbInteger Then
       sText = Format(ws.Cells(z, 1).Value, 0)
      Else
       sText = ws.Cells(z, 1).Value
      End If
       
      For x = 1 To Len(sText)
       Application.SendKeys Mid(sText, x, 1), True
      Next
      Application.SendKeys {RETURN}, True
      
     Next
     
    AUFRAEUMEN:
     Set wb = Nothing: Set ws = Nothing
    End Sub
     
  5. Moin Matjes,

    vielen Dank für die Mühe! Es lag wirklich lediglich an der Formatierung des eingelesenen Wertes.
     
Die Seite wird geladen...

VBA SendKeys - Ähnliche Themen

Forum Datum
SendKeys geht nicht wenn user nicht angemeldet Windows XP Forum 23. Juni 2006