Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Wie schließe ich in Excel VBA ein Workbook ohne den Namen zu kennen?





Frage

Hallo, ich lade aus einer Excell Tabelle eine Liste von Arbeitsanweisungen. In den Zellen rechts daneben habe ich die entsprechenden Links gelegt.Die Namen werden in der ComboBox Angezeigt und beim Anwählen der verschieden Namen werden auch die richtigen Links Aktiviert. Das heißt die Excel Dateien die hinter den Links stehen werden geöffnet. Soweit so gut. Aber der Bediener soll so viele Links öffnen wie er will (soviele wie in der ComboBox verfügbar sind) und so offt er will. Dazu müssen die Datein aber vorher geschlossen werden und das bekomme ich nicht hin. Zum öffnen nehme ich folgenden befehl *Workbooks.Open (ActiveCell.Offset(0, 1))* Das funktioniert. Zum schließen wollte ich *Workbooks().Close* benutzen. Und das was in die Klammern gehört finde ich nicht. Ich habe alles mögliche ausprobiert nöscht klappte. Dann hätte ich noch ein Problem: das ganze müsste ich auch mit Worddokumenten machen. Also in der Combobox stehen nicht nur Excel Dateien sondern auch Worddokumente mit denen ich genau so verfahren müsste. Wenn mir bei den Problemen geholfen werden könnte wäre das super!!

Antwort 1 von achim_13086

Guten Abend Pillager,

meines Wissen lautet der Befehl " ActiveWorkbook.Close " .

Das setzt allerdings voraus, dass die zuschließende Tabelle tatsächlich im Vordergrung ist.

Für Word müßte der Befehl so lauten: " ActiveDocument.Close ".


Ich hoffe, ich konnte Dir hiermit helfen.

Gruß
Joachim

Antwort 2 von Pillager

hallo Joachim,

super danke teil 1 hat gefunzt. Workbooks (Excel) konnte ich schließen SUPER!

Das zeite Probleme habe ich vielleicht nicht ganz richtig vormuliert. mit word dokumenten komme ich gar nicht weiter. weil ein word dokument wohl kein excel workbook ist kommt die fehlermeldung *ungültiges dateiformat* der tip zum schließen, von dir könnte klappen wenn ich excel übereden kann das dokument zu öffnen das fehlt mir noch.

Antwort 3 von achim_13086

Hi Pillager,

mir fällt im Moment auch keine Lösung ein, wie Excel dazu gebracht werden kann, ein Worddokument zu öffnen.

Im umgekehrten Fall ist es möglich, eine Exceltabelle in ein Worddokument einzubinden.

Eventuell hilft Dir die Funktion der Sammelmappe.

Leider fällt mir im Moment keine andere Lösung ein.

Einen netten Gruß noch,
Joachim

Antwort 4 von JoeKe

Moin Pillager,

um aus Excel herraus mit einem Word-Dokument zu arbeiten, musst du zunächst ein Word-Objekt erzeugen. Danach kannst du mit Word VBA-Befehlen arbeiten.

Option Explicit

Sub Word()
Dim objWord As Object
Rem Erzeugt ein Word Objekt
Set objWord = CreateObject("Word.Application")
With objWord
Rem Word Befehle
.Documents.Open Filename:="C:\Dokumente und Einstellungen\user\Desktop\Endstellen.doc"
.Visible = True
.Activate
End With
Rem hier die anderen Anweisungen

Rem das Word muss wieder geschlossen werden
objWord.Application.Quit
Rem löscht den Verweis auf das Word Objekt
Set objWord = Nothing
End Sub


Gruß

JöKe

Antwort 5 von Pillager

Hallo Jöke,

hört sich gut an. Ich weiß aber nicht wo was hin soll.
es stehen in der ComboBox z.B. Excel und Word Dokumente wild ducheinander. Wenn ich auf den einen link tippe geht ein excel sheet auf und wenn ich auf den word link tippe soll das word dokument aufgehen. ich habe ein wenig experimentiert aber irgendeine fehlermeldung kommt immer.

ich öffne keine direkten dateien sondern links wo die dateien hinter stehen. So wie unter 2 steht, geht es mit den worksheets. wenn es nicht wie unter 1. mit den dokumenten geht weiß ich nicht wie ich die links ansprechen soll.

1. Ducuments.Open (ActiveCell.Offset(0, 1))

2. Workbooks.Open (ActiveCell.Offset(0, 1))

Antwort 6 von JoeKe

Hallo Pillager,

um dir weiter helfen zu können müsste ich zumindest deinen bisherigen Code kennen und um was für eine ComboBox es sich handelt.

MfG

JöKe

Antwort 7 von Pillager

Hallo JöKe,

"Private Sub ComboBox1_Change()
Worksheets("Arbeitsanweisungen").Activate
On Error GoTo Errorhandler
Dim strSuchen As Variant
strSuchen1 = ComboBox1.Value
Cells.Find(What:=strSuchen1).Activate
Workbooks.Open (ActiveCell.Offset(0, 1))
MsgBox ("Datei ist offen !")
ActiveWorkbook.Close
MsgBox ("Datei ist wieder geschlossen !")
Exit Sub
Errorhandler:
MsgBox "Arbeitsanweisung wählen"
End Sub"

Das ist der Code den ich in die "normale" VBA Combobox integriert habe. Es funzt einwandfrei.
Nur leider nicht mit Word dateien.

Hier noch der Code der im dazu gehörigen UserForm steht.

Private Sub UserForm_Initialize()


ActiveSheet.Cells.Offset(0, 0).Select

Dim c As Range
For Each c In Worksheets("Arbeitsanweisungen").Range("A01:A14")
ComboBox1.AddItem c
Next c

Im Sheet Arbeitsanweisungen in den A Zellen stehen freiwählbare Namen und in den B Zellen die dazu gehörigen links auf Servern ect. Angezeigt werden die A Zellen und bein anwählen werden die B zellen aktiviert. Wie schon gesagt das funktioniert. Nur nicht mit Word dokumenten. Nur leider sind hier im Haus die meisten Arbeitsanweisungen in Word verfasst (was auch Sinn macht für mich aber jetzt schlecht ist).

Wenn du mir helfen könntest wäre das super!

Antwort 8 von JoeKe

Moin Pillager,

versuch es mal so:

Option Explicit

Private Sub ComboBox1_Change()
On Error GoTo Errorhandler
Dim strSuchen As String, objWord As Object, rngVergleich As Range, datei As String
strSuchen = ComboBox1.Value
For Each rngVergleich In Worksheets("Arbeitsanweisungen").Range("A1:A14")
If rngVergleich = strSuchen Then
datei = Cells(rngVergleich.Row, rngVergleich.Column + 1)
End If
Next
If Right(datei, 4) = ".doc" Then
Set objWord = CreateObject("Word.Application")
With objWord
.Documents.Open Filename:=datei
.Visible = True
´.Activate
End With
MsgBox ("Datei ist offen !")
objWord.Application.Quit
Set objWord = Nothing
MsgBox ("Datei ist wieder geschlossen !")
Exit Sub
Else
Workbooks.Open Filename:=datei
MsgBox ("Datei ist offen !")
ActiveWorkbook.Close
MsgBox ("Datei ist wieder geschlossen !")
Exit Sub
End If
Errorhandler:
MsgBox "Arbeitsanweisung wählen"
End Sub



Gruß

JöKe

Antwort 9 von Pillager

Hallo JöKe

Klasse

Ich muste noch

Worksheets("Arbeitsanweisungen").Activate

über deinen Text schreiben.
Dann habe ich die folgende Zeilen geändert.

.Documents.Open Filename:=datei
in:
.Documents.Open (ActiveCell.Offset(0, 1))
und
Workbooks.Open Filename:=datei
in:
Workbooks.Open (ActiveCell.Offset(0, 1))

so ließ sich auch das Word Dokument öffnen.

Super, danke!!!!

Gruß
Pillager

Antwort 10 von JoeKe

Moin Pillager,

da nich für ;o)

Gruß

JöKe