Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1008to1012
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Externe Bezüge erstellen

VBA Externe Bezüge erstellen
15.09.2008 16:24:54
Roland
Hallo,
ich habe verschiedene Tabellen und möchte z.B. die Werte von Unterbaugruppen in die Datei der Endmontage automatisch übernehmen.
Dies ist manuell sehr aufwendig, weil zu jeder Unterbaugruppe die Zellbezüge mit = (und Sprung in die Zelle der Unterbaugruppe) und Enter erstellt werden müssen.
Z.B. Handy (Endmontage) besteht aus Unterbaugruppen Display, Tastatur, Accu, Schale oben usw....
Durch die Bezüge werden z.B. Material- und Fertigungskosten aus der Unterbaugruppe in die Tabelle der Endmontage automatisch übernommen und auch wieder aktualisiert.
Es gibt viel VBA-Literatur über Verknüpfungen ändern und aktualisieren, aber nichts, wie man mit VBA Code diese erstellen kann.
Ich würde es mir so vorstellen:
Ich markiere in der Tabelle der Endmontage eine Zeile oder eine Zelle, dann starte ich das Makro und wähle in einer Maske die Datei aus. Das Arbeitsblatt könnte man fest definieren und die Quell- und Zielzelle auch.
Ich habe schon mit folgendem Code rumgetestet. Das bringt mir aber nie genau das Ergebnis, als wenn ich den Bezug manuell erstelle. Der Wert aktualisiert sich nicht beim Öffnen der Arbeitsmappe.
Cells(I, 19) = "='" & Cells(I, 19) & "[" & Cells(I, 19) & ".xls]PP'!$ah$53"
I = Variable für die markierte Zelle,
19 = Spalte
PP = Tabellenblatt
ah53 = Quellzelle
Der Code müßte dann für jede zu verknüpfende Zelle programmiert werden, aber dazu muß eben erstmal eine funktionieren.
Vielleicht kann mir jemand helfen.
Besten Dank im Voraus

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Externe Bezüge erstellen
15.09.2008 21:21:00
Daniel
Hi
wenn du Formeln in Zellen schreiben willst, dann musst du dazu eine der folgenden Funktionen verwenden (die Bedeutung der Formel wird im "Formeltext erklärt")

- cells(i, 19).Formula = "=DeineFormel in internationaler Schreibweise mit A1-Bezugsart"
- cells(i, 19).FormulaLocal = "=DeineFormel in lokaler(deutscher) Schreibweise mit A1-Bezugsart" _
- cells(i, 19).FormulaR1C1 = "=DeineFormel in internationaler Schreibweise mit Z1S1-Bezugsart"
- cells(i, 19).FormulaR1C1Local = "=DeineFormel in lokaler(deutscher) Schreibweise mit Z1S1-Bezugsart"


wie die zu verwendendne Formelstrings tatsächlich aussehen, kannst du ermitteln, wenn du mal eine Zelle mit Formel selektiertst und im Direktfenster dann "?Selection.FormulaR1C1'" eingibst.
wenn du die formel ohne Zusatz eingibst, dh
Cells(i, 19) = "=1+2"
dann entspricht das der Option .FormulaLocal
Eines ist bei der ganzen Geschichte noch zu beachten:
Wenn du in den Formeltexten Anführungszeichen verwenden willst, dann müssen diese Anführungszeichen verdoppelt werden, damit VBA erkennen kann, ob die Anführungszeichen zum Textstrinb gehören, oder diesen begrenzen.
das sieht dann so aus:


Cells(1,1).FormulaLocal = "=Wenn(A2="""";""A2 ist Leer"";A2)"


gruß, Daniel

Anzeige
AW: VBA Externe Bezüge erstellen
19.09.2008 10:01:00
Roland
Hallo Daniel,
danke für deinen Tip. Ich hab das Problem jetzt aber anders gelöst. Ich ermittle den gesamten Pfad mit Dateinamen und zerlege diesen dann in seine Bestandteile um anschließend wieder einen externen Bezug daraus zu basteln.

Sub Datei_auswählen_und_verknüpfen()
Dim dlgopen As FileDialog
Dim txtFileselected As String
Dim intFile As Integer
Dim intLen As Integer
Dim intDiff As Integer
Dim strGesamt As String
Dim strFolder As String
Dim strFormel As String
Set dlgopen = Application.FileDialog(msoFileDialogFilePicker)
dlgopen.AllowMultiSelect = False
If dlgopen.Show = True Then
txtFileselected = dlgopen.SelectedItems(1)
Else
Exit Sub
End If
'Der ausgewählte Pfad + Datei wird zerlegt in Pfad und Datei.
'Anschließend mit [] zusammengefügt als externer Bezug.
'Position erstes Auftreten von Backslash von Rechts
intFile = InStrRev(txtFileselected, "\")
'Länge
intLen = Len(txtFileselected)
intDiff = intLen - intFile
strGesamt = Right(txtFileselected, intDiff)
'String Ordner links vom Backslash
strFolder = Left(txtFileselected, intFile)
'String Ordner links + Dateiname + Arbeitsblatt
strFormel = "='" & strFolder & "[" & strGesamt & "]Tabelle1'!"
ActiveCell.value = strFormel
End Sub


Danke und Gruß

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige