Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1344to1348
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

Hallo Tino oder andere Helfer

Hallo Tino oder andere Helfer
06.01.2014 22:08:53
Albert
Hallo Tino, hallo VBA Experten
diesen Beitrag habe ich vor ca 1 1/2 Wochen gepostet, jedoch keine Lösung gefunden.
Vielleicht ist Tino auch noch auf Urlaub, ich würde jedoch in den nächsten Tagen dringend eine Lösung benötigen.
Den nachstehenden VBA-Code hat mir Tino vor Monaten zur Verfügung gestellt:
Sub Werte_importieren2()
Dim Pfad_lokal As String
Dim wbZiel As Workbook, wsZiel As Worksheet
Dim wbQuelle As Workbook, wsQuelle As Worksheet, rngQuelle As Range
Dim nRQ&, nRZ&
Set wsZiel = Tabelle1
Pfad_lokal = wsZiel.Range("J10").Value
If Dir(Pfad_lokal, vbNormal) = "" Then
MsgBox "Datei" & vbCr & Pfad_lokal & vbCr & "nicht gefunden", vbExclamation
Exit Sub
End If
Set wbQuelle = Workbooks.Open(Pfad_lokal)
On Error Resume Next
Set wsQuelle = wbQuelle.Worksheets("Journal")
If wsQuelle Is Nothing Then
MsgBox "Tabelle 'Journal' in der Datei " & vbCr & Pfad_lokal & vbCr & "nicht gefunden",  _
vbExclamation
Exit Sub
End If
On Error GoTo 0
On Error GoTo ErrorHandler:
With Application
.ScreenUpdating = False
.EnableEvents = False
If Not wsQuelle Is Nothing Then
With wsQuelle
nRZ = 4 'Voreinstellung
For nRQ = 12 To 28 Step 8
nRZ = nRZ + 8 'von letzter +8 Zeilen
For Each rngQuelle In Union(.Cells(nRQ, 3), .Cells(nRQ, 9), .Cells(nRQ, 10)). _
Areas
'nur Werte
With wsZiel.Cells(nRZ, rngQuelle.Column).Resize(, rngQuelle.Columns.Count)
.Value = rngQuelle.Value
.Copy
.PasteSpecial Paste:=xlPasteFormats
End With
Next rngQuelle
Next nRQ
End With
End If
ErrorHandler:
On Error Resume Next
wbQuelle.Close SaveChanges:=False
ThisWorkbook.Activate
Application.Goto Tabelle1.Cells(15, 3)
.ScreenUpdating = True
.EnableEvents = True
End With
If Err.Number  0 Then
MsgBox Err.Description, _
vbCritical + vbMsgBoxSetForeground + vbMsgBoxHelpButton, _
"Error: " & Err.Number, Err.HelpFile, Err.HelpContext
End If
End Sub

Ich habe den Code teilweise für die geänderten Erfordernisse angepasst und habe nun zwei Fragen, die ich mit meinen bescheidenen VBA-Kenntnissen nicht lösen konnte.
1) Wie ist der Code abzuändern, damit aus Spalte J ( .Cells(nRQ, 10)) auch die Formeln (und nicht nur Werte) kopiert werden. (Zelle kopieren (Formeln u. Formate) wäre für meine Zwecke das Beste)
Falls diese Variante zu kompliziert wird, wäre für meine Zwecke auch (copy and paste) des Bereichs A:J (jede achte Zeile....) zielführend.
2) Ich muss auch Werte aus einer zweiten Tabelle (von derselben Quellarbeitsmappe) importieren und habe nun den Code angepasst und definiere die Quellarbeitsmappe wieder mit:
Set wbQuelle = Workbooks.Open(Pfad_lokal) - Import funktioniert, ich möchte nur die Warnmeldung vermeiden, dass Quelldatei bereits geöffnet ist.
Application.DisplayAlerts = False führt nicht zum gewünschten Ergebnis. Gibt es eine andere Möglichkeit die (bereits geöffnete) Quellarbeitsmappe zu definieren und somit diese Warnmeldung zu vermeiden?
Ich bedanke mich nochmals für Deine (Eure) tolle Unterstützung und hoffe, dass ich mit meinen neuerlichen Fragen nicht lästig erscheine.
LG Albert

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hallo Tino oder andere Helfer
07.01.2014 04:54:28
Mustafa
Hallo Albert,
zu deiner 2. Frage:
Wenn die Quellarbeitsmappe sich nicht ändert und auch noch geöffnet ist brauchst du sie nicht noch einmal definieren.
Du musst dann nur die Tabelle zu der du den Bezug herstellen möchtest ändern und zwar in dieser Zeile von deinem Code:
Set wsQuelle = wbQuelle.Worksheets("Hier der Name der anderen Tabelle")
Für die Frage 1 habe ich im moment leider keine Antwort daher noch Offen.
rückmeldung obs Hilft wäre nett.
Gruß aus der Domstadt Köln.

Danke Mustafa
07.01.2014 12:32:56
Albert
Hallo Mustafa,
danke für Deine Rückmeldung, versuche gerade Deinen Hinweis umzusetzen. Funktioniert grundsätzlich, nur muss ich noch Anpassungen vornehmen, da jetzt plötzlich die Werte der ersten Tabelle in die zweite Tabelle kopiert werden, und nicht wie es sein soll, Werte aus Quelltabelle 1 in Zieltabelle 1 und Werte aus Quelltabelle 2 in Zieltabelle 2. Ich hoffe, dass ich dieses Problem in den Griff kriege.
Für alle Forumsteilnehmer, wenn Ihr eine Lösung für Frage 1 hättet, wäre ich sehr dankbar.
Gruß Albert

Anzeige
AW: Danke Mustafa
08.01.2014 08:08:30
fcs
Hallo Albert,
zu Frage 1: Sollte mit folgenden Anpassungen funktinieren.
Gruß
Franz
Sub Werte_importieren2()
Dim Pfad_lokal As String
Dim wbZiel As Workbook, wsZiel As Worksheet
Dim wbQuelle As Workbook, wsQuelle As Worksheet, rngQuelle As Range
Dim nRQ&, nRZ&, lngSpalte As Long
Set wsZiel = Tabelle1
Pfad_lokal = wsZiel.Range("J10").Value
If Dir(Pfad_lokal, vbNormal) = "" Then
MsgBox "Datei" & vbCr & Pfad_lokal & vbCr & "nicht gefunden", vbExclamation
Exit Sub
End If
Set wbQuelle = Workbooks.Open(Pfad_lokal)
On Error Resume Next
Set wsQuelle = wbQuelle.Worksheets("Journal")
If wsQuelle Is Nothing Then
MsgBox "Tabelle 'Journal' in der Datei " & vbCr & Pfad_lokal & vbCr & "nicht gefunden", _
vbExclamation
Exit Sub
End If
On Error GoTo 0
On Error GoTo ErrorHandler:
With Application
.ScreenUpdating = False
.EnableEvents = False
If Not wsQuelle Is Nothing Then
With wsQuelle
nRZ = 4 'Voreinstellung
For nRQ = 12 To 28 Step 8
nRZ = nRZ + 8 'von letzter +8 Zeilen
For lngSpalte = 3 To 10
Select Case lngSpalte
Case 3, 9
'nur Werte
Set rngQuelle = .Cells(nRQ, lngSpalte)
wsZiel.Cells(nRZ, rngQuelle.Column).Value = rngQuelle.Value
Case 10
'Format und Formeln
Set rngQuelle = .Cells(nRQ, lngSpalte)
rngQuelle.Copy
With wsZiel.Cells(nRZ, rngQuelle.Column)
.PasteSpecial Paste:=xlPasteFormats
.PasteSpecial Paste:=xlPasteFormulas
End With
Next lngSpalte
End Select
Next nRQ
End With
End If
ErrorHandler:
On Error Resume Next
wbQuelle.Close SaveChanges:=False
ThisWorkbook.Activate
Application.Goto Tabelle1.Cells(15, 3)
.ScreenUpdating = True
.EnableEvents = True
End With
If Err.Number  0 Then
MsgBox Err.Description, _
vbCritical + vbMsgBoxSetForeground + vbMsgBoxHelpButton, _
"Error: " & Err.Number, Err.HelpFile, Err.HelpContext
End If
End Sub

Anzeige
AW: Herzlichen Dank Franz
08.01.2014 13:42:47
Albert
Hallo Franz,
herzlichen Dank für Deine Unterstützung, leider kommt die Meldung "Next ohne For" und zwar wird das Next bei "Next lngSpalte" blau unterlegt. Mit meinen VBA-Kenntnissen war es mir leider nicht möglich den Fehler zu finden, da meiner Meinung nach das fehlende "For" sehr wohl vorhanden ist.
Die Voraussetzungen für den Import haben sich geändert und so wäre es nun für meine Zwecke inzwischen zielführender einfach den Bereich von Spalte A bis Spalte J (jede 8. Zeile) zu kopieren und in der Zieltabelle einzufügen (Formeln und Formate).
Ich hoffe, Du kannst mir da aus der Patsche helfen.
Nochmals vielen Dank, Albert

Anzeige
Ja, Albert, aber es steht an falscher Stelle; ...
08.01.2014 13:52:09
Luc:-?
…erst müsste das hier nachfolgd End Select kommen, dann erst Next lngSpalte!
Gruß Luc :-?

AW: Vielen Dank Luc und Franz
08.01.2014 14:08:30
Albert
Hallo Luc,
vielen herzlichen Dank, nun ist die "Welt" für mich wieder in Ordnung. Mir ist mit diesem nun funktionierenden Makro sehr geholfen. Nochmals auch Danke an Franz!
Ich wünsche einen schönen Tag
Albert

Na dann, dito! ;-) owT
08.01.2014 14:18:21
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige