VBA: getopenfilename in pt-sourcedata einfügen

Bild

Betrifft: VBA: getopenfilename in pt-sourcedata einfügen
von: Peter
Geschrieben am: 06.10.2015 18:39:19

Hallo.
Ich möchte per Makro für ein pt mittels Öffnen-Methode eine andere Excel-Datei (mit Bereich "data") als Datenquelle zuordnen. Mit dem ua VBA-Code sind die Datentypen nicht verträglich.
Bitte und Danke. lg.

Sub OPEN_PROGNOSE()
Dim Fname As Variant
Dim srcdata As String
 
 ' Change drive/directory to MyPath.
    ChDrive MyPath
    ChDir MyPath
   
 ' Open GetOpenFilename with the file filters.
    Fname = Application.GetOpenFilename( _
            Title:="MB Daten aus Segmentbericht auswählen:", _
            MultiSelect:=True)
        
    srcdata = CStr(Fname) & "!data"
    
 ' Pivotquelle ändern
    ActiveSheet.PivotTables("MBDATA").ChangePivotCache ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, SourceData:=srcdata, Version:=xlPivotTableVersion14)
End Sub

Bild

Betrifft: AW: VBA: getopenfilename in pt-sourcedata einfügen
von: Daniel
Geschrieben am: 06.10.2015 18:52:52
Hi
da du das GetOpenfilename mit der Option "Multiselect:=True ausführst, wird dein FName ein eindimensionales Array, welches die Namen aller selektierten Dateien enthält.
das passiert auch dann, wenn du nur eine Datei auswählst.
in der folge dann versuchst du dieses Array wie einen einfache Textvariable zu händeln und das geht nicht, daher der Fehler.
wenn der Anwender nur eine Datei auswählen darf, dann solltst du das Multiselect auf FALSE setzen, dann wird FName ein Textstring.
sollte der Anwender mehrer Dateien auswählen dürfen, müsstest du dich entscheiden, welche der gewählten als srcdata übernommem wird, beispielsweise den ersten:
srcdata = FName(1) & "!data"
oder den letzten:
srcdata = FName(Ubound(FName)) & "!data"
Gruß Daniel

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA: getopenfilename in pt-sourcedata einfügen"