Excel-VBA-Verwenden von pivot-Tabelle Daten in eine andere Arbeitsmappe

Den folgenden Sub fragt den Benutzer, wählen Sie eine generische Vorlage zu öffnen, dann fragt den Benutzer zum auswählen einer source-Datei (zum füllen der Vorlage). Die source-Datei enthält eine Reihe von Arbeitsblättern und pivot-Tabellen. Die sub wählt dann die Daten aus einer pivot-Tabelle und kopiert ihn in die Vorlage.
Ich muss die Quell-Datei eine variable gegen eine hartcodierte pivot-Tabelle als Quelle bc diesen Titel änderungen basierend auf die Benutzer-Auswahl.

Problem 1: wenn die Daten kopiert werden, es zeigt nur, REF! anstelle der tatsächlichen Daten (selbst wenn die Daten vorhanden ist).

'Open Generic Report to populate with data
Dim GenericFolderLocation As String
MsgBox "Please select the generic porfolio template..."
GenericFolderLocation = "C:\Users\user.name\Desktop"
   ChDrive GenericFolderLocation

  SelectedFile = Application.GetOpenFilename( _
        fileFilter:="Excel Files (*.xls*), *.xls*", MultiSelect:=False)

        Workbooks.Open (SelectedFile)
        Set test = ActiveWorkbook

Dim SourceFolderLocation As String
Dim FileName As String
Dim SourceFile As String
MsgBox "Please select the data source file..."
SourceFolderLocation = "C\Users\user.name\Desktop"
ChDrive SourceFolderLocation
SourceFile = Application.GetOpenFilename( _
    fileFilter:="Excel Files (*.xls*), *.xls*", MultiSelect:=False)

    Workbooks.Open (SourceFile)
    Set wkbk = ActiveWorkbook

    test.Activate

    'Test1
    'Select empty cell in Chart template 
    Range("C28").Select
    'Populate with pivot table data from sourceFile
    ActiveCell.FormulaR1C1 = _
        "=GETPIVOTDATA(""  Value"",'[wkbk]ActCost_PIVOT'!R3C1,""Team"",""Field1"",""Row Descrption"",""Row1"",""Type"",""DataPoint1"")"

    'Repeat for next cell
    Range("C27").Select
    ActiveCell.FormulaR1C1 = _
        "=GETPIVOTDATA(""  Value"",'[wkbk]CRActCost_PIVOT'!R3C1,""Team"",""Field1"",""Row Descrption"",""Row1"",""Type"",""DataPoint2"")"

[Gelöst] Problem 2. Ähnlich wie Problem 1 würde ich mag, um Dinge wie "TypeName" oder "Teamnamen" Variablen. Kann ich einfach deklarieren Sie Sie außerhalb der Sub-wie diese-

    Dim TeamName As String

    Sub()

    TeamName = "Tigers"

    End Sub

Vielen Dank für Ihre Hilfe!

  • Sie sind vorbei-mit "SourceFile" ist es der name einer sub, einer string-variable, und ein workbook-Objekt. Verwenden Sie separate Variablen.
  • Ich änderte den Namen der Sub. Danke für den Tipp! Das sagte ich möchte die Arbeitsmappe Ein, um eine variable "SourceFile", so dass in der pivot-Tabelle code, den ich ziehen kann, aus welchem Quellcode-Dateien der Benutzer ausgewählt hat. Weiter, ich möchte nicht auf hard-code "Eine Arbeitsmappe" in die pivot-Formel, denn es wird nicht immer aufgerufen werden, "Eine Arbeitsmappe"
  • SourceFile sollte ein String sein, nicht eine Variante. Was genau funktioniert nicht für Sie?
  • Habe ich geändert Quelltext in einen String. Das genaue problem ist jetzt: Arbeitsmappe B (d.h. die Diagramm-Datei) füllt. Aber jeder Wert zeigt " #REF! ", selbst wenn es einen Wert in das SourceFile (aka Arbeitsmappe Ein). Ich denke, das hat etwas zu tun mit der variable SourceFile...
  • Bitte, werfen Sie einen Blick auf meine Antwort und nur Dinge tun (= ersetzen von strings mit Variablen) Schritt für Schritt und es wird kein problem sein. In jedem Fall, sich auf eine so komplexe Formel ist eine sehr ineffiziente Umgang mit VBA. Einfache Formeln für spezifische Probleme können akzeptabel sein, aber nicht, wenn VBA-Objekte liefert viel bessere Informationen leicht. Einer der Gründe, sich von "reinen" Excel VBA ist eben halt mit ellenlangen Formeln.
InformationsquelleAutor javaNewb37 | 2013-08-20
Schreibe einen Kommentar