Anzeige
Archiv - Navigation
1384to1388
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

Open File VBA

Open File VBA
16.10.2014 10:27:57
Riman
Servus,
Der code wurde mit Makro aufgenommen, und vergleicht zwei Tabellen.
Ich möchte nicht immer mit der selbe Tabelle vergleichen, sondern, dass ein Open File Dialog öffnet und ich die Datei selber aussuchen kann.
Also ich habe verschiedene "Erfassungsliste_Solidcore.xlsx" Tabelle.
Wass ich will, dass ein OpenDialog Fenster aufgeht und ich die Datei selber aussuchen kann. Der Code soll so bleiben, nur dass "Erfassungsliste_Solidcore.xlsx" soll in ein Opendialog ausgewählt werden und in die Code integriert werden.
"C:\Users\Dokumente\WöchentlicheReport\Erfassungslieste\[GEWÄHLTE DATEI].xlsx" _
Sub Vergleichen()
' Vergleichen Makro
Range("K1").Select
ActiveCell.FormulaR1C1 = "Erfasst"
Range("K2").Select
Columns("K:K").EntireColumn.AutoFit
Range("K2").Select
ActiveCell.FormulaR1C1 = ""
ChDir "C:\Users\Dokumente\Wöchentliche Report\Erfassungslieste"
Workbooks.Open Filename:= _
"C:\Users\Dokumente\Wöchentliche Report\Erfassungslieste\Erfassungsliste_Solidcore.xlsx" _
_
, Origin:=xlWindows
ActiveWindow.ActivateNext
Range("K2").Select
ActiveCell.FormulaR1C1 = _
"=COUNTIF([Erfassungsliste_Solidcore.xlsx]Tabelle1!C1,C[-10])"
Columns("K:K").Select
Selection.FormatConditions.AddIconSetCondition
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1)
.ReverseOrder = False
.ShowIconOnly = True
.IconSet = ActiveWorkbook.IconSets(xl3Symbols)
End With
Selection.FormatConditions(1).IconCriteria(1).Icon = xlIconNoCellIcon
With Selection.FormatConditions(1).IconCriteria(2)
.Type = xlConditionValueNumber
.Value = 0
.Operator = 7
.Icon = xlIconRedCrossSymbol
End With
With Selection.FormatConditions(1).IconCriteria(3)
.Type = xlConditionValueNumber
.Value = 1
.Operator = 7
.Icon = xlIconGreenCheckSymbol
End With
With Selection
.HorizontalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("L3").Select
End Sub

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Open File VBA
16.10.2014 12:57:37
yummi
Hallo Riman,
Anstelle

Workbooks.Open Filename:= _
"C:\Users\Dokumente\Wöchentliche Report\Erfassungslieste\Erfassungsliste_Solidcore.xlsx" _
_

dieses:

Dim var As Variant
ChDrive "C:"
ChDir "C:\Users\Dokumente\Wöchentliche Report\Erfassungslieste"
var = Application.GetOpenFilename( _
FileFilter:="Excel-Dateien (*.xls; *.xlsx; *.xlsm),*.xls;*.xlsx;*.xlsm", _
MultiSelect:=False)
Workbooks.Open(var, UpdateLinks:=False)   'wenn die geöffnete Datei verändert werden soll,  _
lss den UdateLinks weg)
Gruß
yummi

Anzeige
AW: Open File VBA
16.10.2014 13:05:42
Riman
Danke yummi,
eine Frage noch, was ist mit der Zeile "Erfassungsliste_Solidcore.xlsx"
Da ist die Name der Datei drin, muss das nicht geändert werden, oder eine Parameter übergeben.
=COUNTIF([Erfassungsliste_Solidcore.xlsx]Tabelle1!C1,C[-10])

AW: Open File VBA
16.10.2014 13:18:24
yummi
Hallo Riman,
ja habe ich nicht gesehen, überall, wo du direkt auf deine Datei referenzierst, kommt stattdessen var hin (ohne Anführungsstriche)
Gruß
yummi

AW: Open File VBA
16.10.2014 14:03:17
Riman
Danke dir sehr Yummi :) jetzt kommt das Opendialog, alles funktioniert wunderbar, aber nur ich bekomme Fehler beim ( UpdateLinks:=False)
Fehler beim Kompilieren
Erwartet:=
Workbooks.Open(var, UpdateLinks:=False) 'wenn die geöffnete Datei verändert werden soll, _
lss den UdateLinks weg)

Anzeige
AW: Open File VBA
16.10.2014 14:29:53
yummi
Hallo Riman,
sry mein Fehler:
Du brauchst noch eine Variable wkbQuelle as workbook und wks as worksheet
Set wkbQuelle = Workbooks.Open(var(iCounter), UpdateLinks:=False)
wkbQuelle ist dann dein Workbook auf das du zugreifst.
Direkt danach kannst Du
Set wks = wkbQuelle.Sheets("Tabelle1")
deine countif zeile musst du auch anpassen. lad am besten mal die Datei hoch, das ist einfacher.
Gruß
yummi

AW: Open File VBA
16.10.2014 14:45:59
Riman
Hast du eine Email Adresse Yummi, dann kann ich es dir Schicken.

AW: Open File VBA
16.10.2014 14:49:37
yummi
Hallo Riman,
lad es hier über fil upload hoch
Gruß
yummi

Anzeige
AW: Open File VBA
16.10.2014 15:01:40
Riman
https://www.herber.de/bbs/user/93198.zip
Also die MakroDatei importiert die CSV Datei und bearbeitet es anschlißend!
Dann vergleicht der MakroDatei mit der normale Datei, ob die PC vorhanden sind oder nicht.
Es klappt nach deine Code, aber in dem Feld wo sie verglichen werden, ist kein Wert drin, also #wert

