Per VBS auf Excel zugreifen

  • VBScript

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Hintifax.

    Per VBS auf Excel zugreifen

    Hallo

    bin neu hier und weiß nicht genau ob ich im richtigen Tread nun bin, aber mal zu meinem Problem:

    Ich möchte eine Excel datei nach dem Export aus einer Datenbank weiter bearbeiten also Spalten löschen/Arbeitsplätter löschen usw...Weil ich leider die Ausgabe des Files nicht verändern kann, hätte ich mir gedacht ob es nicht mit einem VB-Script lösen könnte (nach dem Export)! Die Datei wird nicht zwingend nach dem Export geöffnet .Leider hab ich nicht wirklich was im I-Net gefunden. Benutze Excel 2010

    Ich hoffe ihr könnt mir helfen oder ein paar Ratschläge geben, vielleicht bin ich auch total auf dem Holzweg! danke im voraus

    mfg Hintifax
    hallo

    danke für den Anfang, aber ich wollte den Code erweitern und zwar das Arbeitsblätter gelöscht sowie Spalten gelöscht werden!

    hier mein Versuch vom Code

    SQL-Abfrage

    1. Set XLS = CreateObject("Excel.Application")
    2. Set WB = XLS.Workbooks.Open ("c:\test\Mappe1.xls")
    3. Set WS = WB.Sheets(1)
    4. XLS.Sheets("MASTER").Select
    5. XLS.ActiveWindow.SelectedSheets.Delete
    6. XLS.Sheets("ADDRESS-1").Select
    7. XLS.Columns("AF:AF").Select
    8. XLS.Selection.Delete


    Also ich möchte das Arbeitsblatt "Master" löschen und beim Arbeitsblatt "Address-1" die Spalte "AF" löschen. Danach soll es in dem .xls Datei von selbst wieder gespeichert werden!!

    Kann mir hierbei noch jemand helfen, da er mir zwar das Script ausführt aber ich keine Fehlermeldung bekomme und das Excel File auch nicht bearbeitet wurde



    Danke für alles

    mfg

    Hintifax
    Hallo



    ok, hab einige Probleme gefunden!! ab den Code mal abgeändert! und erweitert. Hier ein Auszug:



    SQL-Abfrage

    1. Set XLS = CreateObject("Excel.Application")
    2. Set WB = XLS.Workbooks.Open ("c:\test\Mappe1.xls")
    3. Set WS = WB.Sheets(1)
    4. WB.Sheets("ADDRESS-1").Select
    5. WB.Sheets("ADDRESS-1").Name = "ADDRESS"
    6. WB.Sheets("ADDRESS").Select
    7. WB.Sheets("ADDRESS").Move After:=Sheets(10)
    8. WB.Sheets("MASTER").Select
    9. XLS.ActiveWindow.SelectedSheets.Delete
    10. WB.Sheets("DEF_ZONE-1").Select
    11. XLS.ActiveWindow.SelectedSheets.Delete
    12. XLS.ActiveWorkbook.Save
    13. XLS.ActiveWindow.Close
    14. XLS.Application.Quit
    15. Set ExcelSheet = Nothing


    Die umbenannte "Address" befindet sich an der zweiten Stelle von den drei Sheets. Das erste "Master" löscht er mir ohne Probleme, das dritte "DEF_ZONE-1" löscht er mir nicht! Deshalb wollte ich die "Address" an letzter Stelle hinverschieben, könnte ja sein das er mir alles vor "Address" löscht!! Die Spalten und Rows in "Address" werden alles gelöscht wie ich es möchte!! Hier mein Fehler bei der Ausführung des Scriptes:

    SQL-Abfrage

    1. Script: C:\test\Export.vbs
    2. Line: 8
    3. Char: 33
    4. Error: Expected statement
    5. Code: 800A0400
    6. Source: ;Microsoft VBScript compilation error


    Hab verzweifelt im I-net gesucht was ich falsch gemacht habe aber so wies aussieht mache ich die move-Funktion richtig??

    Kann mir bitte jemand helfen??

    danke

    mfg Hintifax

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Hintifax“ () aus folgendem Grund: erweitert

    SELECT ist fast immer unnötig und sollte nicht verwendet werden. :)

    Visual Basic-Quellcode

    1. Set WS = WB.Sheets("ADDRESS-1")
    2. WS.Name = "ADDRESS"
    3. WS.Move After:=Sheets(Sheets.Count)
    4. WB.Sheets("MASTER").Delete
    5. WB.Sheets("DEF_ZONE-1").Delete


    das dritte "DEF_ZONE-1" löscht er mir nicht
    Das hat aber einen Grund.
    Und der hat nichts mit verschieben zu tun.
    Was gibt er denn für einen Fehler aus?
    Kannst du's manuell löschen?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo

    danke

    hab nun alles so angepasst, wie beschrieben! aber jetzt löscht er mir überhaupt keine Sheets mehr leider ohne Fehlermeldung, ich kann aber alles manuell löschen

    hier der gesamte code:

    SQL-Abfrage

    1. Set XLS = CreateObject("Excel.Application")
    2. Set WB = XLS.Workbooks.Open ("c:\test\Mappe1.xls")
    3. Set WS = WB.Sheets("ADDRESS-1")
    4. WS.Name = "ADDRESS"
    5. WB.Sheets("MASTER").Delete
    6. WB.Sheets("DEF_ZONE-1").Delete
    7. XLS.ActiveWorkbook.Save
    8. XLS.ActiveWindow.Close
    9. XLS.Application.Quit
    10. Set ExcelSheet = Nothing




    an was könnte es noch liegen??? Kann ich irgendwie eine Fehlermeldung erzwingen??



    hätte einen anderen Vorschlag wie ich es lösen könnte:

    da er mir die Sheets nicht löscht, die ich nicht benötige, wäre eine Idee die "ADDRESS" einfach in ein neues Excel Workbook zu kopieren, vielleicht wär dies einfacher?? Da ich wirklich den Fehler nicht finde! Dads neue Workbook existiert aber noch nicht!! Aber jetzt stehe ich vor dem nächsten Problem: Wie kann ich das umsetzen??

    danke für die Info

    mfg Hintifax

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Hintifax“ ()