PDA

Vollständige Version anzeigen : Zugriff auf Tabellenblatt einer ungeöffneten Excel-Datei


CrizMas
30.01.2006, 10:54
Servus Leute,

vorweg: mit VBA kenn ich mich ein bissel aus. Aber VBA auf Excel bezogen hab ich leider noch keine Ahnung. Ich habe hier folgendes Problem. Ich habe hier eine Excel-Datei (Bestand.xls), in die ich Daten aus einem Tabellenblatt einer anderen, nichtgeöffneten Excel-Datei (Best.xls) importieren/kopieren muss. Dabei wird nicht das ganz Blatt sondern nur ein Teilbereich der Daten benötigt. Das muss jeden Monat getan werden.

Kann mir jemand sagen wo ich etwas Code dazu finde bzw. unter welchem Schlagwort man googlen oder hier im forum suchen müsste. Für ein paar Infos zu Befehlen wie ich auf die Excel Datei zugreifen kann aus der ich die Daten rausziehen möchte oder wie ich mit VBA auf deren Tabellenblätter, Spalten und Zeilen zugreifen kann wäre ich natürlich auch sehr dankbar. Hab nämlich keine Ahnung wie ich das in VBA machen soll.

Tia ein haufen voll N00b-Fragen... :rolleyes: aber ich könnt eure Hife echt gebrauchen.

greez Criz

Hajo_Zi
30.01.2006, 10:59
Hallo Criz,

leichter ist es wenn Du die Datei öffnest. Für eine Zelle.


Option Explicit
' von Alf Herber Forum
' http://www.herber.de/forum/archiv/52to56/t52834.htm#52840
Sub TestGetValue()
Dim p As String
Dim f As String
Dim s As String
Dim r As String
p = "E:\Eigene Dateien\Hajo\"
f = "Adresse.xls"
s = "Adresse"
r = "B4"
' bennanter Bereich ergänzung von Nikhil Milo
' r = "Heinze"
MsgBox GetValue(p, f, s, r)
Worksheets("Tabelle1").Range("A1") = GetValue(p, f, s, r)
End Sub
Private Function GetValue(path, file, sheet, ref)
' Retrieves a value from a closed workbook
Dim arg As String
' Make sure the file exists
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
' bennanter Bereich ergänzung von Nikhil Milo
' arg = "'" & path & "[" & file & "]" & sheet & "'!" & ref
' Execute an XLM macro
GetValue = ExecuteExcel4Macro(arg)
End Function


<img src="http://home.media-n.de/ziplies/images/grusz1.gif" align="middle" height="30" alt="Grußformel"><a href="http://home.media-n.de/ziplies/" target="_blank"><img border="0" src="http://home.media-n.de/ziplies/images/logo_hajo.gif" align="middle" height="30" alt="Homepage"></a>

lareda
30.01.2006, 11:14
Hallo CrizMas,

mir hat folgender Beitrag weitergeholfen:
http://www.vb-fun.de/vb/index.htm
-> Suchen
-> "Daten aus einer Arbeitsmappe einlesen" in Tipps&Tricks suchen

Da gibt es sogar 3 verschiedene Varianten - und alle für geschlossenen Dateien :)

lareda

jinx
30.01.2006, 17:55
<font size="2" face="Century Gothic">Moin,Criz,

vielleicht dem Vorgehen auf Power Formula Technique (http://www.dicks-blog.com/archives/2005/11/04/power-formula-technique/) folgen und kein VBA verwenden?</font>

CrizMas
31.01.2006, 11:13
Also im mom (ich bin gerade am austeste was so machbar ist) hab ich es so gemacht, dass ich der Zelle über VBA eine Formula zuweise und das dann mit autofill nach unten ziehen lasse. Für den mom reicht das erst mal.


Hab allerdings noch ein weiteres Problem:

Kann mir wer sagen wie ich aus einer Excel Datei prüfen kann ob ein bestimmtes Sheet in einer anderen ungeöffneten (und schreibgeschützen) xls - Datei existiert?

Also wenn das Sheet im selben Workbook wäre, wüsste ich wie ich das machen würde:


Public Function SheetExists(sname) As Boolean
' Returns TRUE if sheet exists in the active workbook
Dim x As Object
On Error Resume Next
Set x = ActiveWorkbook.Sheets(sname)
If Err = 0 Then SheetExists = True _
Else SheetExists = False
End Function


aber leider ist es nicht so und ich stehe aufm schlauch. Vielen Dank schon mal für evtl Antworten. THX.