Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1628to1632
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Code Multiselect verursacht Laufzeitfehler 13

VBA Code Multiselect verursacht Laufzeitfehler 13
22.06.2018 10:32:45
Nils
Hallo zusammen,
ich habe eine kurze Frage zu folgendem Code.
Sobald ich die Multiselect Auswahl auf True setze und mehrere Dateien anhängen will, bekomme ich einen Laufzeitfehler 13 'Typen unverträglich' ausgegeben.
Ich weiß wirklich nicht weiter, habe alles mir Bekannte versucht und auch im Internet nichts darüber finden können. Hat hier jemand einen Tipp oder eine Lösung parat?
Vielen Dank schon einmal und ein schönes Wochenende.
PS: Ort der Fehlermeldung ist mit einem Komm. versehen.

Sub sendeMail()
Dim PDF As String
Dim MyOutApp As Object, MyMessage As Object
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\NAME " & Format(Date - 1, "YYYY_MM_DD") & ".pdf", Quality:= _
xlQualityStandard _
, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
:=False
Dateien = Application.GetOpenFilename(FileFilter:="All Files,*.*", _
FilterIndex:=1, _
Title:="Datei wählen", _
ButtonText:="Anhängen", _
MultiSelect:=True)
If Dateien = True Then	'Hier entsteht ein Laufzeitfehler 13
'wenn Multiselect = True;
'Typen nicht verträglich' die Einzelauswahl geht
PDF = ThisWorkbook.Path & "\NAME " & Format(Date - 1, "YYYY_MM_DD") & ".pdf"
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.GetInspector.Display
olOldBody = .HTMLbody
.To =  "Mail"
.CC = "Mail"
.Subject = "Topic"
.HTMLbody = "Inhalt" & olOldBody
.Attachments.Add PDF
.Display
Kill PDF
End With
Set MyOutApp = Nothing
Set MyMessage = Nothing
End If
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code Multiselect verursacht Laufzeitfehler 13
22.06.2018 10:45:25
Daniel
Hi
wenn du mehrere Dateien auswählst, dann ist das Ergebnis von GetOpenFilename ein eindimensionales Array, welches alle ausgewählten Dateien enthält.
Daher kann das Ergebnis auch nie True sein.
Nur wenn du abbrechen drückst, ist das Ergebnis FALSE. Drückst du OK, bekommst du ein Array mit den ausgewählten Dateien
Ein Array als ganzes kann man aber nicht mit einem Einzelwert vergleichen, das führt dann zu diesem Fehler.
Die richtige Prüfung an dieser Stelle wäre der der VariablenTyp.
if VarType(Dateien) = 8204 Then
das 8204 steht hier für Array (8192) mit Variantwerten (12)
drückst du Abbrechen ist FALSE das Ergebnis, Dateien wird eine einfache Variable vom Typ boolean und die hat den VarType 11.
Gruß Daniel
Anzeige
AW: VBA Code Multiselect verursacht Laufzeitfehler 13
22.06.2018 11:52:39
Nils
Hallo Daniel,
vielen Dank für Deine ausführliche Antwort, die Logik dahinter habe ich verstanden.
Leider ändert die Änderung allerdings nichts.
Gruß Nils
AW: VBA Code Multiselect verursacht Laufzeitfehler 13
22.06.2018 14:20:49
Daniel
Hi
was hast du denn geändert und wie sieht deine Änderung aus?
außerdem , um mich der Meinung eines anderen Antworters anzuschließen:
warum fragst du das überhaupt ab?
die Variable wird ja im folgenden nicht verwendet.
solltest du diesen Teil des Codes hier nicht gezeigt haben, musst du auch dort darauf achten, dass bei der Auswahl Multiselect = True der Rückgabewert ein Array ist und kein Einzelwert und somit die Variable anders behandelt werden muss.
dh du kannst nicht einfach den Wert für Multi-Select ändern, du brauchst dann auch immer eine entsprechend angepasste Programmierung.
Gruß Daniel
Anzeige
AW: VBA Code Multiselect verursacht Laufzeitfehler 13
22.06.2018 10:49:58
Nepumuk
Hallo Nils,
teste mal:
Option Explicit

Public Sub sendeMail()
    
    Dim PDF As String, olOldBody As String
    Dim MyOutApp As Object, MyMessage As Object
    Dim Dateien As Variant
    
    PDF = ThisWorkbook.Path & "\NAME " & Format(Date - 1, "YYYY_MM_DD") & ".pdf"
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDF, Quality:=xlQualityStandard, _
        IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
    
    Dateien = Application.GetOpenFilename(FileFilter:="All Files,*.*", _
        FilterIndex:=1, _
        Title:="Datei wählen", _
        ButtonText:="Anhängen", _
        MultiSelect:=True)
    
    If TypeName(Dateien) = "Variant()" Then
        
        Set MyOutApp = CreateObject("Outlook.Application")
        Set MyMessage = MyOutApp.CreateItem(0)
        With MyMessage
            .GetInspector.Display
            olOldBody = .HTMLbody
            .To = "Mail"
            .CC = "Mail"
            .Subject = "Topic"
            .HTMLbody = "Inhalt" & olOldBody
            .Attachments.Add PDF
            .Display
            Kill PDF
        End With
        Set MyOutApp = Nothing
        Set MyMessage = Nothing
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA Code Multiselect verursacht Laufzeitfehler 13
22.06.2018 11:53:37
Nils
Hallo Nepumuk,
leider ändert Dies nichts.
Gruß Nils
AW: VBA Code Multiselect verursacht Laufzeitfehler 13
22.06.2018 11:56:10
Nils
Vielen Dank übrigens für Deine Mühe!
AW: VBA Code Multiselect verursacht Laufzeitfehler 13
22.06.2018 10:51:29
EtoPHG
Hallo,
1. Definiere am Anfang zusätzlich
Dim Dateien, i As Integer

2. Nach dem GetOpenFileName(...
        If IsArray(Dateien) Then
For i = 1 To UBound(Dateien)
Debug.Print Dateien(i)
Next i
Else
Debug.Print "Open Abgebrochen"
End If

Gruess Hansueli
AW: VBA Code Multiselect verursacht Laufzeitfehler 13
22.06.2018 11:54:55
Nils
Hallo Hanseuli,
habe ich umgesetzt und ausprobiert, vielen Dank.
Geholfen hat es jedoch leider nichts.
Gruß Nils
Anzeige
und was soll der Quatsch?
22.06.2018 12:48:21
Rudi
Hallo,
wozu der Auswahldialog, wenn du den Pfad des Anhangs im Code festlegst?
PDF = ThisWorkbook.Path & "\NAME " & Format(Date - 1, "YYYY_MM_DD") & ".pdf"
Sub sendeMail()
Dim PDF As String
Dim MyOutApp As Object, MyMessage As Object
PDF = ThisWorkbook.Path & "\NAME " & Format(Date - 1, "YYYY_MM_DD") & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDF, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.GetInspector.Display
olOldBody = .HTMLbody
.To = "Mail"
.CC = "Mail"
.Subject = "Topic"
.HTMLbody = "Inhalt" & olOldBody
.Attachments.Add PDF
.Display
Kill PDF
End With
Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub
Gruß
Rudi
Anzeige

194 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige