Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1084to1088
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

einzelne Zellen importieren

einzelne Zellen importieren
Markus
Hallo zusammen,
mit folgendem Code konnte ich (jetzt geändert) aus Dateien die Zeile A2:EA2 kopieren und in ein neues Datenblatt importieren. Nun möchte ich aber nicht eine Zeile importieren, sondern einzelne Zellen (C6,C8,C10,C12, D31, A35 usw.) Diese Zellen möchte ich dann in einem neuen Arbeitsblatt in die Spalte A2:I2 importieren, danach die nächste Zellen aus einer Tabelle usw. Die Arbeitsblätter ("Vorlagen") sind alle gleich aufgebaut und der Speicherpfad identisch. Ich habs nun lange probiert und viel gesucht, aber ich bekomms nicht hin. Habe den folgenden Code bereits teilweise angepasst. Bitte um eure Hilfe!
Anbei Code:

Sub TestLeseDaten()
Dim sFiles As String
Dim strPfad As String
Dim iCalc As Integer
Dim iCounter As Integer
Dim shZiel As Worksheet
Dim wbQuelle As Workbook
strPfad = "H:\Privatkunden\Vorlagen\"
UserForm_Anzeige.Repaint
Set shZiel = ActiveSheet
With Application
.ScreenUpdating = False
.EnableEvents = False
iCalc = .Calculation
.Calculation = xlCalculationManual
On Error GoTo ErrFehler:
sFiles = Dir$(strPfad)
Do While sFiles  ""
Set wbQuelle = GetObject(strPfad & sFiles)
wbQuelle.Sheets("Vorlage").Range("C6").Resize(1, 9).Copy
shZiel.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Application.CutCopyMode = False
wbQuelle.Saved = True
wbQuelle.Close
sFiles = Dir$()
Loop
ErrFehler:
.ScreenUpdating = True
.EnableEvents = True
.Calculation = iCalc
End With
Unload UserForm_Anzeige
If Err.Number  0 Then MsgBox Err.Number & Chr(13) & Chr(13) & Err.Description, vbCritical, " _
Fehler """
End Sub


AW: einzelne Zellen importieren
30.06.2009 18:57:10
Uduuh
Hallo,
schreib deine Werte erst in ein Array und dann das in die Tabelle.

Sub TestLeseDaten()
Dim sFiles As String
Dim strPfad As String
Dim iCalc As Integer
Dim iCounter As Integer
Dim shZiel As Worksheet
Dim wbQuelle As Workbook
Dim arrTmp(1 To 1, 1 To 6)    '2.Dimension anpassen
strPfad = "H:\Privatkunden\Vorlagen\"
UserForm_Anzeige.Repaint
Set shZiel = ActiveSheet
With Application
.ScreenUpdating = False
.EnableEvents = False
iCalc = .Calculation
.Calculation = xlCalculationManual
On Error GoTo ErrFehler:
sFiles = Dir$(strPfad)
Do While sFiles  ""
Set wbQuelle = GetObject(strPfad & sFiles)
With wbQuelle.Sheets("Vorlage")
arrTmp(1, 1) = .Cells(6, 3)
arrTmp(1, 2) = .Cells(8, 3)
arrTmp(1, 3) = .Cells(10, 3)
arrTmp(1, 4) = .Cells(12, 3)
arrTmp(1, 5) = .Cells(31, 4)
arrTmp(1, 6) = .Cells(35, 1)
'weiter mit weiteren Zellen
shZiel.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, UBound(arrTmp, 2)) =  _
arrTmp
Application.CutCopyMode = False
wbQuelle.Saved = True
wbQuelle.Close
sFiles = Dir$()
Loop
ErrFehler:
.ScreenUpdating = True
.EnableEvents = True
.Calculation = iCalc
End With
Unload UserForm_Anzeige
If Err.Number  0 Then MsgBox Err.Number & Chr(13) & Chr(13) & Err.Description, vbCritical, " _
Fehler"
End Sub


Gruß aus’m Pott
Udo

Anzeige
AW: einzelne Zellen importieren
01.07.2009 11:51:26
Markus
Hallo Udo, Hallo Tino,
so, nun habe ich es mal getestet.
@ Udo Es kommt eine Fehlermeldung: Fehler beim kompilieren: Loop ohne Do
@ Tino kommt Fehlermeldung: Kann Teil einer verbundenen Zelle nicht ändern! Wenn ich dann jeweils nur eine Zelle angebe, anstatt mehrere zusammen zu fassen, dann importiert er mir die Inhalte. Allerdings werden die Inhalte untereinander geschrieben und nicht Inhalte von Vorlage 1 in A2 bis I2.
Vielleicht hätte ich noch erwähnen sollen, das es bei bei den abzufragenden Zellen um verbundene Zellen handelt, aber die Inhalte in einzelne Zellen importiert werden sollen. Ich weiß, sowas ist immer Mist, aber die Optik spielt halt auch ne Rolle........
Das zum Stand der Dinge.
Werde aber weiter prüfen und schauen woran es liegt.
Markus
Anzeige
AW: einzelne Zellen importieren
01.07.2009 13:04:03
Markus
Hallo Udo, Hallo Tino,
so, nun habe ich es mal getestet.
@ Udo Es kommt eine Fehlermeldung: Fehler beim kompilieren: Loop ohne Do
@ Tino kommt Fehlermeldung: Kann Teil einer verbundenen Zelle nicht ändern! Wenn ich dann jeweils nur eine Zelle angebe, anstatt mehrere zusammen zu fassen, dann importiert er mir die Inhalte. Allerdings werden die Inhalte untereinander geschrieben und nicht Inhalte von Vorlage 1 in A2 bis I2.
Vielleicht hätte ich noch erwähnen sollen, das es bei bei den abzufragenden Zellen um verbundene Zellen handelt, aber die Inhalte in einzelne Zellen importiert werden sollen. Ich weiß, sowas ist immer Mist, aber die Optik spielt halt auch ne Rolle........
Das zum Stand der Dinge.
Werde aber weiter prüfen und schauen woran es liegt.
Markus
Anzeige
warum können...
01.07.2009 13:18:48
robert
hi,
..nicht gleich alle vorgaben angegeben werden?
und zur optik-
das kannst du genauso mit
format
zellen
ausrichtung
horizontal
über auswahl zentrieren
erreichen :-)
gruß
robert
AW: warum können...
01.07.2009 14:08:13
Markus
Hi Robert,
weil es Leute gibt, ich!, die manchmal ein wenig schusselig sind und nicht immer an alles denken. Manchmal komme ich dann beim testen oder recherchieren auf Dinge, an die ich vorher einfach nicht gedacht hatte. Es ist nicht meine Absicht was zu vergessen, aber ich bin nur ein Mensch.......
Mein Problem liegt in der Optik der Tabelle von der ich die Daten importieren möchte. Diese wird von anderen Usern gefüllt und dort benötige ich unterschiedlich Platz. Damit es aber auch ordentlich aussieht, werden dann auch mal Zellen zusammengefügt.
Grüße
Markus
Anzeige
OK, was ist mit Format-Ausrichtung?
01.07.2009 15:19:49
robert
hi,
ok, ist verständlich.. :-)
und was hälts du von meiner anweisung zellenformat?
gruß
robert
AW: OK, was ist mit Format-Ausrichtung?
01.07.2009 15:48:42
Markus
Hi,
nutze ich........aber leider reicht der Platz dann in dieser Spalte für Eingaben manchmal nicht aus, weil ich die Spalte, nur in einer anderen Zeile, auch für Eingaben benötige.
Steh ich vielleicht auf dem Schlauch?
Grüße
Markus
AW: Beispiledatei..
01.07.2009 16:36:20
Markus
ooooh Sch......!
Ich werd gleich gleich mein Excel Level von gut auf bescheiden ändern!
Das hab ich nicht gewusst. Sorry!
Dann bin ich wenigstens heute nicht umsonst aufgestanden.
Danke Dir für den Hinweis!
Grüße
Markus
Anzeige
gern geschehen :-) owT
01.07.2009 16:42:29
robert
ungetestet
30.06.2009 19:04:23
Tino
Hallo,
Du kannst es mal so versuchen.
Zellen die sich in einer Spalte oder Zeile befinden kannst Du zusammenfassen.
Option Explicit

Sub TestLeseDaten()
  Dim sFiles As String
  Dim strPfad As String
  Dim iCalc As Integer
  Dim iCounter As Integer
  Dim shZiel As Worksheet
  Dim wbQuelle As Workbook
  
    strPfad = "E:\1 Forum\Vorlage\"
  
    UserForm_Anzeige.Repaint
  
        
    Set shZiel = ActiveSheet
        
    With Application
      .ScreenUpdating = False
      .EnableEvents = False
      iCalc = .Calculation
      .Calculation = xlCalculationManual
      
On Error GoTo ErrFehler:
      sFiles = Dir$(strPfad)
      Do While sFiles <> ""
        Set wbQuelle = GetObject(strPfad & sFiles)
        
        With shZiel
            wbQuelle.Sheets("Vorlage").Range("C6,C8,C10,C12").Copy
            .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
            
            wbQuelle.Sheets("Vorlage").Range("D31,D33,D35").Copy
            .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
            
            wbQuelle.Sheets("Vorlage").Range("A35,A38,A41").Copy
            .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        End With
        
        
        wbQuelle.Close False
        sFiles = Dir$()
      Loop

ErrFehler:
      .CutCopyMode = False
      .ScreenUpdating = True
      .EnableEvents = True
      .Calculation = iCalc
    End With
  
  Unload UserForm_Anzeige
  If Err.Number <> 0 Then MsgBox Err.Number & Chr(13) & Chr(13) & Err.Description, vbCritical, "Fehler """
  
End Sub


Gruß Tino

Anzeige
werde testen
30.06.2009 20:23:09
Markus
Hallo Udo, hallo Tino,
vorab schonmal Danke für`s antworten. Werde es Morgen testen und dann nochmal schreiben. Mit array hatte ich auch rumprobiert, aber legen wir lieber den Mantel des Schweigens drüber und den Vorschlag von Tino versteh ich mit meinem kleinen Wissen. Ich werde aber beides ausprobieren.
Vorab Danke für die Antworten!
Markus
nur so eine Idee...
01.07.2009 12:33:12
Tino
Hallo,
, ob sie 100% funktioniert habe ich nicht getestet.
Die Idee ist, die Tabelle in eine Dummy- Mappe zu kopieren die Zellen zu verbinden und
danach die Daten zu kopieren.
Option Explicit


Sub TestLeseDaten()
  Dim sFiles As String
  Dim strPfad As String
  Dim iCalc As Integer
  Dim iCounter As Integer
  Dim shZiel As Worksheet
  Dim wbQuelle As Workbook
  Dim DummySheet As Worksheet
  Dim DummyWB As Workbook
    
    strPfad = "E:\1 Forum\Vorlage\"
  
'    UserForm_Anzeige.Repaint 
  
        
    Set shZiel = ActiveSheet
        
    With Application
      .ScreenUpdating = False
      .EnableEvents = False
      .DisplayAlerts = False
      iCalc = .Calculation
      .Calculation = xlCalculationManual
      
On Error GoTo ErrFehler:
      sFiles = Dir$(strPfad)
      Do While sFiles <> ""
        Set wbQuelle = GetObject(strPfad & sFiles)
        wbQuelle.Sheets("Vorlage").Copy
        Set DummyWB = ActiveWorkbook
        
        With shZiel
            
            DummyWB.Sheets(1).Cells.MergeCells = False
            
            DummyWB.Sheets(1).Range("C6,C8,C10,C12").Copy
            .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues, , , True
            
            DummyWB.Sheets(1).Range("D31,D33,D35").Copy
            .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues, , , True
            
            DummyWB.Sheets(1).Range("A35,A38,A41").Copy
            .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues, , , True
            

        End With
        
        DummyWB.Close False
        wbQuelle.Close False
        sFiles = Dir$()
      Loop

ErrFehler:
      .CutCopyMode = False
      .DisplayAlerts = True
      .ScreenUpdating = True
      .EnableEvents = True
      .Calculation = iCalc
    End With
  
'  Unload UserForm_Anzeige 
  If Err.Number <> 0 Then MsgBox Err.Number & Chr(13) & Chr(13) & Err.Description, vbCritical, "Fehler """
  
End Sub


Gruß Tino

Anzeige
AW: nur so eine Idee...
01.07.2009 13:54:30
Markus
Hi Tino,
also, die Idee is schonmal nicht schlecht. Er kopiert die Daten und importiert sie in meine Abfragemappe.
Und nun kommt das aber........
1. die Inhalte von D31 und A35 werden dann untereinander und nicht nebeneinander geschrieben. Bedeutet, dass die importierten Werte von C6 bis C12 in A2 bis D2, D31 in A3 und A35 in A4 geschrieben werden. Danach kommen die nächsten importierten Werte. Kann ich die Werte aus D31 und A35 in die gleiche Zeile schreiben wie C6 bis C12?
2. Bleibt das Makro nach importieren einfach hängen. Es kommt keine Fehlermeldung, aber ich kann auch die Importmappe nicht mehr bearbeiten. Ich muss die Ausführung des Makros dann unterbrechen.
Grüße Markus
Anzeige
vielleicht so?
01.07.2009 14:26:45
Tino
Hallo,
etwas umgebaut und die einzelnen Zellen separat kopiert sollte funzen.
Sub TestLeseDaten()
  Dim sFiles As String
  Dim strPfad As String
  Dim iCalc As Integer
  Dim iCounter As Integer
  Dim shZiel As Worksheet
  Dim wbQuelle As Workbook
  Dim DummySheet As Worksheet
  Dim DummyWB As Workbook
  Dim LLetzte As Long
    strPfad = "E:\1 Forum\Vorlage\"
  
    UserForm_Anzeige.Repaint
  
        
    Set shZiel = ActiveSheet
        
    With Application
      .ScreenUpdating = False
      .EnableEvents = False
      .DisplayAlerts = False
      iCalc = .Calculation
      .Calculation = xlCalculationManual
      
On Error GoTo ErrFehler:
      sFiles = Dir$(strPfad)
      LLetzte = shZiel.Cells(shZiel.Rows.Count, 1).Row
      
      Do While sFiles <> ""
        Set wbQuelle = GetObject(strPfad & sFiles)
        wbQuelle.Sheets("Vorlage").Copy
        Set DummyWB = ActiveWorkbook
        
        With shZiel
            
            DummyWB.Sheets(1).Cells.MergeCells = False
                  
            '__________________________________________________________________
            LLetzte = LLetzte + 1 
            DummyWB.Sheets(1).Range("C6,C8,C10,C12").Copy
            .Cells(LLetzte, 1).PasteSpecial xlPasteValues, , , True
            DummyWB.Sheets(1).Range("A35").Copy .Cells(LLetzte, 5) 'einzelzelle 
            DummyWB.Sheets(1).Range("D31").Copy .Cells(LLetzte, 6) 'einzelzelle 
            
            '__________________________________________________________________
            LLetzte = LLetzte + 1 
            DummyWB.Sheets(1).Range("C6,C8,C10,C12").Copy
            .Cells(LLetzte, 1).PasteSpecial.PasteSpecial xlPasteValues, , , True
            
            '__________________________________________________________________
            LLetzte = LLetzte + 1 
            DummyWB.Sheets(1).Range("D31,D33,D35").Copy
            .Cells(LLetzte, 1).PasteSpecial.PasteSpecial xlPasteValues, , , True
            
            '__________________________________________________________________
            LLetzte = LLetzte + 1 
            DummyWB.Sheets(1).Range("A35,A38,A41").Copy
            .Cells(LLetzte, 1).PasteSpecial.PasteSpecial xlPasteValues, , , True
            

        End With
        
        DummyWB.Close False
        wbQuelle.Close False
        sFiles = Dir$()
      Loop

ErrFehler:
      .CutCopyMode = False
      .DisplayAlerts = True
      .ScreenUpdating = True
      .EnableEvents = True
      .Calculation = iCalc
    End With
  
  Unload UserForm_Anzeige
  If Err.Number <> 0 Then MsgBox Err.Number & Chr(13) & Chr(13) & Err.Description, vbCritical, "Fehler """
  
End Sub


Gruß Tino

Anzeige
sonst Lade mal ein Beispiel...
01.07.2009 14:30:34
Tino
Hallo,
Deiner Quelle hoch, damit ich damit mal testen kann.
Gehe jetzt erst mal ins Schwimmbad, etwas abkühlen.
Also bis heute Abend, wenn Du möchtest.
Gruß Tino
AW: sonst Lade mal ein Beispiel...
01.07.2009 15:14:10
Markus
Hi Tino,
hoffentlich konnteste Dich en bissl abkühlen. Hier donnerts ganz heftig.....
Also, der letzte Versuch hat leider nicht geklappt. Das Makro wurde zwar ausgeführt, aber es wurden keine Daten importiert. Habe jetzt mal das Formular hochgeladen: https://www.herber.de/bbs/user/62861.xls
Der Inhalt der markierten Felder wollte ich importieren und in eine Zeile schreiben.
Grüße
Markus
AW: sonst Lade mal ein Beispiel...
01.07.2009 20:47:39
Markus
Hi Tino,
werde es testen und gebe dann Morgen wieder Info. Habs mir aber schon angeschaut, aber ich gebe zu, ich muss noch ne zeitlang drüber nachdenken bis ich alles verstehe.
Vorab schonmal Danke für Deinen Einsatz und die Hilfe.
Dank der Info von Robert, werde ich so en Mist wie verbundene Zellen nicht mehr so schnell machen.
Grüße
Markus
manchmal.........
02.07.2009 08:58:47
Markus
ist es zum Mäusemelken. Jetzt werd ich auf der Arbeit vom Server blockiert und komm nicht an die hinterlegten Arbeitsmappen. Ich bleib am Ball...........
Markus
und meistens wird es gut
02.07.2009 20:16:04
Markus
Hi Tino,
so, konnte nun endlich testen und Du hast es wie immer geschafft. Zumindest unter Excel 2003 funzt es wunderbar und ich kann eine Auswertung machen. Werde es aber Morgen nochmal unter Excel 2000 probieren. Habe noch eine Info. Im Mittelteil des Codes:
'__________________________________________________________________
LLetzte = LLetzte + 1
wbQuelle.Sheets("Vorlage").Range("C6,C8,C10,C12,C14,C18,C20,C22").Copy
.Cells(LLetzte, 1).PasteSpecial xlPasteValues, , , True
wbQuelle.Sheets("Vorlage").Range("A35").Copy
.Cells(LLetzte, 9).PasteSpecial xlPasteValues 'einzelzelle
wbQuelle.Sheets("Vorlage").Range("D31").Copy
.Cells(LLetzte, 10).PasteSpecial xlPasteValues 'einzelzelle
'__________________________________________________________________
LLetzte = LLetzte + 1
wbQuelle.Sheets("Vorlage").Range("D31").Copy
.Cells(LLetzte, 1).PasteSpecial xlPasteValues, , , True
'__________________________________________________________________
LLetzte = LLetzte + 1
wbQuelle.Sheets("Vorlage").Range("A35").Copy
.Cells(LLetzte, 1).PasteSpecial xlPasteValues, , , True
werden die Zellen D31 und A35 zweimal abgefragt und auch doppelt importiert. Diese habe ich dann weggelassen.
Danke ist schon fast zu wenig. Würd ja en Eis ausgeben........bei der Hitze.
Dank auch an Alle die schauen und helfen!
Grüße Markus
......werde Morgen noch was zu Excel 2000 schreiben.
...und noch besser
03.07.2009 14:00:43
Markus
auch unter Office 2000 klappt es wunderbar!
Nochmals Danke!
Markus

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige