Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

In 10000 Excel07-Dateien in den immer in der selben Zelle ein Eintrag vorhanden ist sollen bis auf die letzten 6 Zahlen in diesem Feld ersetzt werden.

Mitglied: utroger

utroger (Level 1) - Jetzt verbinden

15.02.2013 um 10:13 Uhr, 1576 Aufrufe, 12 Kommentare

Hallo,

Erklärung:
Wir stellen unseren Teamcenter um auf eine neue Version und dabei hat unsere Gruppe beschlossen die 14 stelligen Zeichnungsnummern abzuändern so das die letzten 6 Ziffern erhalten bleiben aber der Rest soll ersetzt werden. Da es durch dieses Teamcenter auch abgeleitete Exceldateien gibt müssen diese jetzt geändert werden.
Weiter soll unterschieden werden zwischen Einzelteilen und Baugruppen
Die Zeichnungsnummer für Einzelteile sieht wie folgt z.B. aus "G-25-12-333333" soll jetzt umbenannt werden in z.B. "GE_33_13_333333" und für Baugruppen "G-25-12-222222" soll jetzt umbenannt werden in "GS_33_13_222222".
Also es müsste anhand der letzten 6 Ziffern unterschieden werden wie die Aktualierung zu erfolgen hat. Bei uns beginnen Einzelteil immer mit einer 3 und Bauteile mit einer 2. Also Enzelteil soll jetzt "GE_33_13_33333" und Bauteil "GS_33_13_222222" sein.
Jetzt kommt der Kniff dabei. Es handelt sich um ca. 10000 Exceldateien die in verschiedenen Verzeichnissen liegen.
Mein Wunsch wäre es wenn die Aktualisierung der Zeichnungsnummern in den Exceldatein ohne zu öffnen der Dateien funktioniert. Das wäre der Schritt 1.

Schritt 2 wäre es wenn jetzt noch automatisch der Dateinahme angepasst würde und zwar auch wieder nur ein Teil des Dateinamens. Leider ist durch verschiedene Ersteller der Dateien die gewünschte Änderung nicht immer an gleicher Stelle im Dateinamen. Aber es handelt sich immer um ein Datum das wie folg geschrieben ist "2013-02-15" nur jedes mal andere Datumsangaben. Dies sollte dann durch das aktuelle Datum ersetzt werden.

Schritt 3 wäre es wenn jetzt noch automatisch nach jeder Aktualisierung auch eine aktuelle pdf Dateierzeugt wird.

Mir ist bewusst das dies bestimmt eine grosse Herrausforderung ist aber es würde für mich eine Menge Arbeit ersparen.

Zumindestens würde mir 30% geholfen sein wenn ich Schritt 1 umsetzen könnte.

Danke im Vorraus für eure Unterstüzung
Gruß Roger
Mitglied: Alex1234
15.02.2013 um 10:28 Uhr
Das bekommst Du über ein EXCEL-Makro hin. Jedoch muss das Makro die Dateien öffnen, aber unter einem anderen Namen speichern (soll ja auch). Für einen EXCEL-VBA-Programmierer sollte das keine schwere Aufgabe sein.
Bitte warten ..
Mitglied: bastla
15.02.2013, aktualisiert 18.02.2013
Hallo utroger!

Als VBScript etwa so:
01.
Basis = "D:\Excel-Dateien Zeichnungen" 
02.
Typ = "xlsx" 'in Kleinbuchstaben 
03.
 
04.
LogDatei = "D:\Log.csv" 
05.
Delim =";" 'Trennzeichen für Logdatei 
06.
 
07.
ZNrAdr = "B4" 'Zelle mit Zeichnungsnummer 
08.
ZNrNeu2 = "GS_33_13_" 'Neuer Namensteil für Bauteile 
09.
ZNrNeu3 = "GE_33_13_" 'Neuer Namensteil für Einzelteile 
10.
DatAdr = "H7" ' Zelle für Änderungsdatum 
11.
 
12.
'Datumsstring für Dateinamen im Format "JJJJ-MM-TT" erstellen 
13.
AktDat = Mid(Date, 7, 4) & "-" & Mid(Date, 4, 2) & "-" & Left(Date, 2) 
14.
 
15.
Set fso = CreateObject("Scripting.FileSystemObject") 
16.
Set oXL = CreateObject("Excel.Application") 
17.
Set LF = fso.CreateTextFile(LogDatei) 'Logdatei erzeugen 
18.
 
19.
Set rE = New RegExp 
20.
rE.Pattern = "\d{4}-\d{2}-\d{2}" 'Regex-Suchmuster im Format "####-##-##" 
21.
 
22.
DoSubFolders fso.GetFolder(Basis) 'rekursive Verarbeitung in Basis-Ordner starten 
23.
 
24.
oXL.Quit 
25.
LF.Close 
26.
WScript.Echo "Fertig" 
27.
 
28.
Sub DoSubFolders(Folder) 
29.
For Each File In Folder.Files 'alle Dateien des Ordners durchgehen 
30.
    FName = File.Name 'Dateinamen zwischenspeichern 
31.
    'nur Dateien des passenden Typs und solche, die noch nicht bearbeitet wurden 
32.
    If LCase(fso.GetExtensionName(FName)) = Typ And InStr(FName, AktDat) = 0 Then 
33.
        Set WB = oXL.Workbooks.Open(File.Path) 'Datei öffnen 
34.
 
35.
        FNameNeu = rE.Replace(FName, AktDat) 'neuen Namen mit aktuellem Datum erzeugen 
36.
        If FName <> FNameNeu Then 'Dateiname geändert? 
37.
            WB.SaveAs fso.GetParentFolderName(File.Path) & "\" & FNameNeu 'Datei unter neuem Namen speichern 
38.
            Info = File.Path & Delim & FNameNeu 'Dateiinfo für Logdatei erzeugen 
39.
        Else 
40.
            Info = File.Path & Delim & "#Dateiname gleich" 'Hinweis auf unveränderten Dateinamen 
41.
        End If 
42.
 
43.
        Set ZN = WB.WorkSheets(1).Range(ZNrAdr) 'Zelle mit Zeichnungsnummer zwischenspeichern 
44.
        Kennung = Right(ZN.Value, 6) 'letzte 6 Stellen der ZNr als Kennung auslesen 
45.
        Select Case Left(Kennung, 1) 'Unterscheidung anhand erster Stelle der Kennung 
46.
        Case "2" 'Bauteil 
47.
            ZNrNeu = ZNrNeu2 & Kennung 'neue Zeichnungsnummer erzeugen ... 
48.
            ZN.Value = ZNrNeu '... und eintragen 
49.
            Info = Info & Delim & ZNrNeu 'Info für Logdatei um neue Zeichnungsnummer ergänzen 
50.
        Case "3" 'Einzelteil 
51.
            ZNrNeu = ZNrNeu3 & Kennung 'neue Zeichnungsnummer erzeugen ... 
52.
            ZN.Value = ZNrNeu '... und eintragen 
53.
            Info = Info & Delim & ZNrNeu 'Info für Logdatei um neue Zeichnungsnummer ergänzen 
54.
        Case Else 'Whatever 
55.
            'Info für Logdatei um Hinweis auf unveränderte Zeichnungsnummer ergänzen 
56.
            Info = Info & Delim & "#Zeichnungsnummer gleich" 
57.
        End Select 
58.
		 
59.
        WB.WorkSheets(1).Range(DatAdr).Value = Date 'Aktuelles Datum eintragen 
60.
         
61.
        WB.ExportAsFixedFormat 0, fso.GetParentFolderName(File.Path) & "\" & fso.GetBaseName(FNameNeu) & ".pdf" 'PDF erzeugen 
62.
         
63.
		LF.WriteLine Info 'Info in Logdatei schreiben 
64.
        WB.Close True'Datei speichern und schließen 
65.
    End If 
66.
Next 
67.
 
68.
For Each SubFolder in Folder.SubFolders 'rekursive Verabeitung der Unterordner 
69.
    DoSubFolders SubFolder 
70.
Next 
71.
End Sub
Die Logdatei kannst du mit Excel öffnen und ggf passend sortieren, um fehlerhafte Dateien zu finden.

Grüße
bastla

[Edit] Zeilen 10, 59 und 61 aufgrund zusätzlicher Anforderungen (s. u.) ehinzugefügt [/Edit]
Bitte warten ..
Mitglied: 76109
16.02.2013 um 15:38 Uhr
Hallo bastla!

Und warum SaveAs, anstatt einfaches Umbenennen

So, speicherst Du jede Datei 2 mal und die alten Dateien müssten dann ja auch noch irgendwie entsorgt werden?

Eventeuell wäre noch ein On Error-Test zu überdenken und zwar für den Fall, dass eine Datei bereits anderweitig geöffnet ist?

Gruß Dieter
Bitte warten ..
Mitglied: bastla
16.02.2013 um 19:19 Uhr
Hallo Dieter!
Und warum SaveAs, anstatt einfaches Umbenennen
Hatte ich mir auch überlegt - so ganz genau ist allerdings die Problembeschreibung nicht geraten, daher ist das auch keine Lösung, sondern nur ein Ansatz ...
Eventeuell wäre noch ein On Error-Test zu überdenken und zwar für den Fall, dass eine Datei bereits anderweitig geöffnet ist?
Dass eine Datei geöffnet ist, sollte wohl bei einer derartigen Aktion schon organisatorisch verhindert werden, aber schaden kann's natürlich nicht.

Grüße
bastla
Bitte warten ..
Mitglied: bastla
16.02.2013 um 21:45 Uhr
... und noch als Nachtrag: Mit der folgenden Zeile 57 sollte sich (Excel 2007 mit SP 2 oder zumindest dem "Speichern unter – PDF oder XPS -AddIn" bzw eine neuere Excel-Version vorausgesetzt) auch das gewünschte PDF erzeugen lassen:
WB.ExportAsFixedFormat 0, fso.GetParentFolderName(File.Path) & "\" & fso.GetBaseName(FNameNeu) & ".pdf"
Grüße
bastla
Bitte warten ..
Mitglied: 76109
17.02.2013 um 11:33 Uhr
Hallo bastla!

... und noch als Nachtrag...
Bei einer Arbeitserleichterung von 100% gibt's ja nix mehr zu meckern...

Gruß Dieter
Bitte warten ..
Mitglied: utroger
18.02.2013 um 07:37 Uhr
Hallo bastla,
erstmal vielen Dank für deine Mühe.

zwei Fragen:

1. Basis = "D:\Excel-Dateien Zeichnungen" - verstehe ich das richtig, hier ist mein Verzeichnis einzutragen wo die Exeldateien Abglegt sind diese geändert werden sollen?

2. LogDatei = "D:\Log.csv" - Diese ist eine separate Datei in dieser eine Auflistung der Dateien erfolgt wo ich den Pfad auch entsprechend vorgeben muss?

Ich habe nach dem ich den entsprechend Pfad angegeben habe oder aber belasse eine Fehlermeldung:
"Fehler beim Kompilieren: Außerhalb einer Prozedur ungültig" und ich kann nicht wirklich was mit dieser Meldung anfangen auch wenn ich mit die Erklärung dafür ansehe. Sorry, könntest Du mir hier nochmal behilflich sein.

Danke
Gruß Roger
Bitte warten ..
Mitglied: bastla
18.02.2013 um 08:06 Uhr
Hallo utroger!

Zu 1.: ja

Zu 2.: Die Log-Datei wird erstellt, um den Ablauf nachvollziehen zu können - Du kannst sie, nachdem das Script durchgelaufen ist, mit Excel öffnen.

Und nur zur Sicherheit: Das Script ist nicht per VBA (in Excel) auszuführen, sondern ein VBScript - daher mit dem Dateityp ".vbs" speichern und per Doppelklick starten.

Grüße
bastla
Bitte warten ..
Mitglied: utroger
18.02.2013 um 09:36 Uhr
Hallo Basla,

funktioniert alles bestens, auch mit der pdf.

Eines habe ich vergessen. In den Exceldateien ist im Feld H7 das Datum eingetragen der letzten Aktualisierung.
Kannst Du das Script abändern das auch im Feld H7 das aktuelle Datum übernommen wird.

Danke
und im Vorraus noch mal besten Dank für deine Hilfe

Gruß Roger
Bitte warten ..
Mitglied: bastla
18.02.2013 um 12:00 Uhr
Hallo utroger!

Ich habe oben die beiden zusätzlichen Wünsche (für PDF-Ausgabe und Datumseintrag) eingearbeitet ...

Grüße
bastla
Bitte warten ..
Mitglied: utroger
18.02.2013 um 12:52 Uhr
Hallo Bastla,

jetzt ändert sich das Datum aber die Zeichnungsnummern nicht mehr.
Irgendwo steckt ein Fehler

Gruß Roger
Bitte warten ..
Mitglied: utroger
18.02.2013 um 12:56 Uhr
klappt
Sorry, hatte ein Fehler bei mir eingebaut

Gruß Roger
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Excel Feld mit Zahlen formaiteren
gelöst Frage von killtecMicrosoft Office6 Kommentare

Hallo, ich möchte in Excel eine Zahl formatieren. Es soll nach dem Muster sein: 1-12345-12345-123456789-1 Wie bekomme ich denn ...

Exchange Server

Outlook 2010 "Von-Feld" nicht vorhanden

Frage von RalphTExchange Server7 Kommentare

Moin, ich habe im Outlook nur ein Konto. Das Konto ist ein Exchangekonto. Bei einem weiteren E-Konto im Exchange ...

Batch & Shell

Powershell SetSelected letzter Eintrag

gelöst Frage von BuggerBatch & Shell2 Kommentare

Hallo, ich habe ein Script mit einer kleinen Textbox um weitere Einträge einer Listbox hinzuzufügen. Mit kann ich zwar ...

VB for Applications

Inhalt eines Kommentars pro Zelle zählen

gelöst Frage von DaniVB for Applications9 Kommentare

Hallo zusammen, ich habe eine Excel Tabelle, in der einige Werte stehen. Pro Zelle wurde per Kommentarfunktion einen bzw. ...

Neue Wissensbeiträge
Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 6 StundenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 7 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 10 StundenMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 1 TagWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server40 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing19 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...