Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
832to836
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
832to836
832to836
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

autofill mit vbs

autofill mit vbs
04.01.2007 19:26:26
bogi
Hallo Excel-Community,
erst mal ein gesundes, schöpferisches Jahr 2007. Habe seit einiger Zeit nicht mehr mit VBA/VBS gearbeitet und stehe promt vor einem Problem!
Szenario:
Es müssen über VBS mehrere (ca.3000) Exceldateien aktualisiert werden (hängt mit der MwSt. zusammen).
Dafür ist es erforderlich eine Formel in eine Zelle einzutragen "D17", was auch über VBScript klappt. Weiterhin muß diese Formel dann in weitere Bereiche kopiert werden. ("D18" bis "D37" und "D47" bis "D64")Dies versuchte ich vergebens mit "AutoFill" zu tun. Alle Möglichkeiten, die Definition über Variablen oder direkt mit "Range" oder "Cells" anzugeben endeten in der gleichen Fehlermeldung "24 / 33 Bezeichner erwartet" o. "24 / 33 unbekannter Kompilierungs-fehler".
.selectedrange.autofill destination:='Range("D18:D37"'>
Die Err-Position 33 ist in dem Fall immer vor "Range" nach dem "=". Übrigens, im Excel selber, in einem Modul, funktioniert dieser Code bestens.
Kann man die AutoFill- Methode überhaupt über ein externes Programm(Script) steuern. Was müßte ich tun um das Script zum laufen zu bekommen. Ist es vielleicht besser mit einer Copy- Methode zu arbeiten und durch die Zeilen zu iterieren.
Für etwas Hilfe und einen eventuellen Code-Snippet wäre ich sehr dankbar.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: autofill mit vbs
04.01.2007 19:33:06
Daniel
Hallo
wenn nur darum geht eine Formel einzutragen, ist AUTOFILL nicht erforderlich.
das geht viel einfacher mit
- Range("D17:D37").formula = "Hier dein Formeltext"
damit kannst du alle Zellen gleichzeitig befüllen.
oder, wenn der Formeltext in D17 schon drinsteht
- range("D18:D37").formula = Range("D17").formula
Gruß, Daniel
AW: autofill mit vbs
04.01.2007 19:43:51
bogi
Hallo Daniel,
danke für deine schnelle Reaktion, wenn es so funktioniert..........!
Teste es morgen in der Firma, melde mich dann noch mal.
Danke!
Gruß bogi.
AW: autofill mit vbs kleine Korrektur
04.01.2007 19:55:00
Daniel
Hallo
habs grad nochmal geprüft
der 2. Teil ist nicht ganz korrekt, richtig ist, wenn sich der Zellbereich direkt anschließt:
- range("D17:D37").formula = Range("D17").formula
wenn die Formel in Zellbereich übernommen werden soll, der sich nicht direkt anschließt, musst du es mit COPY machen
- range("D17").copy destination:=range("D47:D67")
sonst gibts Probleme mit den Relativen bezügen.
Gruß, Daniel
Anzeige
AW: autofill mit vbs kleine Korrektur
05.01.2007 09:28:54
bogi
Guten Morgen Daniel,
der erste Teil hat gut funktioniert, daß hilft mir schon weiter.
Die Kopiermethode ist mit der gleichen Fehlermeldung fehlgeschlagen wie eingangs beschrieben. "range("D17").copy destination:={}range("D47:D67")"
"test.vbs(39, 32) Kompilierungsfehler in Microsoft VBScript: Anweisung erwartet"
Haltepunkt ist die geschweifte Klammerung. Bei AutoFill ist es die gleiche Fehlermeldung. Innerhalb Excel (VB-Editor) funktioniert es. Ich habe momentan keine Idee, an was es liegen könnte. Vielleicht hast Du ja noch ne Idee!?
AW: autofill mit vbs kleine Korrektur
05.01.2007 12:14:12
Daniel
Hallo
leider kenne ich mich mit VBS nicht aus.
hört sich aber so an als wäre da ein Bug drin, den man irgendiwe umschiffen muß.
d.h. du könntest mal die verschiedenen kopiermethoden ausprobieren:
range("D17").copy
range("D47:D67").pastespecial xlpasteformulas
range("D17").copy
range("D47:D67").select
activesheet.paste
ggf. könnte es auch sein, daß es erforderlich ist, immer den ganzen Objektpfad mit anzugeben, also Workbook.Sheet.Range
noch ne möglichkeit wäre, um die Formel in nichtangrenzende Zellbereiche zu kopieren, folgenden Code zu verwenden, dann sollten auch die Bezüge stimmen:
range("D46:D66").formulaR1C1 = range("D17").formulaR1C1
noch einfacher wärs natürlich, wenn dein gernerierter Formeltext den du in D17 reinschreibst, bereits in der R1C1-Schreibweise vorliegt, dann kannst du ihn auch direkt in alle betroffenen Zellen reinschreiben.
oder du schreibts das ganze so um, daß es innerhalb von Excel funktioniert, dh. du erstelltst eine Exceldatei, die in einer Liste alle umzuwandelnden Dateien enthält und die nacheinander die Dateien öffnet und die Änderungen durchführt. Denn innerhalb von Excel funktionierts ja.
noch ne Mehtode wäre unter umständen möglich, da es sich ja um eine Änderung der Mehrwertsteuer handelt, müsste duch eigentlich nur die 0,16 in der Formel durch 0,19 ersetzt werden, das könnte dann auch einfach mit REPLACE gehen.
Dabei musst du allerding aufpassen, ob die zu ersetzenden Textschnipsel nicht zufälligerweise noch in anderen Abschnitten der Formel vorkommen können, wo ein Ersetzen unerwünscht wäre.
Gruß, Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige