Home Office-Hilfe.com - Wir lösen Ihr Problem mit Microsoft Excel, Word, Outlook, PowerPoint, Access gratis Forum Impressum

  Daten aus Excel nach Excel importieren
Neues Thema eröffnenNeue Antwort erstellen
Autor Nachricht
trottlbua
Besserwisser
Besserwisser


Anmeldedatum: 31.01.2007
Beiträge: 82

BeitragVerfasst am: 21.07.2008, 14:54 Nach oben

Hallo Excelgötter!

Gott sei dank ist Schatzi auf VBA umgestiegen *g* - so kann ich ihn weiter quälen!

Folgendes:

Mein VBA Code sollte mich bei Klick auf einen Button fragen ob ich ein Worksheet wirklich aktualisieren möchte - bei ja - soll er mich nach der Datei suchen lassen wo die aktuellen Daten drin sind (Das WS aus der zu importierenden Datei nennen wir mal "Übersicht"). Sobald gefunden soll er das Worksheet "genaue Reinvestition" mit den in "Übersicht" gefundenen Werten überschreiben.

Soweit klar?

Vielen Dank für die Hilfe schon mal im Voraus!

_________________
Mfg
Lucky

Arbeit: Office 2003, @home: Office 2007
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
miriki
Schlauberger
Schlauberger


Anmeldedatum: 05.03.2007
Beiträge: 439
Wohnort: Kiel

BeitragVerfasst am: 22.07.2008, 08:30 Nach oben

trottlbua hat Folgendes geschrieben:
Mein VBA Code sollte mich bei Klick auf einen Button fragen ob ich ein Worksheet wirklich aktualisieren möchte - bei ja - soll er mich nach der Datei suchen lassen wo die aktuellen Daten drin sind (Das WS aus der zu importierenden Datei nennen wir mal "Übersicht"). Sobald gefunden soll er das Worksheet "genaue Reinvestition" mit den in "Übersicht" gefundenen Werten überschreiben.

Da fehlt es schon noch an einigen Details, aber grober Pseudo-Code:

Code:
Button_OnClick
ok=msgbox
if (ok=vbyes) then
    xls1=Application.GetOpenFilename
    if (xls1) then
        workbook.open xls1
        activeworkbook.worksheets("sheet1").activate
        activesheet.range("range1").copy destination:=thisworkbook.worksheets("sheet2").range("range2")
        workbooks(xls1).close
      else
        ' nichts?
    endif
  else
    ' nichts?
endif


Hilft das erstmal weiter? Zu den einzelnen Punkten (z.B. msgbox, getopenfilename usw.) läßt sich sich auch jeweils prima die F1-Taste benutzen.

Gruß, Michael
Benutzer-Profile anzeigenPrivate Nachricht sendenICQ-Nummer
trottlbua
Besserwisser
Besserwisser


Anmeldedatum: 31.01.2007
Beiträge: 82

BeitragVerfasst am: 23.07.2008, 10:07 Nach oben

Hallo!

Danke für die erste Hilfe!

Hab noch Probleme, und zwar:
Code:
Private Sub CommandButton1_Click()

ok = MsgBox("Daten werden aktualisiert", vbYesNo, "Update")

If (ok = vbYes) Then
    xls1 = Application.GetOpenFilename
    If (xls1) Then
        Workbook.Open xls1
        ActiveWorkbook.Worksheets("sheet1").Activate
        ActiveSheet.Range("range1").Copy Destination:=ThisWorkbook.Worksheets("sheet2").Range("range2")
        Workbooks(xls1).Close
      Else
        Exit Sub
       
    End If
  Else
    Exit Sub
   
End If

End Sub


ich bekomme bei folgender Zeile einen Fehler:
Code:
If (xls1) Then


Laufzeitfehler 13 - Typen unverträglich - ich verstehe nicht was passieren soll bei der Zeile!?! Kannst du mir bitte weiterhelfen?

_________________
Mfg
Lucky

Arbeit: Office 2003, @home: Office 2007
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
miriki
Schlauberger
Schlauberger


Anmeldedatum: 05.03.2007
Beiträge: 439
Wohnort: Kiel

BeitragVerfasst am: 23.07.2008, 10:18 Nach oben

trottlbua hat Folgendes geschrieben:
ich bekomme bei folgender Zeile einen Fehler:
Code:
If (xls1) Then

Laufzeitfehler 13 - Typen unverträglich

Die Variable xls1 wird von GetOpenFilename mit einem Boolean-Wert ("wahr" oder "falsch") belegt, je nachdem, ob eine Datei ausgewählt wurde ("wahr"), oder ab "Abbrechen" gedrückt wurde ("falsch").

die Zeile "if (xls1) then" ist nur eine Kurzform von "if (xls1=true) then". Und ich schätze mal, daß Du xls1 per DIM nicht als Boolean, sondern als irgendeinen anderen Typ (z.B. integer) deklariert hast.

Gruß, Michael
Benutzer-Profile anzeigenPrivate Nachricht sendenICQ-Nummer
trottlbua
Besserwisser
Besserwisser


Anmeldedatum: 31.01.2007
Beiträge: 82

BeitragVerfasst am: 23.07.2008, 10:36 Nach oben

hey - super schnelle Antwort!

Hab sie jetzt definiert als boolean

nächstes Problem:
Code:
xls1 = Application.GetOpenFilename


Hier bleibt der Code hängen - wieder Laufzeitfehler 13

Ideen?

_________________
Mfg
Lucky

Arbeit: Office 2003, @home: Office 2007
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
miriki
Schlauberger
Schlauberger


Anmeldedatum: 05.03.2007
Beiträge: 439
Wohnort: Kiel

BeitragVerfasst am: 23.07.2008, 10:47 Nach oben

trottlbua hat Folgendes geschrieben:
Code:
xls1 = Application.GetOpenFilename

Hier bleibt der Code hängen - wieder Laufzeitfehler 13

Hmmm... Ich schrieb aber auch:
Zitat:
Zu den einzelnen Punkten (z.B. msgbox, getopenfilename usw.) läßt sich sich auch jeweils prima die F1-Taste benutzen.


Gruß, Michael
Benutzer-Profile anzeigenPrivate Nachricht sendenICQ-Nummer
trottlbua
Besserwisser
Besserwisser


Anmeldedatum: 31.01.2007
Beiträge: 82

BeitragVerfasst am: 23.07.2008, 11:59 Nach oben

jaja - natürlich nachgesehen - in der Hilfe steht ich muss keine Werte (alle optional) bei getopenfilename hineinschreiben.

Also - Code sieht jetzt so aus:
Code:
Private Sub CommandButton1_Click()
Dim updatefile As Boolean
boxoutput = MsgBox("Daten werden aktualisiert", vbYesNo, "Update")

If (boxoutput = vbYes) Then
    updatefile = Application.GetOpenFilename("Tabellen (*.xls),*.xls")
    If updatefile Then
        Workbook.Open updatefile
        ActiveWorkbook.Worksheets("tabelle1").Activate
        ActiveSheet.Range("a1:z1000").Copy Destination:=ThisWorkbook.Worksheets("Tabelle2").Range("a1:z1000")
        Workbooks(updatefile).Close
      Else
        Exit Sub
       
    End If
  Else
    Exit Sub
   
End If

End Sub


Also das Problem konnte ich nicht lösen.
ThisWorkbook muss ich noch ersetzen - werde es mit einer Variablen versuchen die sich den Namen des Files in dem der Button ist merkt.

Was ich auch nicht verstehe - wieso wird die variable updatefile als Boolean definiert - die soll sich doch den Pfad merken - oder?

_________________
Mfg
Lucky

Arbeit: Office 2003, @home: Office 2007
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
miriki
Schlauberger
Schlauberger


Anmeldedatum: 05.03.2007
Beiträge: 439
Wohnort: Kiel

BeitragVerfasst am: 24.07.2008, 06:45 Nach oben

trottlbua hat Folgendes geschrieben:
Was ich auch nicht verstehe - wieso wird die variable updatefile als Boolean definiert - die soll sich doch den Pfad merken - oder?

Ähm, nicht ganz, aber da war ich auch etwas ungenau...

Sie ist ein Variant (siehe OH letzter Absatz "Anmerkungen"), der bei Abbruch mit Boolean/false und bei Erfolg mit String/"Dateiname" belegt wird. Ist der String belegt, wird das aber auch als "true" in IF-Abfragen interpretiert. Ein "dim updatefile" oder "dim updatefile as variant" sollte da gehen.

Das mit den 2 geöffneten workbooks, die man irgendwie auseinanderhalten muß, ist auch immer so ein Problem... Beim .open braucht man den kompletten Dateinamen inklusive Laufwerk und Pfad, beim workbooks() braucht man nur den Dateinamen selbst. Wenn es mit "active" und "this" nicht so recht klappen will, muß man den kompletten Dateinamen in seine Bestandteile zerlegen, also Laufwerk und Pfad abtrennen, um dann die Unterscheidung direkt mit workbooks() zu schaffen.

Ich bin mir nicht sicher, ob es dafür fertige interne Routinen gibt. In Delphi gibt es dafür ExtractFilePath, ExtractfileName und Konsorten. In VBA habe ich mir gleichnamige Routinen selbst geschrieben. Ein bißchen Parsing von : und \ reicht da schon.

Gruß, Michael
Benutzer-Profile anzeigenPrivate Nachricht sendenICQ-Nummer
trottlbua
Besserwisser
Besserwisser


Anmeldedatum: 31.01.2007
Beiträge: 82

BeitragVerfasst am: 24.07.2008, 08:41 Nach oben

Hallo Michael!

Hab es mit einem Kollegen mittlerweile geschafft - hier der fertige Code:

Code:
Private Sub CommandButton1_Click()

Dim updatefile As Variant
Dim boxoutput As Integer
Dim Basisfile As Variant

Dim wbimport As Workbook
Dim wbactual As Workbook


 
boxoutput = MsgBox("Sollen die Daten wirklich aktualisiert werden?", vbYesNo, "Update")

If (boxoutput = vbYes) Then
    Set wbactual = Application.ActiveWorkbook
   
    updatefile = Application.GetOpenFilename("Tabellen (*.xls),*.xls")
    If updatefile <> False Then
        Set wbimport = Workbooks.Open(updatefile)
        wbimport.Activate
        Worksheets("Übersicht").Activate
        Basisfile = ActiveWorkbook.Name
       
         
               
        ActiveSheet.Range("a1:i50").Copy
        wbactual.Activate
        Worksheets("Reinvest_explizit").Activate
         Range("A1").Select
                 
       Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Range("b16") = Basisfile
        Application.CutCopyMode = False
        wbimport.Close
      Else
     
        Exit Sub
       
    End If
  Else
    Exit Sub
   
End If

End Sub


Danke für die Hilfe - werde gleich einen neuen Thread für eine andere Frage eröffnen *g*

_________________
Mfg
Lucky

Arbeit: Office 2003, @home: Office 2007
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen


Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge Gross- Kleinschreibung nach Punkt sipa67 Microsoft Excel Hilfe 2 22.11.2008, 12:52 Letzten Beitrag anzeigen
Keine neuen Beiträge Excel Tabellenzeilen in Spalten umwan... robbe Microsoft Excel Hilfe 4 21.11.2008, 13:52 Letzten Beitrag anzeigen
Keine neuen Beiträge Excel erkennt "Format$" sei... timi Microsoft Excel Hilfe 0 21.11.2008, 13:39 Letzten Beitrag anzeigen
Keine neuen Beiträge Korrektes Format für Zeit bzw. Stunde... Simon Excel Microsoft Excel Hilfe 2 21.11.2008, 09:06 Letzten Beitrag anzeigen
Keine neuen Beiträge Excel Tabelle in Word lizzi Microsoft Word Hilfe 0 20.11.2008, 14:17 Letzten Beitrag anzeigen


 Gehe zu:   



Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen

Haftungsausschluss/Disclaimer


SMS kostenlos versenden | Battle-Dream | Tuning Forum | Join the YoungGeneration | krankenversicherungsvergleich | Kalorienarme Rezepte!
Versicherungsvergleich | Bürobedarf | Papier | Betten

Ranking-Hits



Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Alle Zeiten sind GMT + 1 Stunde
Deutsche Übersetzung von phpBB.de