Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
348to352
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
348to352
348to352
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Mittels Makro in anderen Makros Zeilen ändern

Mittels Makro in anderen Makros Zeilen ändern
12.12.2003 11:46:43
Claudia
Hallo liebe Forumer,
ich bin noch halber Anfänger in VBA aber lerne täglich dazu vor allem durch das Forum. Ist echt super hier.

Ich habe ein mittelgroßes Programm für unsere Firma geschrieben in dem bestimmte Daten eingelesen werden. In jedem der Excel-Dateien befinden sich verschiedene Makros die teilweise auch automatisch nacheinander abgearbeitet werden. Auch habe ich ein Add-In geschrieben wo ein weiterer Automatismus generiert wird.

Das Programm kann sowohl im Netz als auch bei meinen Kollegen/innen stationär eingesetzt werden. Bei der Installation muß ich aber jedes Mal in jedes Programm, in jedes Makro und dort bestimmte Zeilen abändern wegen der Laufwerks und Pfadzugehörigkeit.

Wie kann ich das mittels eines Makros automatisieren in dem ich in eine Abfragebox den
- Namen des Makros
- die Zeilennummer
- den zu ändernden Wert eingebe

Kann mir einer helfen? Wäre echt super

Vielen Dank für Eure RÜ's
Gruss Claudia

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Rückfrage
12.12.2003 11:57:06
ChrisL
Hi Claudia

Verstehe zwar in etwa was du machen möchtest, frage mich aber ob es nötig ist.

Kannst du denn deine Makros nicht im vornherein 'variabel' gestalten. Meine damit die Pfadangabe kannst du z.B. mittles ThisWorkbook.Path ermitteln resp. mit Left auch den Laufwerksbuchstaben.

Gruss
Chris
AW: Rückfrage
12.12.2003 12:10:50
Claudia
Hi Chriss,

ups, das kenne ich nicht. Wie gesagt, ich bin noch Anfänger. Mein Problem ist, das evtl. 200 Mitarbeiter dieses Programm bekommen sollen. Einige hängen hier am Netz in der Verwaltung, einige haben Home-Offices, einige arbeiten in Niederlassungen. Ich muss das Programm so gestalten, das alle Mitarbeiter beim kopieren bzw. installieren eine eigene Abfrage erhalten wo Sie eingeben können
- Namen des Makros (gebe ich Ihnen im Anschreiben vor)
- die Zeilennummer (gebe ich Ihnen im Anschreiben vor)
- den zu ändernden Wert eingebe (müssen Sie selber definieren dürfen)
Kannst Du mein Problem verstehen, warum ich eine "Art Abfragebox" benötige?

Danke und Gruss Claudia
Anzeige
AW: Rückfrage
12.12.2003 13:18:34
ChrisL
Hi Claudia

ja aber... :-)

Zeig mal einen Auszug von deinem Makro. Den Teil, welcher individuell angepasst werden soll.

Gruss
Chris
AW: Rückfrage
12.12.2003 14:38:35
Claudia
Hi Chriss,

sorry abe kann erst jetzt, nach dem Meeting wieder antworten. Hoffe Du liest es.

Also hier sind z.B. zwei der vielen Makros. Im ersten Beispiel müssen in Zeile 6 Angaben verändert werden dürfen. Sowohl in diesem als auch in anderen Makros müssen solche oder ähnliche Zeilen geändert werden. Aber die Angaben beziehen sich immer auf das Laufwerk und ggfs. einen Übergeordneten Dateiordner/Pfad in dem der User das Programm ablegt.

Erstes Beispiel:


Sub copy_Data()
Dim wb1 As Workbook, wks1 As Worksheet
Dim wb2 As Workbook, wks2 As Worksheet
Dim wbo As String
Dim wksr1 As Long, wksr2 As Long
wbo = "E:\ALWIN\Prod\Archivierung.xls" 'Pfad zur Datei 2 anpassen
Set wb1 = ActiveWorkbook 'Datei "ArchivAenderung.xls"
Set wb2 = Workbooks.Open(wbo) 'Datei "Archivierung.xls"
Set wks1 = wb1.Worksheets("Archiv") 'Namen bitte anpassen
Set wks2 = wb2.Worksheets("Archiv") 'Namen bitte anpassen
'Datenbereich der kopiert werden muss auslesen
wksr1 = wks1.Cells(65536, 1).End(xlUp).Row
'Kopiervorgang beginnen
wks1.Rows("2:" & wksr1).Copy Destination:=wks2.Rows(Cells(65536, 1).End(xlUp).Row + 1)
'Datei 2 schliessen
wb2.Close True
'Daten in aktiver Tabelle löschen
wks1.Rows("2:" & wksr1).Delete
End Sub


ZWEITES Beispiel (nur ein Auszug aus dem Makro)

Public

