Ändern der pivot-Tabelle mit externer Datenquelle Pfad mit Excel-makro

Arbeite ich an einem Projekt in MS Excel, wo ich mehrere Pivot-Tabellen, Lesen von Daten aus einer tab-getrennten text-Datei mit Spaltennamen in der ersten Zeile (im gleichen Verzeichnis wie die Excel-Datei) mit dem Microsoft Text-Treiber. Ich habe ein problem, wo, wenn ich den text kopieren und Excel-Dateien in ein neues Verzeichnis und versuchen, die Daten zu aktualisieren, es sagt, es kann nicht finden den text-Dateien. Leider scheint es keine Möglichkeit zu sagen, Excel möchte ich die Pfade zu den text-Dateien relativ und nicht absolut. Alle pivot-Tabellen verwenden Sie die gleichen Daten-Verbindung, so dachte ich, sollte es nicht zu anspruchsvoll ist, um ein makro schreiben, das würde die Daten aktualisieren, die Verbindung zu finden, um die korrekte text-Datei und eine Schaltfläche mit dem makro aktualisiert werden würde, die Pfade der Dateien und die Aktualisierung der Daten für mich.

Ich bin nicht allzu vertraut mit VBA und der online-Dokumentation zu sein scheinen ziemlich schlecht, so dass ich nicht in der Lage, damit es funktioniert-ich kann die richtigen Datei-Pfad und kann die Daten aktualisieren, aber ich habe nicht in der Lage, um herauszufinden, wie Sie zum aktualisieren der Verbindung verwenden Sie die neue Datei Weg, aber behalten alle Ihre alten import - /Datei-Analyse-Einstellungen. Ich habe auch versucht, ein makro aufzeichnen, während Sie, aktualisieren Sie manuell die Datenquelle, aber für einige Grund, die gibt mir immer Fehler, die Unterbrechung der Aufnahme, so dass hat nicht geholfen.

Folgenden ist die Verbindungszeichenfolge und den Befehl text, der aktuell von der Verbindung, aber es gibt nichts über Sie, wie zu analysieren/importieren Sie die Daten (die Datei wird als tab-getrennte oder Header in der ersten Spalte, etc), so bin ich nicht sicher, wie Sie Sie, um sicherzustellen, dass die Verbindung hält, die Daten.

Connection String:

DefaultDir=C:/directoryPath;Driver={Microsoft Text Driver (*.txt; *.csv)};
  DriverId=27;FIL=text;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;
  SafeTransactions=0;Threads=3;UserCommitSync=Yes;

Befehl Text:

SELECT *
FROM tableName.txt tableName

Wenn jemand weiß, wie man ein makro schreiben, das wird, aktualisieren Sie den Pfad im Anschluss an die text-Datei bitte teilen Sie den code, oder wenn Sie wissen, wie zu machen einfach nur den relativen Pfad, der zu groß sein würde. Jede Hilfe wäre sehr geschätzt werden!

EDIT:

Ich ve wurde Herumspielen mit es ein bisschen mehr und ich war in der Lage, ändern Sie die Verbindungszeichenfolgen, die den neuen Pfad zu verwenden. Allerdings, wenn ich zum aktualisieren der pivot-Tabelle importiert die Daten als text anstatt zu raten, ob es sollte eine Zahl sein, etc, (obwohl es nicht die Spaltenüberschriften aus der ersten Zeile der text-Datei zumindest). Irgendwelche Ideen auf, wie zu sagen, es zu erraten, die Daten-Typen (oder halten Sie einfach die alt-Daten-Typen)? Der code, den ich verwende jetzt:

Public Sub Test()
    Dim wb As Excel.Workbook
    Dim pc As PivotCache
    Dim path As String

    Set wb = ActiveWorkbook
    path = wb.path

    For Each pc In wb.PivotCaches
        'Debug.Print pc.Connection
        pc.Connection = "ODBC;DBQ=" & path & ";DefaultDir=" & path & ";Driver={Microsoft Text Driver (*.txt; *.csv)};DriverId=27;FIL=text;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes"

    Next
End Sub
  • MsgBox (ThisWorkbook.Path) sollte helfen
  • Was würde das helfen mit?
  • Ich denke, was @enderland ist versucht zu sagen ist, dass, wenn Sie "Thisworkbook".Pfad geben Sie den vollständigen Verzeichnisnamen, wo es lebt (ich denke, für Server wird es jedoch geben Sie ein zugeordnetes Laufwerk-Namen, anstatt den vollständigen UNC-Pfad). Sie kippe nehmen, dass und den Dateinamen, um Ihnen Ihre neue DefaultDir variable. Um auf diese Variablen zugreifen, würde ich vorschlagen, ein makro aufzeichnen und ausführen der Verbindung der text-Datei wieder, damit Sie sehen, wie Excel darauf zugreifen.
  • Ok, aber in meiner Frage oben habe ich gesagt, dass ich bereits wissen, wie man den Pfad. Ich erwähnte auch, dass ich versucht, ein makro aufzeichnen, aber ich habe immer Fehler, beendet das makro aus der Aufzeichnung (ich bin in der Lage zu verbinden, um eine text-Datei, aber wenn ich versuche, die Aufnahme der Prozess nicht mehr funktioniert aus irgendeinem Grund -- vielleicht ist die Aufnahme stört die Verbindung oder so, weiß ich nicht).
  • wow, ich bin sorry about that. Ich ganz übersehen, also die Sätze. Sie könnten versuchen, die Schleife durch Abfragetabellen. Poste ich ein Beispiel.
InformationsquelleAutor scaevity | 2012-08-24
Schreibe einen Kommentar