Mit VB6 in ExcelDatei suchen ?

Moin,
habe schon gesucht aber nix passendes gefunden.
Ich würde gern mit einem kleinen Programm in einer Excel Datei eine Zeile Suchen ohne Excel starten zu müssen. Ist das Möglich ?
und wie müsste das aussehen?

mfg Jonny

Hi Jonny,

was verstehst du unter „ohne Excel starten zu müssen“. Reicht es, wenn der Nutzer von einer laufenden Excel-Instanz nichts mitkriegt oder soll tatsächlich keine geöffnet werden?

Ersteres ist nämlich leichter zu realisieren, da du mit VB eine Excel-Instanz im Hintergrund öffnen, damit arbeiten und diese wieder schließen kannst.

Für die zweite Möglichkeit könnte ich mir eigentlich nur eine spezielle Bibliothek vorstellen, die den Zugriff auf die Excel-Datei übernimmt. Damit habe ich aber keinerlei Erfahrung.

Viele Grüße,
Daniel

Hi Daniel,

Mal ein Beispiel:
Ich habe in Excel eine Telefonnummern Liste, möchte aber ein kleines Programm schreiben welches mir anhand des Nachnamens die Telefonnummer raussucht. Sicherlich geht das mit einem VB Script in Excel leichter, ich möchte das Suchfeld aber dauerhaft klein auf dem Desktop geöffnet lassen und nicht immer mit TASK zum programm switchen bzw den ganzen tag Excel geöffnet lassen.

mfg joe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Joe,

dafür sollte eigentlich was in der Art reichen, das nutzt zwar Excel, aber du siehst es nicht und musst auch nicht dorthin wechsel. Das einzige, auf was du achten solltest, ist das vor jedem Suchvorgang mit deinem Tool geprüft werden sollte, ob die erstellte Excel-Instanz noch da ist. Denn der Explorer hat die schlechte Angewohnheit, sich diese Excelinstanz zu krallen, wenn du eine Excel-Datei doppelklickst. Wenn du die Instanz dann zumachst, kuckt dein Tool in die Röhre, wenn du nicht vorher prüfst und ggf. wieder eine Instanz erstellst.

Hier der Code, einfach an die passende Stelle kopieren und probieren:

dim ExApp As Excel.Application
dim ExWb As Workbook

On Error Resume Next
Const Err\_LäuftNicht As Long = 429
Set ExApp = GetObject(, "Excel.Application") 
If Err = Err\_LäuftNicht Then Set ExApp = New Excel.Application 'ggf. neu starten
If ExApp Is Nothing Then
 MsgBox "Keine Verbindung zu Excel möglich.", vbCritical, "Fehler"
 Screen.MousePointer = vbDefault
End If

Set ExWb = ExApp.Workbooks.Open("c:\myfile.xls", False, False)
[...]

Viele Grüße,
Daniel

HI Daniel,
Danke, nun habe ich mit deinem Code die Excel Datei in meinem VB Script geöffnet aber wie suche ich nun in dieser ?

mfg jonny

Hier der Code, einfach an die passende Stelle kopieren und
probieren:

dim ExApp As Excel.Application
dim ExWb As Workbook

On Error Resume Next
Const Err_LäuftNicht As Long = 429
Set ExApp = GetObject(, „Excel.Application“)
If Err = Err_LäuftNicht Then Set ExApp = New Excel.Application
'ggf. neu starten
If ExApp Is Nothing Then
MsgBox „Keine Verbindung zu Excel möglich.“, vbCritical,
„Fehler“
Screen.MousePointer = vbDefault
End If

Set ExWb = ExApp.Workbooks.Open(„c:\myfile.xls“, False, False)
[…]

Viele Grüße,
Daniel

Hi Jonny,

kommt drauf an, was du suchst. Eine Möglichkeit, die Suche in Code zu giessen wäre, die Suche selbst in Excel durchzuführen und mit dem Makro-Rekorder aufzuzeichnen. Diese Aufzeichnung musst du dann „nur noch“ auf das Application-Objekt in meinem Code umschreiben und in das VB-Programm einfügen.

Und nicht vergessen, beim Beenden deines Programms sollten die Excel-Objekte wieder geschlossen und freigegeben werden, da du sonst eine verwaiste Excelinstanz im Speicher rumlungern hast.

Viele Grüße,
Daniel

Hi Daniel,
Ich möchte über eine InputBOx oder ein TextFeld eine Zeile in der Spalte A finden und die restlichen Spalten in der Zeile mit ausgeben.
ich versuche weiterhin ein beispiel zu finden… bis jetzt leider erfolglos.

Danke, mfg JOe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]