Sub lesen()
Dim fso As New FileSystemObject
Dim f As Folder
Dim p As File
Dim str As String
Dim aktuell As String
Dim u As UsedObjects
Set WS = Worksheets("Archiv")
Set fso = New FileSystemObject
Set f = fso.GetFolder("E:\ALWIN\Aenderung\")
h = 0
USW USW so bibt es viele Makros.
Ich hoffe Du kannst mit diesen Angaben etwas anfangen.
Danke und Gruß Claudia

Anzeige
AW: Rückfrage
12.12.2003 14:46:41
ChrisL
Hi Claudia

Ich gehe mal davon aus, dass es dir um folgende Zeilen geht...

wbo = "E:\ALWIN\Prod\Archivierung.xls" 'Pfad zur Datei 2 anpassen
Set f = fso.GetFolder("E:\ALWIN\Aenderung\")

Befindet sich denn die Datei mit den Makros im selben Ordner z.B. "E:\ALWIN\DeineDatei.xls" oder wo...

Mein Ansatz wäre den Code z.B. wie folgt zu gestalten...

wbo = ThisWorkbook.Path & "\Prod\Archivierung.xls"
Set f = fso.GetFolder(ThisWorkbook.Path & "\Aenderung\")

Gruss
Chris
AW: Rückfrage
12.12.2003 15:05:12
Claudia
Hi Chris,
hier die Struktur des Programmes so wie es auf meinem Rechner liegt. Nun ist es möglich für jeden Mitarbeiter (gerade für die die ein HomeOffice haben) das diese sich das Programm auf ein Laufwerk Ihrer Wahl legen und ggfs. das gesamt Programm noch in einen Dateiordner ablegen. Wenn dem so wäre (und davon muss ich ausgehen) dann sind in allen *.xls und *.xla Dateien einen ganze Menge Makros zu ändern die zur Zeit nur auf das Laufwerk und den Pfad in meinem Rechner verweisen.

E:\ALWIN
├───Aenderung
│ └ArchivAenderung.xls
├───Table_Scripts
│ ├───_scripts
│ │ ├───tabelle
│ │ │ └displayTab.
│ │ └───images
│ │ ├ check.gif
│ │ ├ down.gif
│ │ ├ Logo.gif
│ │ └ up.gif
│ ├───_css
│ │ ├ CMbase.css
│ │ └ tabStyle.css
│ └───Excel add-in
│ └ CMTabellen_erweitert.xla
├───Prod
│ └Archivierung.xls

└───Programm
├───Originale
│ ├ Archivierung.xls
│ └ ArchivAenderung.xls
├───Backups
└───Progs
├3Namenaendern.xls

Ich muss erreicheen, das wenn das Programm zum erstten Mal gestartet wird, der Anwender die Möglichkeit hat in den einzelnen Makros die entsprechenden Angaben (wie schon geschrieben Makroname, Makrozeile würde ich mitgeben) zu ändern und anschließend zu speichern. Die Makros werden laut Firmenleitung nicht geschützt.

Kannst Du damit etwas anfangen?
Vielen Dank und Gruss Claudia
Anzeige
AW: Rückfrage
12.12.2003 15:42:53
ChrisL
Hi Claudia

> Wenn dem so wäre (und davon muss ich ausgehen) dann sind in allen *.xls und *.xla Dateien einen ganze Menge Makros zu ändern die zur Zeit nur auf das Laufwerk und den Pfad in meinem Rechner verweisen.

Dies kannst du relativ einfach per Suchen/Ersetzen bezogen auf das ganze Projekt erledigen. Auch wenn du den von dir gewünschten Ansatz umsetzen willst, musst du trotzdem sämtliche Programmzeilen identifizieren, welche geändert werden müssen.

Du könntest den Pfad in einem versteckten Tabellenblatt ablegen. Per Workbook_Open Ereignis prüfst du ob schon eine Pfadangabe besteht und falls nicht, rufst du die Abfrage auf. Den Programmcode beziehst du nachher auf die Zelle in der Tabelle. Etwa so (Ansatz)...

With Worksheets("Tabelle1")

If .Range("A1") = "" Then
' Abfrage z.B. Inputbox
.Range("A1") = Abfrage
End If

End With

Persönlich würde ich aber den Ansatz ThisWorkbook.Path weiter verfolgen. Ich würde die Struktur so vorgeben, dass die Zusatz- und Hilfsdateien in einen spezifischen Unterordner des selben Verzeichnisses in welchem sich die Makrodatei befindet muss.

Also z.B.

IrgendeinLaufwerk:\IrgendeinVerzeichnis\DeineDatei.xls
IrgendeinLaufwerk:\IrgendeinVerzeichnis\Programm\HierDieHilfsdateien

In dem Verzeichnis z.B. Programm kann eine beliebige Struktur (Unterordner) bestehen.

Mit einer solchen Struktur kannst du wie folgt arbeiten...

z.B.
ThisWorkbook.Path & "\Programm\Unterordner\Hilfsdatei.xla"

Bin jetzt dann bald offline und erst wieder am Montag dabei. Ich hoffe, mein Input hilft.

Gruss
Chris
Anzeige
AW: Rückfrage
12.12.2003 15:46:39
Claudia
Hi Chris,
danke für Deine Ansätze. Ich werde diese mal nachher gleich probieren. Vielen Dank und schönes Wochenende.
Gruß Claudia

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige