Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
224to228
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
224to228
224to228
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Markierte Zellen über Makro in Datei übernehmen

Markierte Zellen über Makro in Datei übernehmen
25.02.2003 22:12:46
Diggerlars
wer kann helfen...???

ich habe in excel eine datenbank erstellt und möchte über
makros bestimmte abläufe ausführen. ich scheitere zur zeit
an einem schleifenablauf, welcher mir die markierten zellen
(1 pro zeile) der reihe nach in eine datei schreiben soll.
hier die entsprechenden zeilen als hilfestellung:

For intZeile = 2 To Selection.Row
'Wenn Titel vorhanden aber Pfadname ungültig, dann ....
If Not IsEmpty(ActiveSheet.Cells(intZeile, 2)) And Not FileExist(ActiveSheet.Cells(intZeile, 5)) Then
'Meldung ausgeben
MsgBox "Die M3U-Liste kann nicht erstellt werden. " & vbCr & "Prüfen Sie die ungültige Pfadangabe des" & vbCr & "Titels : " & ActiveSheet.Cells(intZeile, 1) & " - " & ActiveSheet.Cells(intZeile, 2), vbCritical, "Album exportieren"
'M3U-Datei schließen
Close #1
'M3U-Datei löschen
Kill vntDatei
'Fehlerhafte Pfadangabe rot markieren
ActiveSheet.Rows(intZeile).Font.ColorIndex = 3
Else
End If
'Wenn MP3-Datei existiert, dann...
If FileExist(ActiveSheet.Cells(intZeile, 5)) Then
'... Lauflänge in Sekunden berechnen
intSekunden = Hour(ActiveSheet.Cells(intZeile, 4)) * 3600 + Minute(ActiveSheet.Cells(intZeile, 4)) * 60 + Second(ActiveSheet.Cells(intZeile, 4))
'Wenn kein Interpret vorhanden, dann...
If IsEmpty(ActiveSheet.Cells(intZeile, 1)) Then
'... ExtendedInfo = Titel
strExtInfo = ActiveSheet.Cells(intZeile, 2)
'Ansonsten...
Else
'... ExtendedInfo = Interpret + " - " + Titel
strExtInfo = ActiveSheet.Cells(intZeile, 1) & " - " & ActiveSheet.Cells(intZeile, 2)
End If
'ExtendedInfo-Zeile schreiben
Print #1, "#EXTINF:" & CStr(intSekunden) & "," & strExtInfo
'Pfadname der MP3-Datei schreiben
Print #1, ActiveSheet.Cells(intZeile, 5)
End If
Next


bis jetzt wird immer nur die 1. markierte zelle entsprechend
in die datei geschrieben. wo liegt mein fehler ?????

danke für euere hilfe.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Markierte Zellen über Makro in Datei übernehmen
26.02.2003 00:18:12
Urs

Hallo Diggerlars,
so aus der Hüfte heraus: Selection.Row bezieht sich nicht auf den markierten Bereich, sondern auf die Aktive Zelle, d.h. wenn Du von A1 aus einen Bereich selektierst ist Selection.Row = 1.
Also musst Du die letzte Zelle aktivieren und keinen Bereich wählen oder eine andere Lösung über Last Row ins Auge fassen.
Gruss
Urs

Re: Markierte Zellen über Makro in Datei übernehmen
26.02.2003 07:02:56
Diggerlars

hallo urs, danke für deine schnelle antwort

du hast recht und dies hatte ich auch schon richtig im schleifenablauf eingebaut. ich möchte nun jedoch nicht die
aktive zeile wie im jetzigen ablauf sondern alle markierten
zellen (nicht nur bereiche)zeilenweise auslesen und in eine textdatei schreiben.
die Selection.Row war noch aus meinem 1 entwurf der nur die aktive zeile übernahm.

danke für deine bemühungen.

Anzeige
Re: Markierte Zellen über Makro in Datei übernehmen
26.02.2003 08:56:07
Urs

Hallo Diggerlars,
dann musst du anders deklarieren:

Gruss
Urs

Re: Markierte Zellen über Makro in Datei übernehmen
26.02.2003 21:29:04
Diggerlars

danke urs, hat aber nicht geholfen, habe auch in abwandlung deines schleifencodes entweder nur die erste markierte zell sooft
in die datei kopiert bekommen wieviel markierungen es insgesammt gab oder die anzahl der makierten zellen von position der letzten
markierten zelle.

zeile1 zelle
zeile2 zelle markiert
zeile3 zelle
zeile4 zelle markiert
zeile5 zelle markiert

in datei
entweder
zelle2
zelle2
zelle2

oder
zelle5
zelle6
zelle7

aber soll eigentlich
zelle2
zelle4
zelle5

