| |
| Leitfaden für die Materialauswahl im Spritzguss, ein Fachartikel
|
Autor
|
Thema: Umstellung 2003 auf 2010 (LZFehler 91) (2031 mal gelesen)
|
alvi Mitglied
Beiträge: 8 Registriert: 31.07.2013
|
erstellt am: 31. Jul. 2013 10:00 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Leute Ich habe das Forum nun gut 2h durchsucht und viele Probleme lösen können. Nun stehe ich aber am Berg. Vorallem da ich kaum Ahnung von der Materie habe. Das Ziel: Makro soll in einem Ordner nach files suchen und diese einlesen. Beim Debug kommt nun der Error bei folgendem Abschnitt. ASF.NewSearch ASF.LookIn = strFilePath ASF.FileName = "*.xls" If ASF.Execute(SortBy:=msoSortByFileName, _ SortOrder:=msoSortOrderAscending) > 0 Then 'Zählen wieviele Dateien sich in dem Ordner befinden 'MsgBox "There were " & ASF.FoundFiles.Count & _ '" file(s) found." strFound = ASF.FoundFiles.Count MsgBox ("Es wurden" & strFound & " Dateien gefunden. Diese werden nun geöffnet und die relevanten Werte ausgelesen.") 'Öffnen und Auslesen der einzelnen Dateien For i = 1 To ASF.FoundFiles.Count strFileName = ASF.FoundFiles(i) Workbooks.Open ASF.FoundFiles(i) Length = Len(strFileName) 'MsgBox ("Die vorherige Datei wurde geschlossen. Nun wird folgende Datei geöffnet: " & strFileName) 'Auslesen des .xls filenamens For o = 1 To Length If Mid(strFileName, Length - o, 1) = "\" Then ShortFileName = Right(strFileName, o) Exit For End If Next o If Workbooks("Auswertung.xls").Sheets("Menü").Cells(11, 5).Value = "Ja" Then Workbooks(ShortFileName).Sheets("Eingabe").Cells(4, 9).Value = Workbooks("Auswertung.xls").Sheets("Menü").Cells(12, 5).Value Workbooks(ShortFileName).Sheets("Eingabe").Cells(5, 9).Value = Workbooks("Auswertung.xls").Sheets("Menü").Cells(13, 5).Value End If 'Einkopieren der relevanten Einträge über die Mappingtabelle For p = 2 To MappingEnde SourceActualColumn = Workbooks("Auswertung.xls").Sheets("MappingAuslesenLG").Cells(p, 2).Value SourceActualRow = Workbooks("Auswertung.xls").Sheets("MappingAuslesenLG").Cells(p, 1).Value GoalActualColumn = Workbooks("Auswertung.xls").Sheets("MappingAuslesenLG").Cells(p, 3).Value Workbooks("Auswertung.xls").Sheets("AuswertungLG").Cells(StartTabelle, GoalActualColumn) = Workbooks(ShortFileName).Sheets("Eingabe").Cells(SourceActualRow, SourceActualColumn).Value Next p StartTabelle = StartTabelle + 1 Workbooks(ShortFileName).Close SaveChanges:=False Next i Else MsgBox "There were no files found." End If End Sub Diese Makros wurden für uns mal erstellt und nie gewartet und nun da wir Office 2010 haben läuft es nicht mehr. gibt es hier einen easy work around? Besten Dank für die Zeit Alvi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Ehrenmitglied V.I.P. h.c. Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 31. Jul. 2013 10:23 <-- editieren / zitieren --> Unities abgeben: Nur für alvi
|
StefanBerlitz Ehrenmitglied V.I.P. h.c. IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 31. Jul. 2013 10:30 <-- editieren / zitieren --> Unities abgeben: Nur für alvi
Hallo alvi, und herzlich willkommen im SolidWorksbrett auf CAD.de Der Laufzeitfehler: '91' Objektvariable oder With Block nicht festgelegt bedeutet, dass die Variable (welche kannst nur du beantworten, der Debugger steht dann normalerweise in genau der Zeile) nicht definiert ist, sprich, sie hat keinen Inhalt und ist Nothing. Da ist vermutlich durch die Umstellung auf VBA7 in Office 2010 etwas anders als vorher. Ich vermute, dass es etwas mit dem Objekt ASF zu tun hat, leider ist keine Deklaration oder so zu sehen. Vielleicht benutzt das Windows API Calls, die müssen ggf. anders deklariert werden, siehe http://msdn.microsoft.com/de-de/library/office/ee691831(v=office.14).aspx Vielleicht hilft das schon weiter. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
alvi Mitglied
Beiträge: 8 Registriert: 31.07.2013
|
erstellt am: 20. Aug. 2013 13:23 <-- editieren / zitieren --> Unities abgeben:
Hi Stefan das ging ja fix mit der Antwort. Leider hatte ich lange Zeit mehr für das Thema. Mir scheint, dass er ASF.Newsearch nicht versteht. gibt es denn dafür einen neuen code? so wie ich das verstehe, muss dieser Befehl einfach eine Suche auslösen, die dann weiter unter noch deffiniert wird. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
alvi Mitglied
Beiträge: 8 Registriert: 31.07.2013
|
erstellt am: 20. Aug. 2013 13:26 <-- editieren / zitieren --> Unities abgeben:
hier noch der obere Teil zum Thema ASF: 'Kreieren von ASF Objekt Dim ASF As Object 'Öffnen der Dateien durchscannen dieser 'Initialisieren des Objektes und suchen nach .xls Dateien strFilePath = Workbooks("Auswertung.xls").Sheets("Menü").Cells(14, 5).Value Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Comos User Mitglied
Beiträge: 112 Registriert: 23.03.2010
|
erstellt am: 21. Aug. 2013 12:06 <-- editieren / zitieren --> Unities abgeben: Nur für alvi
Hallo alvi, so wie du es hier gepostet hast kann das nie gelaufen sein. mit Code: 'Kreieren von ASF Objekt Dim ASF As Object
wird zwar ein Objekt deklariert, jedoch nicht kreiert. Das im Kommentar zu behaupten reicht leider nicht vor der ersten Nutzung, also warscheinlich ASF.NewSearch erstellt werden. es muß eine Zuweisung nach dem Muster Code: SET ASF = CreateObject(.........)
oder auch Code: Set ASF = New ...
geben. Dann sieht man auch von welchen Typ dieses Objekt ist und kann dann ermitteln ob es eine Methode 'NewSearch' besitzt. Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
alvi Mitglied
Beiträge: 8 Registriert: 31.07.2013
|
erstellt am: 21. Aug. 2013 13:04 <-- editieren / zitieren --> Unities abgeben:
|
alvi Mitglied
Beiträge: 8 Registriert: 31.07.2013
|
erstellt am: 21. Aug. 2013 15:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Peter Danke für deine Zeit. Nun bin ich aber wie erwähnt ein blutiger Anfänger. Ich verstehe was du meinst. Befehlt Kreieren wird nicht ausgeführt. DIM ASF ist nur eine definition. Wie sollte den der Code aussehen, damit er im Explorer diese X-Anzahlfiles sucht und einliest? Falls du nochmal Zeit hast, wäre ich froh um eine Anpassung wie du denkst, dass es funktionieren müsste. Beste Grüsse Alvi Sub DEinlesenLG() Dim LGPeriode As Date Dim StartTabelle As Integer Dim MappingEnde As Integer Dim SourceActualColumn As Integer Dim SourceActualRow As Integer Dim GoalActualColumn As Integer Dim Aufsummierung As Double Dim strFilePath As String Dim strFound As Variant Dim strFileName As String Dim ShortFileName As String Dim strDate As String ' Variablen füllen LGPeriode = Workbooks("Auswertung.xls").Sheets("Menü").Cells(12, 5).Value StartTabelle = 7 MappingEnde = RowCount("MappingAuslesenLG", 1) Sheets("AuswertungLG").Range("A2:FF60000").Delete 'Kreieren von ASF Objekt Dim ASF As Object 'Öffnen der Dateien durchscannen dieser 'Initialisieren des Objektes und suchen nach .xls Dateien strFilePath = Workbooks("Auswertung.xls").Sheets("Menü").Cells(14, 5).Value ASF.NewSearch ASF.LookIn = strFilePath ASF.FileName = "*.xls" If ASF.Execute(SortBy:=msoSortByFileName, _ SortOrder:=msoSortOrderAscending) > 0 Then 'Zählen wieviele Dateien sich in dem Ordner befinden 'MsgBox "There were " & ASF.FoundFiles.Count & _ '" file(s) found." strFound = ASF.FoundFiles.Count MsgBox ("Es wurden" & strFound & " Dateien gefunden. Diese werden nun geöffnet und die relevanten Werte ausgelesen.") 'Öffnen und Auslesen der einzelnen Dateien For i = 1 To ASF.FoundFiles.Count strFileName = ASF.FoundFiles(i) Workbooks.Open ASF.FoundFiles(i) Length = Len(strFileName) 'MsgBox ("Die vorherige Datei wurde geschlossen. Nun wird folgende Datei geöffnet: " & strFileName) 'Auslesen des .xls filenamens For o = 1 To Length If Mid(strFileName, Length - o, 1) = "\" Then ShortFileName = Right(strFileName, o) Exit For End If Next o If Workbooks("Auswertung.xls").Sheets("Menü").Cells(11, 5).Value = "Ja" Then Workbooks(ShortFileName).Sheets("Eingabe").Cells(4, 9).Value = Workbooks("Auswertung.xls").Sheets("Menü").Cells(12, 5).Value Workbooks(ShortFileName).Sheets("Eingabe").Cells(5, 9).Value = Workbooks("Auswertung.xls").Sheets("Menü").Cells(13, 5).Value End If 'Einkopieren der relevanten Einträge über die Mappingtabelle For p = 2 To MappingEnde SourceActualColumn = Workbooks("Auswertung.xls").Sheets("MappingAuslesenLG").Cells(p, 2).Value SourceActualRow = Workbooks("Auswertung.xls").Sheets("MappingAuslesenLG").Cells(p, 1).Value GoalActualColumn = Workbooks("Auswertung.xls").Sheets("MappingAuslesenLG").Cells(p, 3).Value Workbooks("Auswertung.xls").Sheets("AuswertungLG").Cells(StartTabelle, GoalActualColumn) = Workbooks(ShortFileName).Sheets("Eingabe").Cells(SourceActualRow, SourceActualColumn).Value Next p StartTabelle = StartTabelle + 1 Workbooks(ShortFileName).Close SaveChanges:=False Next i Else MsgBox "There were no files found." End If End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 22. Aug. 2013 06:21 <-- editieren / zitieren --> Unities abgeben: Nur für alvi
|
alvi Mitglied
Beiträge: 8 Registriert: 31.07.2013
|
erstellt am: 22. Aug. 2013 14:50 <-- editieren / zitieren --> Unities abgeben:
na da brat mir doch einer nen storch! habe es mal so gemacht: ASF.NewSearch ASF.LookIn = strFilePath ASF.FileName = "*.xls" und nun ist der laufzeitfehler weg! freide herrscht im ganzen land aber er meint nun, dass er keine files findet. Werde mal schauen was da los ist, denn die files sind hier.
aber besten dank für die Zeit und Geduld soweit
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 22. Aug. 2013 17:19 <-- editieren / zitieren --> Unities abgeben: Nur für alvi
|
alvi Mitglied
Beiträge: 8 Registriert: 31.07.2013
|
erstellt am: 26. Aug. 2013 08:27 <-- editieren / zitieren --> Unities abgeben:
|
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 26. Aug. 2013 10:28 <-- editieren / zitieren --> Unities abgeben: Nur für alvi
Hallo, ein Beispiel: Code: Public Sub Beispiel() Dim strPath As String, strFilename As String strPath = Workbooks("Auswertung.xls").Sheets("Menü").Cells(14, 5).Value If Right$(strPath, 1) <> "\" Then strPath = strPath & "\" strFilename = Dir$(strPath & "*.xls") Do Until strFilename = vbNullString MsgBox strPath & strFilename ' Nur zum Testen strFilename = Dir$ Loop End Sub
Kennst du übrigens die Hilfefunktion von Excel? Da ist alles beschrieben. ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
alvi Mitglied
Beiträge: 8 Registriert: 31.07.2013
|
erstellt am: 26. Aug. 2013 10:43 <-- editieren / zitieren --> Unities abgeben:
|