#444216 crowsname
Arnsberg, 05.02.2021, 16:50:43
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... (pc.sw.office) |
...nicht festgelegt
Hallo zusammen,
Wir haben hier auf dem Server zwei Dateien liegen. Die untereinander Daten austauschen sollen.
Funktioniert bei allen Rechnern tadellos. Nur bei einem Rechner kommt die oben genannte Fehlermeldung.
Der Debugger gibt folgendes aus:
Set wsh_q = ActiveWorkbook.Worksheets("Tabelle1")
Set wsh_z = Workbooks.Open(ActiveWorkbook.Path & "\PayPal Berechnen.xlsm").Worksheets("PayPal")
var_q = Split("c,d,e,f", ",")
var_z = Split("a,k,j,l", ",")
letzte = wsh_q.Range("A65536").End(xlUp).Row
str_r = "#1:#" & letzte
Fehler soll in der 2. Zeile liegen.
Die Variable wsh_z ist aber deklariert.
Ich verstehe nicht, warum es bei den anderen Rechnern funktioniert, nur bei dem einen nicht.
Besten Gruß
Michael
--
MfG
Michael
-------------------------------------
Personal Training und Ernährungsberatung
http://www.dein-bpc.de
Natürliche Baustoffe:
http://www.auro-online.de
Getreidemühlen und Zubehör:
http://www.getreidemuehlen.de
Sport in Arnsberg:
http://www.personaltraining-nh.de/Home
|
#444217 fuchsi
Niederösterreich, 05.02.2021, 17:25:06
@ crowsname
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... |
was steht in ActiveWorkbook.Path drin?
--
mein privates Hobby. www.ffzell.at
|
#444218 manes
Köln, 05.02.2021, 17:33:34
@ crowsname
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... |
Hallo
> Wir haben hier auf dem Server zwei Dateien liegen. Die untereinander Daten
> austauschen sollen.
Greifen die Rechner allesamt auf dieselben Excel-Dateien auf dem Server zu?
Wenn das jeweils separat erfolgt, als was ist denn wsh_z deklariert?
FFPX
Manes
--
Also wenn ich ehrlich sein sollte, müsste ich lügen!
|
#444293 crowsname
Arnsberg, 08.02.2021, 10:51:30
@ manes
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... |
> Greifen die Rechner allesamt auf dieselben Excel-Dateien auf dem Server zu?
>
> Wenn das jeweils separat erfolgt, als was ist denn wsh_z deklariert?
Hallo,
sorry das ich mich jetzt erst zurück melde.
Ja, alle greifen auf die gleichen Dateien auf dem Server zu. Teilweise haben die Rechner Excel 16 / 19 oder 365.
Das ist der gesamte Code:
Sub PayPalAufbereitungDatenKopieren()
Workbooks.Open "\\SERVER-PC\SrvDaten\Buchhaltung\2021\PayPal Berechnen.xlsm"
Workbooks("PayPal Berechnen.xlsm").Activate
Worksheets("PayPal").Activate
Dim letzten As Long
'Prüfen ob Daten eingetragen sind und dann ggf. löschen oder Fehlermeldung ausgeben'
If Range("A11").Value = "" Then
Else
letzten = Range("A65536").End(xlUp).Row
Range("A11:N" & letzten).Clear
End If
'Sicher gehen, dass die richtige Mappe geöffnet und aktiviert ist'
Workbooks.Open "\\SERVER-PC\SrvDaten\Buchhaltung\2021\PayPal Aufbereitung.xlsm"
Workbooks("PayPal Aufbereitung.xlsm").Activate
Dim wsh_q As Worksheet
Dim wsh_z As Worksheet
Dim var_q As Variant
Dim var_z As Variant
Dim int_x As Integer
Dim str_r As String
Dim str_q As String
Dim str_z As String
Dim letzte As Long
'Festlegen aus welchem Tabellenblatt welche Daten wohin verschoben werden soll'
Set wsh_q = ActiveWorkbook.Worksheets("Tabelle1")
Set wsh_z = Workbooks.Open(ActiveWorkbook.Path & "\PayPal Berechnen.xlsm").Worksheets("PayPal")
var_q = Split("c,d,e,f", ",")
var_z = Split("a,k,j,l", ",")
letzte = wsh_q.Range("A65536").End(xlUp).Row
str_r = "#1:#" & letzte
'Durchlauf bis alle Spalten durchlaufen sind'
For int_x = 0 To UBound(var_q)
str_q = Replace(str_r, "#", var_q(int_x))
str_z = Replace(str_r, "#", var_z(int_x))
wsh_q.Range(str_q).Copy Destination:=wsh_z.Range(str_z).Offset(10)
Next
End Sub
--
MfG
Michael
-------------------------------------
Personal Training und Ernährungsberatung
http://www.dein-bpc.de
Natürliche Baustoffe:
http://www.auro-online.de
Getreidemühlen und Zubehör:
http://www.getreidemuehlen.de
Sport in Arnsberg:
http://www.personaltraining-nh.de/Home
|
#444294 crowsname
Arnsberg, 08.02.2021, 10:53:04
@ fuchsi
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... |
> was steht in ActiveWorkbook.Path drin?
Hallo,
sorry das ich mich jetzt erst zurück melde.
Hier der gesamte Code:
Sub PayPalAufbereitungDatenKopieren()
Workbooks.Open "\\SERVER-PC\SrvDaten\Buchhaltung\2021\PayPal Berechnen.xlsm"
Workbooks("PayPal Berechnen.xlsm").Activate
Worksheets("PayPal").Activate
Dim letzten As Long
'Prüfen ob Daten eingetragen sind und dann ggf. löschen oder Fehlermeldung ausgeben'
If Range("A11").Value = "" Then
Else
letzten = Range("A65536").End(xlUp).Row
Range("A11:N" & letzten).Clear
End If
'Sicher gehen, dass die richtige Mappe geöffnet und aktiviert ist'
Workbooks.Open "\\SERVER-PC\SrvDaten\Buchhaltung\2021\PayPal Aufbereitung.xlsm"
Workbooks("PayPal Aufbereitung.xlsm").Activate
Dim wsh_q As Worksheet
Dim wsh_z As Worksheet
Dim var_q As Variant
Dim var_z As Variant
Dim int_x As Integer
Dim str_r As String
Dim str_q As String
Dim str_z As String
Dim letzte As Long
'Festlegen aus welchem Tabellenblatt welche Daten wohin verschoben werden soll'
Set wsh_q = ActiveWorkbook.Worksheets("Tabelle1")
Set wsh_z = Workbooks.Open(ActiveWorkbook.Path & "\PayPal Berechnen.xlsm").Worksheets("PayPal")
var_q = Split("c,d,e,f", ",")
var_z = Split("a,k,j,l", ",")
letzte = wsh_q.Range("A65536").End(xlUp).Row
str_r = "#1:#" & letzte
'Durchlauf bis alle Spalten durchlaufen sind'
For int_x = 0 To UBound(var_q)
str_q = Replace(str_r, "#", var_q(int_x))
str_z = Replace(str_r, "#", var_z(int_x))
wsh_q.Range(str_q).Copy Destination:=wsh_z.Range(str_z).Offset(10)
Next
End Sub
--
MfG
Michael
-------------------------------------
Personal Training und Ernährungsberatung
http://www.dein-bpc.de
Natürliche Baustoffe:
http://www.auro-online.de
Getreidemühlen und Zubehör:
http://www.getreidemuehlen.de
Sport in Arnsberg:
http://www.personaltraining-nh.de/Home
|
#444345 manes
Köln, 10.02.2021, 22:47:20
@ crowsname
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... |
Hallo
Kam mir doch so bekannt vor. Ist jetzt ein Jahr her!
Mir sind zwei Dinge aufgefallen:
1. Ich hatte damals schon dargestellt, dass das ständige Aktivieren unnötig ist und das ganze unübersichtlich macht. Jetzt hast Du es doch wieder angewendet.
2. Wenn ich das richtig verstehe, wird jeweils von einer lokalen Excel-Datei gestartet, um von einer Datei auf dem Server auf eine andere Datei auf dem Server zu kopieren. Wenn Du das so löst, muss gewährleistet sein, dass jede dieser lokalen Excel-Dateien auf den jeweiligen PCs bezgl. des Makrocodes absolut identisch ist. Ist das der Fall?
Alternative: Excel-Datei, die den Kopiervorgang steuert, ebenfalls auf den Server legen und dann von den einzelnen PCs dort aufrufen.
Oder den Kopiercode in eine der beiden Dateien integrieren und dort aufrufen.
Besteht das Problem denn überhaupt noch?
FFPX
Manes
> > Greifen die Rechner allesamt auf dieselben Excel-Dateien auf dem Server
> zu?
> >
> > Wenn das jeweils separat erfolgt, als was ist denn wsh_z deklariert?
>
> Hallo,
>
> sorry das ich mich jetzt erst zurück melde.
>
> Ja, alle greifen auf die gleichen Dateien auf dem Server zu. Teilweise
> haben die Rechner Excel 16 / 19 oder 365.
>
> Das ist der gesamte Code:
>
>
> Sub PayPalAufbereitungDatenKopieren()
>
> Workbooks.Open "\\SERVER-PC\SrvDaten\Buchhaltung\2021\PayPal
> Berechnen.xlsm"
>
> Workbooks("PayPal Berechnen.xlsm").Activate
>
> Worksheets("PayPal").Activate
>
> Dim letzten As Long
>
> 'Prüfen ob Daten eingetragen sind und dann ggf. löschen oder
> Fehlermeldung ausgeben'
>
> If Range("A11").Value = "" Then
> Else
> letzten = Range("A65536").End(xlUp).Row
> Range("A11:N" & letzten).Clear
> End If
>
> 'Sicher gehen, dass die richtige Mappe geöffnet und aktiviert ist'
>
> Workbooks.Open "\\SERVER-PC\SrvDaten\Buchhaltung\2021\PayPal
> Aufbereitung.xlsm"
>
> Workbooks("PayPal Aufbereitung.xlsm").Activate
>
> Dim wsh_q As Worksheet
> Dim wsh_z As Worksheet
> Dim var_q As Variant
> Dim var_z As Variant
> Dim int_x As Integer
> Dim str_r As String
> Dim str_q As String
> Dim str_z As String
> Dim letzte As Long
>
> 'Festlegen aus welchem Tabellenblatt welche Daten wohin verschoben werden
> soll'
>
> Set wsh_q = ActiveWorkbook.Worksheets("Tabelle1")
> Set wsh_z = Workbooks.Open(ActiveWorkbook.Path & "\PayPal
> Berechnen.xlsm").Worksheets("PayPal")
> var_q = Split("c,d,e,f", ",")
> var_z = Split("a,k,j,l", ",")
> letzte = wsh_q.Range("A65536").End(xlUp).Row
> str_r = "#1:#" & letzte
>
> 'Durchlauf bis alle Spalten durchlaufen sind'
>
> For int_x = 0 To UBound(var_q)
> str_q = Replace(str_r, "#", var_q(int_x))
> str_z = Replace(str_r, "#", var_z(int_x))
> wsh_q.Range(str_q).Copy Destination:=wsh_z.Range(str_z).Offset(10)
> Next
> End Sub
>
--
Also wenn ich ehrlich sein sollte, müsste ich lügen!
|
#444346 crowsname
Arnsberg, 11.02.2021, 10:21:10
@ manes
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... |
> Hallo
> Kam mir doch so bekannt vor. Ist jetzt ein Jahr her!
>
Jap, du hattest mir damals schon geholfen.
> 1. Ich hatte damals schon dargestellt, dass das ständige Aktivieren
> unnötig ist und das ganze unübersichtlich macht. Jetzt hast Du es doch
> wieder angewendet.
Ja, wollte es immer mal anpassen, bin aber im Tagesgeschäft nicht zu gekommen.
> 2. Wenn ich das richtig verstehe, wird jeweils von einer lokalen
> Excel-Datei gestartet, um von einer Datei auf dem Server auf eine andere
> Datei auf dem Server zu kopieren. Wenn Du das so löst, muss gewährleistet
> sein, dass jede dieser lokalen Excel-Dateien auf den jeweiligen PCs bezgl.
> des Makrocodes absolut identisch ist. Ist das der Fall?
> Alternative: Excel-Datei, die den Kopiervorgang steuert, ebenfalls auf den
> Server legen und dann von den einzelnen PCs dort aufrufen.
> Oder den Kopiercode in eine der beiden Dateien integrieren und dort
> aufrufen.
Beide Dateien liegen auf dem Server. Es greifen also alle Rechner auf die gleichen Dateien auf dem Server zu.
Es wird von der PayPal Aufbereiten (die auf den Server liegt) in die PayPal Berechnen (die auf dem Server liegt) kopiert.
> Besteht das Problem denn überhaupt noch?
Jap, besteht noch.
Danke mal wieder für deine Mühe!
--
MfG
Michael
-------------------------------------
Personal Training und Ernährungsberatung
http://www.dein-bpc.de
Natürliche Baustoffe:
http://www.auro-online.de
Getreidemühlen und Zubehör:
http://www.getreidemuehlen.de
Sport in Arnsberg:
http://www.personaltraining-nh.de/Home
|
#444348 Johann
11.02.2021, 15:26:15 (editiert von Johann, 11.02.2021, 15:32:00)
@ crowsname
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... (ed) |
Von Excel habe ich nicht viel Ahnung, aber wie ich das beim Überfliegen sehe öffnest Du ganz am Anfang die Datei „PayPal Berechnen.xlsx“. Dann öffnest Du die später im Verlauf des Codes nochmal. Möglicherweise mokiert das eine der eingesetzten Excel-Versionen mit dem beschriebenen Fehler, wahrscheinlich die aktuellste (365).
Wenn dem so ist weise der ersten Öffnung bereits eine Variable zu und selektiere später wieder den benötigten Worksheet darüber (empfohlen) oder schließe das Workbook nach dem ersten öffnen wieder.
|
#444359 manes
Köln, 12.02.2021, 01:10:19 (editiert von manes, 12.02.2021, 01:10:52)
@ crowsname
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... (ed) |
Hallo
> Beide Dateien liegen auf dem Server. Es greifen also alle Rechner auf die
> gleichen Dateien auf dem Server zu.
> Es wird von der PayPal Aufbereiten (die auf den Server liegt) in die PayPal
> Berechnen (die auf dem Server liegt) kopiert.
Ich glaube zwar nicht, dass evtl. unterschiedliche xls-Varianten eine Rolle spielen könnten, aber vielleicht hilft Aufräumen ein wenig.
Versuch es mal hiermit. Am Schluss werden die beiden geöffneten xls-Dateien wieder geschlossen und die Zieldatei dabei gespeichert. Ggf. weglassen.
Sub PayPalAufbereitungDatenKopieren()
Dim wb_q As Workbook
Dim wb_z As Workbook
Dim wsh_q As Worksheet
Dim wsh_z As Worksheet
Dim var_q As Variant
Dim var_z As Variant
Dim int_x As Integer
Dim str_r As String
Dim str_q As String
Dim str_z As String
Dim letzte As Long
Const cStr_Ordner As String = "\\SERVER-PC\SrvDaten\Buchhaltung\2021\"
Set wb_q = Workbooks.Open(cStr_Ordner & "PayPal Aufbereitung.xlsm")
Set wb_z = Workbooks.Open(cStr_Ordner & "PayPal Berechnen.xlsm")
Set wsh_q = wb_q.Worksheets("Tabelle1")
Set wsh_z = wb_z.Worksheets("Paypal")
With wsh_q
If .Range("A11") <> "" Then
letzte = .Range("A65536").End(xlUp).Row
.Range("A11:N" & letzten).Clear
End If
End With
var_q = Split("c,d,e,f", ",")
var_z = Split("a,k,j,l", ",")
str_r = "#1:#" & letzte
For int_x = 0 To UBound(var_q)
str_q = Replace(str_r, "#", var_q(int_x))
str_z = Replace(str_r, "#", var_z(int_x))
wsh_q.Range(str_q).Copy Destination:=wsh_z.Range(str_z).Offset(10)
Next
wb_q.Close
wb_z.Close savechanges:=True
End Sub
--
Also wenn ich ehrlich sein sollte, müsste ich lügen!
|
#444380 manes
Köln, 13.02.2021, 11:01:50
@ manes
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... |
Kleine Berichtigung. Statt letzten muss es letzte heißen
> With wsh_q
> If .Range("A11") <> "" Then
> letzte = .Range("A65536").End(xlUp).Row
> .Range("A11:N" & letzten).Clear
> End If
> End With
--
Also wenn ich ehrlich sein sollte, müsste ich lügen!
|
#444381 crowsname
Arnsberg, 13.02.2021, 20:25:46
@ manes
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... |
Ganz herzlichen Dank für deine Mühe.
Werde es im Laufe der nächsten Woche testen und mich dann zurück melden.
--
MfG
Michael
-------------------------------------
Personal Training und Ernährungsberatung
http://www.dein-bpc.de
Natürliche Baustoffe:
http://www.auro-online.de
Getreidemühlen und Zubehör:
http://www.getreidemuehlen.de
Sport in Arnsberg:
http://www.personaltraining-nh.de/Home
|
#444382 crowsname
Arnsberg, 13.02.2021, 20:27:43
@ Johann
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... |
Hi,
danke dir.
Werde schauen, ob das das Problem ist. Was ich so schon sagen kann ist, dass der Rechner der Probleme macht nicht die 365 Version hat.
Wenn ich was raus bekomme, melde ich mich noch mal.
Danke noch mal.
--
MfG
Michael
-------------------------------------
Personal Training und Ernährungsberatung
http://www.dein-bpc.de
Natürliche Baustoffe:
http://www.auro-online.de
Getreidemühlen und Zubehör:
http://www.getreidemuehlen.de
Sport in Arnsberg:
http://www.personaltraining-nh.de/Home
|
#444385 Johann
14.02.2021, 09:02:40
@ crowsname
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... |
manes hat diese Sache bereits in seinem Lösungsvorschlag adressiert, da kannst Du Zeit sparen und besser direkt auf Basis seiner Variante weiter entwickeln.
|
#444405 crowsname
Arnsberg, 17.02.2021, 11:02:47
@ manes
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... |
Hi,
stoße gerade auf ein Problem und finde den Fehler nicht.
Egal wie viele Daten ich in die PayPal Aufbereiten einfüge, es werden immer nur 10 Datensätze übertragen.
Alles unter den 10 wird nicht übertragen und auch aus der PayPal Aufbereiten raus gelöscht.
Hab nicht den Part in deinem Code gefunden, der das verursacht.
Besten Gruß
Michael
--
MfG
Michael
-------------------------------------
Personal Training und Ernährungsberatung
http://www.dein-bpc.de
Natürliche Baustoffe:
http://www.auro-online.de
Getreidemühlen und Zubehör:
http://www.getreidemuehlen.de
Sport in Arnsberg:
http://www.personaltraining-nh.de/Home
|
#444406 manes
Köln, 17.02.2021, 20:05:21
@ crowsname
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... |
Hallo
> Alles unter den 10 wird nicht übertragen und auch aus der PayPal
> Aufbereiten raus gelöscht.
> Hab nicht den Part in deinem Code gefunden, der das verursacht.
In der Passage
With wsh_q
If .Range("A11") <> "" Then
letzte = .Range("A65536").End(xlUp).Row
.Range("A11:N" & letzten).Clear
End If
End With
wird geprüft.in welcher Zeile die letzte Eintragung in der Spalte A ist. Wenn von A11 abwärts nichts eingetragen ist, ist der Wert letzte = 10. Dementsprechend werden dann auch nur 10 Datensätze übertragen. So waren Deine Vorgaben!
Wenn Du möchtest, dass alles in den Spalten c bis f übertragen werden soll, dann vergiss die Variable letzte. In dem Fall müsstest Du vielmehr die kompletten Spalten übertragen, allerdings ohne die letzten 10 Zeilen, weil am Zielpunkt ja alles um 10 Zeilen nach unten versetzt eingefügt werden sollen.
M.a.W.
statt str_r = "#1:#" & letzte müsste es dann heißen
str_r = "#1:#" & 65526
Schaumerma, ob es so klappt.
Viel Erfolg
Manes
--
Also wenn ich ehrlich sein sollte, müsste ich lügen!
|
#450321 crowsname
Arnsberg, 07.12.2021, 10:23:39
@ manes
|
Excel VBA Laufzeitfehler 91 (Objektvariable oder With-Blockvariable... |
Hi,
ich bin jetzt endlich mal dazu gekommen, die Datei für nächstes Jahr mit deinen Hilfestellungen anzupassen.
Es ist jetzt aufgeräumter und klappt auch an den meisten Rechnern.
An 2 Rechner kommt jetzt Laufzeitfehler 438 - Objekt unterstützt die Methode nicht.
Das ist aber wieder an einer ganz anderen Stelle und wird wahrscheinlich an den Versionen liegen.
Das ist aber nicht tragisch.
Danke noch mal für deine Hilfe.
--
MfG
Michael
-------------------------------------
Personal Training und Ernährungsberatung
http://www.dein-bpc.de
Natürliche Baustoffe:
http://www.auro-online.de
Getreidemühlen und Zubehör:
http://www.getreidemuehlen.de
Sport in Arnsberg:
http://www.personaltraining-nh.de/Home
|