Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1492to1496
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
Inhaltsverzeichnis

Datenübertrag in geschützes Sheet scheitert

Datenübertrag in geschützes Sheet scheitert
09.05.2016 13:36:52
Dietmar
Hallo in die Runde,
nach längerer Zeit habe ich mal wieder ein Nuss zu knacken. Tüftele bereits seit längerer Zeit erfolglos ein folgendem Codeschnipsel herum, da der Befehl für einen Datenübertrag auf einmal nicht mehr funktioniert.
Den Code hatte ich vor ein paar Jahren hier im Forum mal von Sepp erhalten; seither lief alles bestens. Der Code öffnet aus einer Exceldatei heraus per Makro den Dateiexplorer; dort wird dann die Datei ausgewählt und DANN sollte der ÜbertragungsCode ablaufen. Der Code scheitert zur Zeit aber schon beim Aufruf der ausgewählten Zieldatei (WENN diese einen Blattschutz hat; der muss aber erhalten bleiben).
Das Problem betrifft auch nicht alle Anwender, sondern merkwürdigerweise nur Excel-User, die Windows 10 verwenden, wiewohl ich mir keinen Reim daraus machen kann.
Aus Kompatibilitätsgründen wird das .xls-Dateiformat verwendet.
Muss ggf. in der Deklaration etwas geändert oder angepasst werden oder sollte ich das mir bekannte PW beim Aufruf hinterlegen (wiewohl das bisher nicht nötig war)?

'Datei aufrufen und Datenübertrag starten ...
Dim strFile As String, strNewName As String
Dim objWB As Workbook, objWS As Worksheet, objTarget As Worksheet
Dim Rng As Range, rngF As Range, rngc As Range
Dim blnOpen As Boolean
Dim lngRow As Long, lngLast As Long, lngN As Long
Dim varResult As Variant
On Error GoTo ErrExit
GMS
ChDrive "C"
ChDir "C:\Testordner\01-Testunterordner"
strFile = Application.GetOpenFilename("Excel Dateien (*.xls; *.xlsx; *.xlsm)," & _
"*.xls; *.xlsx; *.xlsm")
If strFile = "Falsch" Or strFile = ThisWorkbook.FullName Then GoTo ErrExit
(!) ab hier springt der Befehl zu 'ErrExit' und bricht dann natürlcih ab. Aber nur, wenn die  _
Datei einen Blattschutz hat (!)
blnOpen = IsOpen(strFile)
If blnOpen Then
Set objWB = Workbooks(Mid(strFile, InStrRev(strFile, "\") + 1))
Else
Set objWB = Workbooks.Open(strFile)
End If
Set objTarget = objWB.Sheets(1) 'Tabelle 1 aktivieren, egal wie sie heißt
Ich wäre für ein Idee sehr dankbar.
Viele Grüße
Dietmar aus Aachen

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenübertrag in geschützes Sheet scheitert
09.05.2016 14:07:14
ChrisL
Hi Dietmar
Kann es sein, dass unterschiedliche Länder-/Spracheinstellungen im Spiel sind?
Folgende Zeile würde z.B. ein "englischer Rechner" nicht verstehen:
If strFile = "Falsch" ...
Falls nicht, überprüfe mal alle Variablen (eine Zeile bevor der Code abbricht):
MsgBox strFile
MsgBox ThisWorkbook.FullName
cu
Chris

AW: Datenübertrag in geschützes Sheet scheitert
09.05.2016 21:29:08
Dietmar
Hallo Chris,
vielen Dank für Deine Rückmeldung.
Mit einer Ländereinstellung hat's nichts zu tun; es läuft ja auch bei den meisten Anwendern einwandfrei; nur bei einigen nicht, die Win10 haben.
Aber bei denen läuft es auch, wenn der Blattschutz rausgenommen wird (soll aber nicht sein).
Hatte auch schon versucht, den Blattschutz per Makro neu zu setzen mit 'userinterfaceonly:=True' Hat aber auch nichts gebracht.
Hab die Msgbox-Variablenprüfungen mal vorgeschlaltet. Sowohl die Zieldatei (strFile) als auch die Quelldatei aus der heraus die Datenübertragen werden sollen (ThisWorkbook.FullName) werden richtig erkannt.
Hoffe weiter auf Hilfe.
VG
Dietmar

Anzeige
AW: Datenübertrag in geschützes Sheet scheitert
10.05.2016 08:23:35
ChrisL
Hi Dietmar
Du müsstest mal Klarheit schaffen, wo der Code genau abbricht. Mit der OnError Anweisung stocherst du im Dunkeln.
Sub t()
Dim strFile As String, strNewName As String
Dim objWB As Workbook, objWS As Worksheet, objTarget As Worksheet
Dim Rng As Range, rngF As Range, rngc As Range
Dim blnOpen As Boolean
Dim lngRow As Long, lngLast As Long, lngN As Long
Dim varResult As Variant
GMS
ChDrive "C"
ChDir "C:\Testordner\01-Testunterordner"
strFile = Application.GetOpenFilename("Excel Dateien (*.xls; *.xlsx; *.xlsm)," & _
"*.xls; *.xlsx; *.xlsm")
If strFile = "Falsch" Or strFile = ThisWorkbook.FullName Then MsgBox "x"
MsgBox "y"
blnOpen = IsOpen(strFile)
MsgBox "z"
If blnOpen Then
Set objWB = Workbooks(Mid(strFile, InStrRev(strFile, "\") + 1))
Else
Set objWB = Workbooks.Open(strFile)
End If
Set objTarget = objWB.Sheets(1) 'Tabelle 1 aktivieren, egal wie sie heißt
End Sub

Vielleicht ist die Funktion IsOpen das Problem, dann müsste man mal den Code kennen.
Konkret habe ich auch noch keine Lösung, aber ein erster Schritt wäre das Problem einzugrenzen.
cu
Chris

Anzeige
AW: Datenübertrag in geschützes Sheet scheitert
11.05.2016 22:29:16
Dietmar
Hallo Chris,
herzlichen Dank!
Du hattest recht. Habe den gesamten Code mal durchforstet und ausgemistet. Es waren Doppelungen für Befehle drin, auf die neuere xl-Versionen wohl sensibel reagiert haben.
Läuft nun.
VG Dietmar

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige