Freagles: Datenanbindung von Excel-Dateien

Hallo,

vielleicht kann mir einer helfen.

Ich möchte eine Abfrage zu einer Excel Datei durchführen. Wie ich das mit einer "txt" Datei erreiche weiß ich. Aber wie schaffe ich das mit einer excel-Daei ohne dass ich diese umwandeln muß. Wie ist z.b. das Feldtrennzeichen für excel?

Wäre echt klasse wenn mir jemand helfen könnte

  1. Hallo

    Ich möchte eine Abfrage zu einer Excel Datei durchführen.

    Ein wenig präzisere Infos wären hilfreich: Was willst du genau? Welche (server-seitige) Technik?

    MfG

    Tom2

    1. Hallo

      Ich möchte eine Abfrage zu einer Excel Datei durchführen.

      Ein wenig präzisere Infos wären hilfreich: Was willst du genau? Welche (server-seitige) Technik?

      MfG

      Tom2

      Eigentlich genau das selbe wie auf Seite:
      http://selfhtml.teamone.de/dhtml/modelle/datenanbindung.htm#durchsuchbar

      Nur das ich eben eien Excel-Datei habe.

      1. Moin Freagles,

        Eigentlich genau das selbe wie auf Seite:
        http://selfhtml.teamone.de/dhtml/modelle/datenanbindung.htm#durchsuchbar

        Nur das ich eben eien Excel-Datei habe.

        ich schätze, du wirst nicht direkt auf die Excel-Datei zugreifen können (wahrscheinlich gibt es da von Microsoft zwar ein passendes ActiveX-Control, aber ob das bei allen deinen Besuchern installiert ist...?)

        Du kannst die Datei aber von Excel aus einfach als CSV-Datei speichern, dann hast mit zwei oder drei Mausklicks eine Textdatei, in der die Daten durch ein Semikolon getrennt sind und die du für deine HTML-Seite benutzen kannst.

        Aber: die Datenanbindung funktioniert eben nur im Internet Explorer, du schließt also alle Netscapes, Mozillas, Operas und wie sie alle heissen mögen aus. Empfehlen kann ich eine solche Lösung nur für ein Intranet, wenn du dir sicher sein kannst, dass jeder den IE nutzt...

        Viele Grüße aus Bochum
        Dirk

        1. Moin Freagles,

          Eigentlich genau das selbe wie auf Seite:
          http://selfhtml.teamone.de/dhtml/modelle/datenanbindung.htm#durchsuchbar

          Nur das ich eben eien Excel-Datei habe.

          ich schätze, du wirst nicht direkt auf die Excel-Datei zugreifen können (wahrscheinlich gibt es da von Microsoft zwar ein passendes ActiveX-Control, aber ob das bei allen deinen Besuchern installiert ist...?)

          Du kannst die Datei aber von Excel aus einfach als CSV-Datei speichern, dann hast mit zwei oder drei Mausklicks eine Textdatei, in der die Daten durch ein Semikolon getrennt sind und die du für deine HTML-Seite benutzen kannst.

          Aber: die Datenanbindung funktioniert eben nur im Internet Explorer, du schließt also alle Netscapes, Mozillas, Operas und wie sie alle heissen mögen aus. Empfehlen kann ich eine solche Lösung nur für ein Intranet, wenn du dir sicher sein kannst, dass jeder den IE nutzt...

          Viele Grüße aus Bochum
          Dirk

          Danke, für Deine Antwort.

          Ich habe die Excel Datei schon mal umgewandelt in eine CSV-datei, du hast recht, das funktioniert,  es wäre aber wichtig das es eben auch mit einer excel-Datei gehen würde, da diese ich immer wieder ändert. Bei den Besuchern der Seite kann ich von ausgehen, dass diese nur den IE benutzen.

          1. ReMoin Freagles,

            Ich habe die Excel Datei schon mal umgewandelt in eine CSV-datei, du hast recht, das funktioniert,  es wäre aber wichtig das es eben auch mit einer excel-Datei gehen würde, da diese ich immer wieder ändert. Bei den Besuchern der Seite kann ich von ausgehen, dass diese nur den IE benutzen.

            da hilft dir doch ein kleines Excel-Makro, das jedes Mal, wenn du die Datei speicherst auch die CSV-Datei automatisch mitspeichert...

            Hier isses ;-):

            Option Explicit

            Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
                Dim alt As Workbook
                Dim neu As Workbook

            Application.DisplayAlerts = False
                Set alt = ActiveWorkbook
                Set neu = Workbooks.Add
                alt.Activate
            ' Hier den Namen der Tabelle eintragen, deren Daten du speichern willst
                Sheets("Tabelle1").Select
                Cells.Select
                Selection.Copy
                Range("A1").Select
                neu.Activate
                Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
                    , Transpose:=False
                Range("A1").Select
                Application.CutCopyMode = False
            ' Hier den Pfad und Dateinamen der CSV-Datei eintragen
                ActiveWorkbook.SaveAs FileName:= _
                    "C:\DeinPfad\DeinName.csv", FileFormat _
                    :=xlCSV, CreateBackup:=False
                neu.Close False
                Range("A1").Select

            Set neu = Nothing
                Set alt = Nothing
            End Sub

            Du musst jetzt einfach nur diesen Code kopieren, deine Excel-Datei öffnen und mit [Alt]+[F11] in den VBA-Editor wechseln. Dort öffnest du im Projekt-Explorer (in der Regel oben links im Fenster) jeweils durch Doppelklick den Bereich "VBAProject (DeinName.xls)" / "Microsoft Excel Objekte" / "DieseArbeitsmappe" und fügst den Code dort ein. In den beiden Zeilen, die den Kommentaren folgen musst du noch die Namen des Tabellenblatts und der CSV-Datei anpassen und schon klappt's auch mit dem Nachbarn ;-)

            Viele Grüße aus Bochum
            Dirk

            1. Hallo Dirk,

              kannst Du mir verraten, wie ich Excel 97 _innerhalb_eines_Makros_ dazu bringe,
              CSV mit Semikola anstatt mit Kommata getrennt zu speichern?
              Daran bin ich in der Vergangenheit immer verzweifelt...

              Danke im Voraus & schönen Gruß aus Bilk

              Rainer

              1. Moin Rainer,

                kannst Du mir verraten, wie ich Excel 97 _innerhalb_eines_Makros_ dazu bringe,
                CSV mit Semikola anstatt mit Kommata getrennt zu speichern?
                Daran bin ich in der Vergangenheit immer verzweifelt...

                daran bin ich ebenfalls verzweifelt...

                Einzige mir bekannte Möglichkeit ist, die Datei mit sequentiell mit print#-Befehlen zu schreiben, ein Beispiel dazu findest du z.B. unter http://www.excel-cd.de/mailing/019198h.htm.

                Viele Grüße aus Bochum
                Dirk

                1. Hallo Dirk

                  Einzige mir bekannte Möglichkeit ist, die Datei mit sequentiell mit print#-Befehlen zu schreiben, ein Beispiel dazu findest du z.B. unter http://www.excel-cd.de/mailing/019198h.htm.

                  Danke, werd's mal probieren

                  Viele Grüße aus Bilk

                  Rainer

            2. ReMoin Freagles,

              Ich habe die Excel Datei schon mal umgewandelt in eine CSV-datei, du hast recht, das funktioniert,  es wäre aber wichtig das es eben auch mit einer excel-Datei gehen würde, da diese ich immer wieder ändert. Bei den Besuchern der Seite kann ich von ausgehen, dass diese nur den IE benutzen.

              da hilft dir doch ein kleines Excel-Makro, das jedes Mal, wenn du die Datei speicherst auch die CSV-Datei automatisch mitspeichert...

              End Sub

              Du musst jetzt einfach nur diesen Code kopieren, deine Excel-Datei öffnen und mit [Alt]+[F11] in den VBA-Editor wechseln. Dort öffnest du im Projekt-Explorer (in der Regel oben links im Fenster) jeweils durch Doppelklick den Bereich "VBAProject (DeinName.xls)" / "Microsoft Excel Objekte" / "DieseArbeitsmappe" und fügst den Code dort ein. In den beiden Zeilen, die den Kommentaren folgen musst du noch die Namen des Tabellenblatts und der CSV-Datei anpassen und schon klappt's auch mit dem Nachbarn ;-)

              Viele Grüße aus Bochum
              Dirk

              Danke schön,

              Es funktioniert leider nicht richtig sauber, zuviele Freizeichen bzw.Leerzeichen sind zwischen drin. und somit sieht die Tabelle nicht mehr sauber aus, ich muß Sie halt noch per Hand Nacharbeiten und genau das wollte ich eben verhindern, wenn mann direkt auf die Excel-Tabelle zugreifen kann---- Und das geht wohl nicht?