AW: Open File VBA
16.10.2014 15:03:06
yummi
ok ich schau mal, muss aber jetzt erstmal wweg. kann also evtl bis morgen früh dauern.

AW: Open File VBA
16.10.2014 18:55:51
yummi
Hallo Riman,
da sind überhaupt keine Referenzierungen drin, dass es soweit läuft ist Glücksache.
Die Variablen sind nicht deklaroert. Schreib mal Option explicit in die erste Zeile jedes Moduls, dann siehst du was ich meine.
Was willst du hier denn erreichen:

ActiveCell.FormulaR1C1 = _
"=INT([@[CPU-Geschwindigkeit (in MHz)]]*0.01+0.5)/0.01"
Gruß
yummi

Anzeige
AW: Open File VBA
16.10.2014 19:20:27
Riman
Was soll ich jetzt nach deiner Meinung machen`? Wie kann ich es verbessern? Eigentlich fehlt mir nur die Funktion mit Vergleichen, dann bin ich fertig mit der Aufgabe.
Ich wäre dir sehr Dankbar, wenn du es mir verbessern würdest.
Danke
Gruß
Riman

AW: Open File VBA
17.10.2014 09:35:03
yummi
Hallo Riman,
das beantwortet aber meien Frage nicht ;-)
Was willst du hier denn erreichen:

ActiveCell.FormulaR1C1 = _
"=INT([@[CPU-Geschwindigkeit (in MHz)]]*0.01+0.5)/0.01"
Soll damit die komplette Spalte mit der formel gefüllt werden oder wirklich nur die eine Zelle?
mit [@[CPU-Geschwindigkeit (in MHz)]] willst du die Spalte mit diesem Namen ansprechen?
Ich habe leider nicht die Zweit das komplett umzubauen, aber evtl kann ich es die an einer Fromel zeigen.
Gruß
yummi

Anzeige
AW: Open File VBA
17.10.2014 09:41:05
Riman
Ja für die komplette Spalte.
Danke dir sehr, ja es reicht schon wenn du es einmal machst, dann kann ich die anderen anhand deine Lösung verbessern. Und das mit dem Opendialog wäre auch super.
Danke Yummi :)

AW: Open File VBA
17.10.2014 12:54:05
yummi
Hallo Riman,
ich hab dir mal ein paar kommentare reingeschrieben.
nimm erstmal nur die Berechnungsfunktion und pack sie in deine bestehende und schau mal. Dann kannst Du dir nach und nach den Rest umbauen. Ich hab nicht immer ganz durchblcikt, wann du was auf welcher Sheet machen willst, kann sein dass bei den sachen die ich dir zur Ansicht eingebaut habe schon verwechslungen drin sind. Das ganze läuft bei mir nicht rund, aber die Funktion zum Berechnen deiner fehlenden Werte tuts meiner Ansicht nach jetzt.
https://www.herber.de/bbs/user/93212.xlsm
Gruß
yummi

Anzeige
AW: Open File VBA
17.10.2014 14:45:30
Riman
Yummi ich habe alles umgeändert, aber leider tauchen einige Fehler auf, und da komme ich wirklich nicht weiter, ich arbeite die ganze Zeit dran. Und mit dem Openfile also am Ende wo die Dateien vergleichen werden, da habe ich keine ändernung gesehen.
Kannst du bitte Gucken obsoweit alles in Ordnung ist?
Danke dir für deine Unterstützung.
https://www.herber.de/bbs/user/93215.zip

AW: Open File VBA
17.10.2014 15:07:50
yummi
Hallo Riman,
also Du hast zwar teile von dem von mir geschickten übernommen, aber die du referenzierst überall immer noch auf das Global Objekt. (z.B. Range ohne zuweisung welche Tabelle gemeint ist.
Wenn ich es so laufen lasse, dann sollen CPU Geschwindigkeiten aufgerundet werden, es sind aber gar keine da.
Mach erstmal folgenden Schritt:
1. Nehm dein alten original Code
2. ersetze folgende Funktion

Function CPU_Geschwindigkeit_Aufrunden()
' CPU_Geschwindigkeit_Aufrunden Makro
' CPU-Geschwindigkeit (in MHz) in volle Zahlen Runden in eine neue Spalte
Dim llast As Long
dim wks as Worksheet       'damit du Init nicht brauchst
'mal ohne select
Set  wks = ActiveSheet     'wenn die Daten hier im falschen Tabellenblatt landen dann  _
anpassen
wks.Columns("G:G").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
wks.Cells(1, 7).Value = "CPU-Geschwindigkeit (in MHz)2"                          'ü _
berschrift in G1 setzen
llast = wks.Cells(Rows.Count, 6).End(xlUp).Row                                   'letzte  _
Zeile in Spalte F
If llastG >= 2 Then
wks.Range("G2:G" & llast).FormulaLocal = "=($F2*0,01+0,5)/0,01"
End If
End Function
3. lass laufen
Da der Code bei mir gar nicht läuft, kann ich das ganze leider nicht testen. Bei mir werden keien Daten kopiert, vlt wende ich es ja auch in der falschen Reihenfolge an, hab die xlsx Datei überhaupt nicht benutzt.
Gruß
yummi
PS: Falls es eine Fehlermeldung gibt in der Zeile mit der Berechnung, nimm mal . anstatt ,
Ich hab gerade gelesen, dass es unterschiede geben kann in der Formeleingabe, je nachdem ob deutsche Excel Version oder englische.
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige