Thema Datum  Von Nutzer Rating
Antwort
16.11.2020 13:20:55 staeme
NotSolved
16.11.2020 13:26:51 Gast96319
NotSolved
16.11.2020 15:30:25 Gast77581
NotSolved
16.11.2020 16:35:26 Gast26779
NotSolved
16.11.2020 15:43:36 Gast75662
NotSolved
16.11.2020 14:04:23 volti
Solved
16.11.2020 15:41:33 staeme
NotSolved
Blau Einfügen einer Zeile in ein anderes Workbook
17.11.2020 10:35:14 staeme
NotSolved
17.11.2020 11:23:05 volti
NotSolved
17.11.2020 11:59:43 staeme
NotSolved
17.11.2020 12:17:14 volti
NotSolved

Ansicht des Beitrags:
Von:
staeme
Datum:
17.11.2020 10:35:14
Views:
939
Rating: Antwort:
  Ja
Thema:
Einfügen einer Zeile in ein anderes Workbook

Hallo Volti

Dein Code funktioniert wunderbar im Script, das ich gestern gepostet habe. Nun habe ich mir den Tipp eines weiteren Hilfestellers, möglichst keine "select" zu verwenden, zu Herzen genommen und noch weitere Codes optimiert. 

Leider bekomme ich nun erneut eine Fehlermeldung bei einer Code-Zeile, welche ich von dir übernommen habe. 

Folgende Zeile bereitet Probleme: 

WSb.Range("A2").Value = .Range("A2:I" & ZeilMax).Value

hier mein gesamter Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
Sub Finn_Comfort_bestellen()
'
'   Schaltfläche1_Klicken Makro
'
'   Bestimmen wieviele Zeilen bestellt werden müssen
     
    Dim ZeileMax As Long
    Dim Name As Variant
    Dim rngToFill As Range
     
' Letzte Zeile bestimmen
     
    With ThisWorkbook.Sheets("Finn Comfort")
        ZeileMax = .Cells(Rows.Count, 1).End(xlUp).Row
    ' ZeileMax = .UsedRange.Rows.Count 'die letzte Zeile wird ermittelt
    'End With
      
'   Mail inklusive Anhang generieren
 
    Dim SourceWB As Workbook
    Dim DestinWB As Workbook
    Dim SourceWS As Worksheet
    Dim WSb As Worksheet
    Dim OutlookApp As Object
    Dim OutlookMessage As Object
    Dim TempFileName As Variant
    Dim ExternalLinks As Variant
    Dim TempFilePath As String
    Dim FileExtStr As String
    Dim DefaultName As String
    Dim UserAnswer As Long
    Dim x As Long
 
    'Optimize Code
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        Application.DisplayAlerts = False
 
    'Copy only selected sheets into new workbook
        Set SourceWB = ActiveWorkbook
        'Set SourceWS = SourceWB.Worksheets("Finn Comfort")
        'SourceWS.Range("A1:I" & ZeileMax).Copy
        SourceWB.Windows(1).SelectedSheets.Copy
        Set DestinWB = ActiveWorkbook
 
    'Determine Temporary File Path
        TempFilePath = Environ$("temp") & "\"
 
    'Determine Default File Name for InputBox
        'If SourceWB.Saved Then
            'DefaultName = Left(SourceWB.Name, InStrRev(SourceWB.Name, ".") - 1)
        'Else
            'DefaultName = SourceWB.Name
            DefaultName = "Bestellung"
        'End If
 
    'Ask user for a file name
        TempFileName = Application.InputBox("Wie söll dä Aahang heissä?", _
            "File Name", Type:=2, Default:=DefaultName)
     
            If TempFileName = False Then GoTo ExitSub 'Handle if user cancels
   
    'Determine File Extension
        'If SourceWB.Saved = True Then
            'FileExtStr = "." & LCase(Right(SourceWB.Name, Len(SourceWB.Name) - InStrRev(SourceWB.Name, ".", , 1)))
        'Else
            FileExtStr = ".xlsx"
        'End If
 
    'Break External Links
        ExternalLinks = DestinWB.LinkSources(Type:=xlLinkTypeExcelLinks)
 
        'Loop Through each External Link in ActiveWorkbook and Break it
            On Error Resume Next
                For x = 1 To UBound(ExternalLinks)
                    DestinWB.BreakLink Name:=ExternalLinks(x), Type:=xlLinkTypeExcelLinks
                Next x
                On Error GoTo 0
       
    'Save Temporary Workbook
        DestinWB.SaveCopyAs TempFilePath & TempFileName & FileExtStr
 
    'Create Instance of Outlook
        On Error Resume Next
            Set OutlookApp = GetObject(class:="Outlook.Application") 'Handles if Outlook is already open
        Err.Clear
        If OutlookApp Is Nothing Then Set OutlookApp = CreateObject(class:="Outlook.Application") 'If not, open Outlook
     
        If Err.Number = 429 Then
        MsgBox "Outlook could not be found, aborting.", 16, "Outlook Not Found"
        GoTo ExitSub
        End If
        On Error GoTo 0
 
    'Create a new email message
        Set OutlookMessage = OutlookApp.CreateItem(0)
 
    'Create Outlook email with attachment
        On Error Resume Next
            With OutlookMessage
                .To = ""
                .CC = ""
                .BCC = ""
                .Subject = TempFileName
                .Body = "Im Anhang finden Sie die Liste mit unseren Bestellungen" & vbNewLine & vbNewLine & "Orthopädie" & vbNewLine & "Malgaroli & Werne"
                .Attachments.Add TempFilePath & TempFileName & FileExtStr
                .Display
            End With
        On Error GoTo 0
 
    'Close & Delete the temporary file
        DestinWB.Close SaveChanges:=False
        Kill TempFilePath & TempFileName & FileExtStr
 
    'Clear Memory
        Set OutlookMessage = Nothing
        Set OutlookApp = Nothing
   
    'Optimize Code
ExitSub:
  Application.ScreenUpdating = True
  Application.EnableEvents = True
  Application.DisplayAlerts = True
   
     
'   Oben Zeile einfügen in "bestellt" - Tab
    Set WSb = Sheets("Finn Comfort bestellt")
    'Sheets("Finn Comfort bestellt").Select
    WSb.Range("A2").EntireRow.Resize(ZeileMax).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    'Rows("2:" & ZeileMax).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    'WSb.Range("A2:K" & ZeileMax).Font.Bold = False
     
'   zu kopierenden Bereich kopieren in "Finn Comfort"-Tab
    'Sheets("Finn Comfort").Select
    'Range("A2:I" & ZeileMax).Select
    'Selection.Copy
    'Sheets("Finn Comfort bestellt").Select
    'Range("A2:I" & ZeileMax).Select
    'ActiveSheet.Paste
    'Sheets("Finn Comfort").Select
    WSb.Range("A2").Value = .Range("A2:I" & ZeilMax).Value
    .Range("A2:I" & ZeileMax).ClearContents
     
'   Kürzel in "bestellt"-Tab einfügen
     
    Name = InputBox("Wer bist du?", "Sali du.")
    'Sheets("Finn Comfort bestellt").Select
    Set rngToFill = WSb.Range("J2:J" & ZeileMax)
    rngToFill.Value = Name
     
     
'   Aktuelles Datum in Spalte einfügen
 
    Set rngToFill = WSb.Range("K2:K" & ZeileMax)
    rngToFill.Value = Date
         
       
    'gefüllte Zellen auswählen
        'Range("A2", Range("d1").End(xlDown).End(xlToRight)).Select
 
'   Knopf nach oben verschieben
 
    'With Worksheets("Finn Comfort")
     ' With .Shapes("Schaltfläche 1")
      '  .Top = .TopLeftCell.Offset(-(ZeileMax - 1), 0).Top
      'End With
    'End With
    End With
    ActiveWorkbook.Save
         
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
16.11.2020 13:20:55 staeme
NotSolved
16.11.2020 13:26:51 Gast96319
NotSolved
16.11.2020 15:30:25 Gast77581
NotSolved
16.11.2020 16:35:26 Gast26779
NotSolved
16.11.2020 15:43:36 Gast75662
NotSolved
16.11.2020 14:04:23 volti
Solved
16.11.2020 15:41:33 staeme
NotSolved
Blau Einfügen einer Zeile in ein anderes Workbook
17.11.2020 10:35:14 staeme
NotSolved
17.11.2020 11:23:05 volti
NotSolved
17.11.2020 11:59:43 staeme
NotSolved
17.11.2020 12:17:14 volti
NotSolved