vieleicht hilft dir der vorhanden code bei einer lösung. ich lasse bewust den beginn der schleife weg und markiere sie nur,
eventuell hast du noch eine andere lösung.


Sub TitelAnhängen()
Dim vntDatei As Variant
Dim intButton As Integer
Dim intZeile As Integer
Dim intSekunden As Integer
Dim strExtInfo As String

On Error Resume Next

'Name der M3U-Datei festlegen lassen
vntDatei = Application.GetSaveAsFilename(InitialFilename:=ActiveSheet.Name & ".m3u", FileFilter:="M3U-Dateien (*.m3u),*.m3u", Title:="Titel zur bestehenden / neuen M3U-Playliste hinzufügen")
'Wenn gültiger Dateiname ausgewählt, dann...
If vntDatei <> False Then
'Wenn Datei nicht existiert, dann...
If Not Dir(vntDatei) > "" Then
'M3U-Datei im Output-Modus öffnen
Open vntDatei For Output As #1
'Bei Fehler ...
If Err <> 0 Then
'... Meldung anzeigen
MsgBox "Speichern nicht möglich. Die Datei ist möglicherweise geöffnet oder schreibgeschützt.", vbCritical, "Album exportieren"
'Ansonsten...
Else
'... Kennzeichnung für erweitertes M3U-Format schreiben
Print #1, "#EXTM3U"
'M3U-Datei schließen
Close #1
End If
End If


'M3U-Datei im Append-Modus öffnen
Open vntDatei For Append As #1
'Bei Fehler ...
If Err <> 0 Then
'... Meldung anzeigen
MsgBox "Speichern nicht möglich. Die Datei ist möglicherweise geöffnet oder schreibgeschützt.", vbCritical, "Album exportieren"
'Ansonsten...
Else
#########hier beginn der schleife#######
'Wenn Titel vorhanden aber Pfadname ungültig, dann ....
If Not IsEmpty(ActiveSheet.Cells(intZeile, 2)) And Not FileExist(ActiveSheet.Cells(intZeile, 5)) Then
'Meldung ausgeben
MsgBox "Die M3U-Liste kann nicht erstellt werden. " & vbCr & "Prüfen Sie die ungültige Pfadangabe des" & vbCr & "Titels : " & ActiveSheet.Cells(intZeile, 1) & " - " & ActiveSheet.Cells(intZeile, 2), vbCritical, "Album exportieren"
'M3U-Datei schließen
Close #1
'M3U-Datei löschen
Kill vntDatei
'Fehlerhafte Pfadangabe rot markieren
ActiveSheet.Rows(intZeile).Font.ColorIndex = 3
Else
End If
'Wenn MP3-Datei existiert, dann...
If FileExist(ActiveSheet.Cells(intZeile, 5)) Then
'... Lauflänge in Sekunden berechnen
intSekunden = Hour(ActiveSheet.Cells(intZeile, 4)) * 3600 + Minute(ActiveSheet.Cells(intZeile, 4)) * 60 + Second(ActiveSheet.Cells(intZeile, 4))
'Wenn kein Interpret vorhanden, dann...
If IsEmpty(ActiveSheet.Cells(intZeile, 1)) Then
'... ExtendedInfo = Titel
strExtInfo = ActiveSheet.Cells(intZeile, 2)
'Ansonsten...
Else
'... ExtendedInfo = Interpret + " - " + Titel
strExtInfo = ActiveSheet.Cells(intZeile, 1) & " - " & ActiveSheet.Cells(intZeile, 2)
End If
'ExtendedInfo-Zeile schreiben
Print #1, "#EXTINF:" & CStr(intSekunden) & "," & strExtInfo
'Pfadname der MP3-Datei schreiben
Print #1, ActiveSheet.Cells(intZeile, 5)
End If
########### ende schleife##############
End If
'M3U-Datei schließen
Close #1
MsgBox "Titel wurde der M3U-Liste hinzugefügt.", vbInformation, "Titel hinzugefügt"
End If
End Sub


danke für deine mühe...




Anzeige
Re: Markierte Zellen über Makro in Datei übernehmen
26.02.2003 21:39:17
Diggerlars

danke urs, hat aber nicht geholfen, habe auch in abwandlung deines schleifencodes entweder nur die erste markierte zell sooft
in die datei kopiert bekommen wieviel markierungen es insgesammt gab oder die anzahl der makierten zellen von position der letzten
markierten zelle.
zeile1 zelle
zeile2 zelle markiert
zeile3 zelle
zeile4 zelle markiert
zeile5 zelle markiert

in datei
entweder
zelle2
zelle2
zelle2

oder
zelle5
zelle6
zelle7

aber soll eigentlich
zelle2
zelle4
zelle5

vieleicht hilft dir der vorhanden code bei einer lösung. ich lasse bewust den beginn der schleife weg und markiere sie nur,
eventuell hast du noch eine andere lösung.


Sub TitelAnhängen()
Dim vntDatei As Variant
Dim intButton As Integer
Dim intZeile As Integer
Dim intSekunden As Integer
Dim strExtInfo As String

On Error Resume Next

'Name der M3U-Datei festlegen lassen
vntDatei = Application.GetSaveAsFilename(InitialFilename:=ActiveSheet.Name & ".m3u", FileFilter:="M3U-Dateien (*.m3u),*.m3u", Title:="Titel zur bestehenden / neuen M3U-Playliste hinzufügen")
'Wenn gültiger Dateiname ausgewählt, dann...
If vntDatei <> False Then
'Wenn Datei nicht existiert, dann...
If Not Dir(vntDatei) > "" Then
'M3U-Datei im Output-Modus öffnen
Open vntDatei For Output As #1
'Bei Fehler ...
If Err <> 0 Then
'... Meldung anzeigen
MsgBox "Speichern nicht möglich. Die Datei ist möglicherweise geöffnet oder schreibgeschützt.", vbCritical, "Album exportieren"
'Ansonsten...
Else
'... Kennzeichnung für erweitertes M3U-Format schreiben
Print #1, "#EXTM3U"
'M3U-Datei schließen
Close #1
End If
End If


'M3U-Datei im Append-Modus öffnen
Open vntDatei For Append As #1
'Bei Fehler ...
If Err <> 0 Then
'... Meldung anzeigen
MsgBox "Speichern nicht möglich. Die Datei ist möglicherweise geöffnet oder schreibgeschützt.", vbCritical, "Album exportieren"
'Ansonsten...
Else
#########hier beginn der schleife#######
'Wenn Titel vorhanden aber Pfadname ungültig, dann ....
If Not IsEmpty(ActiveSheet.Cells(intZeile, 2)) And Not FileExist(ActiveSheet.Cells(intZeile, 5)) Then
'Meldung ausgeben
MsgBox "Die M3U-Liste kann nicht erstellt werden. " & vbCr & "Prüfen Sie die ungültige Pfadangabe des" & vbCr & "Titels : " & ActiveSheet.Cells(intZeile, 1) & " - " & ActiveSheet.Cells(intZeile, 2), vbCritical, "Album exportieren"
'M3U-Datei schließen
Close #1
'M3U-Datei löschen
Kill vntDatei
'Fehlerhafte Pfadangabe rot markieren
ActiveSheet.Rows(intZeile).Font.ColorIndex = 3
Else
End If
'Wenn MP3-Datei existiert, dann...
If FileExist(ActiveSheet.Cells(intZeile, 5)) Then
'... Lauflänge in Sekunden berechnen
intSekunden = Hour(ActiveSheet.Cells(intZeile, 4)) * 3600 + Minute(ActiveSheet.Cells(intZeile, 4)) * 60 + Second(ActiveSheet.Cells(intZeile, 4))
'Wenn kein Interpret vorhanden, dann...
If IsEmpty(ActiveSheet.Cells(intZeile, 1)) Then
'... ExtendedInfo = Titel
strExtInfo = ActiveSheet.Cells(intZeile, 2)
'Ansonsten...
Else
'... ExtendedInfo = Interpret + " - " + Titel
strExtInfo = ActiveSheet.Cells(intZeile, 1) & " - " & ActiveSheet.Cells(intZeile, 2)
End If
'ExtendedInfo-Zeile schreiben
Print #1, "#EXTINF:" & CStr(intSekunden) & "," & strExtInfo
'Pfadname der MP3-Datei schreiben
Print #1, ActiveSheet.Cells(intZeile, 5)
End If
########### ende schleife##############
End If
'M3U-Datei schließen
Close #1
MsgBox "Titel wurde der M3U-Liste hinzugefügt.", vbInformation, "Titel hinzugefügt"
End If
End Sub


danke für deine mühe...


entschuldige bitte falls du es 2x bekommen hast, habe mich verklickt.

Anzeige
Re: Markierte Zellen über Makro in Datei übernehmen
26.02.2003 22:10:26
Urs

hallo Diggerlars,
Gewaltsteil Dein Makro...Sehe auch nicht wie Du die IntZeile, IntSekunden etc festlegst.
Anbei das Prinzip der Schleife zum kopieren. Du kannst sie ja mal in einer anderen Arbeitsmappe ausprobieren und in Tabelle1 ein paar Zahlen schreiben und nach Wunsch selektieren. Bei Ausführung des Makros werden diese Zellinhalte der Reihe nach in Tabelle2 kopiert.
Du musst dann halt diese Schleife auf Deine Bedürfnisse anpassen.

Gruss
Urs

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige