Registriert seit: 17.07.2020
Version(en): 2013
Hallo zusammen,
ich lasse ein Macro nach der neusten Datei suchen auf einem Netzwerklaufwerk, öffnen, kopiere was raus und schließe es wieder. Funktioniert auch. Aber sobald das neuste File schon von jemand anderes (oder mir selber!) geöffnet ist, öffnert er nix und es kommt eine VBA fehlermeldung wegen dem kopierversuch.
Dim WBPalZiel As Workbook Dim WBPalQuelle As Workbook, WSPalZiel As Worksheet Set WBPalZiel = ThisWorkbook Dim fdr As Scripting.Folder Dim target As Scripting.file Dim strFile As String For Each fdr In CreateObject("Scripting.FileSystemObject").GetFolder("O:\.....\Q3").SubFolders For Each target In fdr.Files If InStr(1, UCase(target), UCase("Dateiname.xls")) > 0 Then If target.DateLastModified > dteFile Then dteFile = target.DateLastModified strFile = target End If End If Next Next If Len(Dir(strFile)) Then Set WBPalQuelle = Workbooks.Open(strFile) End If
With WBPalQuelle WBPalZiel.Sheets("Sheet5").Range("B1:H218").Value = Sheets("Sheet1").Range("A1:G219").Value .Close savechanges:=False End With
Nun hab ich aus Set WBPalQuelle = Workbooks.Open(strFile) ein Set WBPalQuelle = Workbooks.Open(strFile, ReadOnly=True) gemacht, hilft aber nix. Es wird trotzdem nicht geöffnet. Wenn es niemand offen hat geht es.
Hat da jemand eine Idee warum das ReadOnly=True nicht funktioniert? Vielleicht an der falschen Stelle?
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• MichaLauterbach
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
15.09.2020, 05:20
(Dieser Beitrag wurde zuletzt bearbeitet: 15.09.2020, 05:20 von RPP63.)
Moin und ergänzend! (14.09.2020, 13:21)MichaLauterbach schrieb: Nun hab ich aus Set WBPalQuelle = Workbooks.Open(strFile) ein Set WBPalQuelle = Workbooks.Open(strFile, ReadOnly=True) gemacht, hilft aber nix. […] Hat da jemand eine Idee warum das ReadOnly=True nicht funktioniert? Vielleicht an der falschen Stelle? Ich gehe mal davon aus, dass Du Option Explicit nicht gesetzt hast. Daher hat die nicht deklarierte Variant- Variable ReadOnly keinerlei Auswirkung! Um den Parameter ReadOnly (siehe den Link von Uwe) zu setzen, braucht man zusätzlich den Doppelpunkt! Also statt ReadOnly = Trueheißt es ReadOnly:=TrueUm so etwas zu verhindern (und auch andere Annehmlichkeiten zu nutzen), setze grundsätzlich Option Explicit! https://www.online-excel.de/excel/singsel_vba.php?f=4Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28
• MichaLauterbach
Registriert seit: 17.07.2020
Version(en): 2013
Hallo Uwe und Ralf,
den Link von Uwe kannte ich schon. Da habe ich aber nix gesehen was mein Fehler erklärt. Das Option Explicit oder einen : benötigt wird steht da nicht. Das Variant eine Variablentyp ist der ohne explicit keine Auswirkung hat war mir nicht bekannt Ich habe das option explicit nie benutzt, weil ich nicht wusste wozu das gut ist.
Ralf ich danke dir für deine Klarstellung mit option und dem :
Vielen Dank!
Registriert seit: 17.07.2020
Version(en): 2013
Ich habe es jetzt mal getestet, und es geht immer noch nicht. Weder mit Option Explicit, noch mit Readonly:=true, und beides zusammen geht auch nicht.
Registriert seit: 17.07.2020
Version(en): 2013
21.09.2020, 12:24
(Dieser Beitrag wurde zuletzt bearbeitet: 21.09.2020, 12:24 von MichaLauterbach.)
Hab den Fehler jetzt gefunden, weiß aber nicht wie ich ihn behebe.
Wenn die Datei niemand geöffnet hat, findet er die neuste 200921_Dateiname.xlsx und öffnet sie normal
Wenn aber geöffnet, findet er ~$200921_Dateiname.xlsx (versteckt) und will die öffnen, was nicht geht.
Kann ich irgendwie diese temporären ~$ Dateien in die Suche nach der neusten Datei ausschließen?
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo, z.B. so: If InStr(1, UCase(target), UCase("Dateiname.xls")) > 0 And Left(target, 2) <> "~$" Then Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• MichaLauterbach
Registriert seit: 17.07.2020
Version(en): 2013
Hallo Uwe,
das funktioniert leider nicht. strFile hat trotzdem die ~$200921_Dateiname.xlsx als Wert.
Registriert seit: 17.07.2020
Version(en): 2013
Kuwer schrieb:Hallo,
z.B. so:If InStr(1, UCase(target), UCase("Dateiname.xls")) > 0 And Left(target, 2) <> "~$" Then Gruß Uwe If InStr(1, UCase(target), UCase("Dateiname.xls")) > 0 And Left(target, 2) <> "~$" Then StrFile bekommt wert "O:\Ordner1\Ordner2\2020\Q3\~$200921_Dateiname.xlsx If InStr(1, UCase(target), UCase("Dateiname.xls")) > 0 And Left(target, 2) = "~$" Then StrFile bekommt keinen Wert If InStr(1, UCase(target), UCase("Dateiname.xls")) > 0 And Left(target, 2) = "O:" Then StrFile bekommt wert "O:\Ordner1\Ordner2\2020\Q3\~$200921_Dateiname.xlsx Ich kann also durch probieren sagen, dass sich das AND Left(target,2) auf den Pfadanfang bezieht, nicht auf den Anfang vom Dateinamen Hat noch jemand einen Vorschlag wie ich Dateien mit ~$ vorne aus der Suche ausschließen kann?
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo, If InStr(1, UCase(target), UCase("Dateiname.xls")) > 0 And InStr(1, target, "~$") = 0 Then Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• MichaLauterbach
|