PDA

Vollständige Version anzeigen : datei mti namen aus zelle abspeichern , pfad nach abfrage


ferdix
19.06.2001, 17:09
hallo,
beginne gerad mich mit dem thema excel intensiver zu beschäftigen und hänge an folgendem problem:
ich will eine datei abspeichern, deren namen z.B. in zelle a1 steht wobei eine abfrage nach dem pfad kommt, (wenn das klappt, wäre optional noch der pfad aus einer zelle super)
ich habe schon zwei skripte, die jedes für sich super funktionieren, nur zusammen bekomme ich sie nich, komme einfach nicht drauf, wie man die variablen übergibt... mal kommt der pfad als dateiname, mal als datiename "false"...
hier die skripte:
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type

Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Sub DirAuswahl()
Dim msg As String
msg = "Wählen Sie bitte einen Ordner aus:"
MsgBox getdirectory(msg)
End Sub

Function getdirectory(Optional msg) As String
Dim bInfo As BROWSEINFO
Dim Path As String
Dim r As Long, x As Long, pos As Integer
' Ausgangsordner = Desktop
bInfo.pidlRoot = 0&
' Dialogtitel
If IsMissing(msg) Then
bInfo.lpszTitle = "Wählen Sie bitte einen Ordner aus."
Else
bInfo.lpszTitle = msg
End If
' Rückgabe des Unterverzeichnisses
bInfo.ulFlags = &H1
' Dialog anzeigen
x = SHBrowseForFolder(bInfo)
' Ergebnis gliedern
Path = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal Path)
If r Then
pos = InStr(Path, Chr$(0))
getdirectory = Left(Path, pos - 1)
Else
getdirectory = "Sie haben kein Verzeichnis gewählt!"
End If
End Function
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

und nummer 2

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Sub Makro4()

'unter Namen speichern, welcher in Zelle A1 steht
Dim s As String
Dim t As Integer
f = ThisWorkbook.Sheets(1).Cells(1, 1).Value
If s = "" Then
s = Application.GetSaveAsFilename( _
fileFilter:="Excel Workbook(*.xls), *.xls")
If f = False Then
Exit Sub
End If
End If
r = ThisWorkbook.Sheets(1).Cells(1, 1).Characters.Count
If ThisWorkbook.Sheets(1).Cells(1, 1).Characters(t - 3).Text <> ".xls" Then
s = s & ".xls"
End If
ThisWorkbook.SaveAs Filename:=s
End Sub
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

vielleicht kann mir ja jemand helfen.....

anbei bin ich auf der suche nach guter, aber günstiger lektüre, die mir solche dinge näher bringt.

gruss
ferdinand

Stema
19.06.2001, 17:46
Hallo ferdix,

schau mal hier nach: Word-Dokument aufrufen (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=44884)

Vielleicht hilft Dir das.


<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten und die Signatur angepasst...</font>

ferdix
20.06.2001, 13:37
hallo stema,
danke für den tip,
sieht vielversprechend aus, leider komme ich damit noch nicht ganz klar...
bekomme immer eine fehlermeldung wegend des Me.lstListenfeld... allerdings bin ich auch erst am anfang meiner vba karriere.......
die fehlermeldung lautet:
unzulässige verwendung des schlüsselwortes me

mein code:

Sub Listenfeld13_BeiÄnderung()

Dim lngListCounter As Long
lngListCounter = 0
While (lngListCounter <= (Me.lstListenfeld.ListCount - 1)) _
And (Not Me.lstListenfeld.Selected(lngListCounter))
lngListCounter = lngListCounter + 1
Wend

strDocName = "F:\datenbank\" & Me.lstListenfeld.Selected(lngListCounter) & ".xls"

ActiveWorkbook.SaveAs Filename:=strDocName, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False

End Sub

gruss
ferdinand


<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag das Zitat mit einem falschen Link entfernt...</font>

Stema
20.06.2001, 14:33
Hallo ferdix,

ich vermute, daß der Fehler in der folgenden Zeile auftritt:
strDocName = "F:\datenbank\" & Me.lstListenfeld.Selected(lngListCounter) & ".xls"

Wenn Du auf den Wert eines Listenfeldes zugreifen möchtest, dann:
... & Me.lstListenfeld.Column(0) & ".xls"
Wenn das Listenfeld mehrere Spalten hat, dann die entsprechende angeben. 1. Spalte=0, 2. Spalte=1...

----
While (lngListCounter <= (Me.lstListenfeld.ListCount - 1)) _
And (Not Me.lstListenfeld.Selected(lngListCounter))
evtl. ändern in:
While lngListCounter <= Me.lstListenfeld.ListCount - 1 _
And Me.lstListenfeld.Selected(lngListCounter) = FALSE

Gruß Stema

jinx
20.06.2001, 21:59
<font size="2" face="Century Gothic">Moin, ferdix,

Du erschlägst einen ja mit dieser Menge Text (den ich natürlich nicht gelesen habe).

Bisher bin ich bei Excel noch nicht über den Begriff Me gestolpert, sondern nur in Access (Berichte/Formulare).

Mal rein hypothetisch: Könnte der Fehler im Übernehmen eines Textes aus einem anderen Forum liegen?

<font color="#808080" size="3" face="Arial Black">cu
jinx</font>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag die Signatur angepasst...</font>

ferdix
21.06.2001, 18:31
hallo stema,
vielen dank nochmal, aber ich muss jetzt mal gestehen, dass mich das ganze doch etwas überfordert. morgen bekomme ich bücher, die ich erst mal studieren muss, mit der hilfefunktion allein komm ich in diese geschichte nicht richtig rein...
ich bin hoffentlich dann nach dem wochenende schlauer und kann dann etwas konstruktiver an die sache herangehen und natürlich auch diskutieren...
ich hab da auch noch über nen anderen weg (etwas umständlich, aber selbst ausgedacht...) eine schon halbe lösung gefunden, die aber wie gesagt noch nicht ganz das ziel erreicht...
danke noch mal
bis bald
ferdinand

hallo jinx,
tut mir leid mit dem vielen text,
aber wie gesagt, ich bin halt doch noch ein anfängerstümper und hoffentlich bald schlauer... das mit dem me hab ich ja von stema, bzw von dem link.... nu,
kann durchaus sein dass ich da sachen vermischt habe... ich probier jetzt mal ob meine umschiffung klappt, dann bin ich vielleicht auch das me problem los, wobei mich das schon interessiert, ist das mit access denn anders? (hoffentlich keine zu blöde frage!)
den code habe ich mir natürlich aus verschiedenen dingen zusammengestöpselt...
aber die technik is noch nicht ganz ausgereift, wie du siest....

nun denn ich bin in jedem fall dankbar, dass sich meiner angenommen wird...

gruss
ferdinand

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag das Zitat entfernt...</font>

jinx
21.06.2001, 19:07
<font size="2" face="Century Gothic">Moin, ferdix,

wenn Du ein klein wenig Input brauchst, schau mal bei diesem Artikel und dem dort genannten Link vorbei: Excel-Beispielcode (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=54860) .

Für Einführungen etc. (wenn interessant) kann ich z.B. auf http://www.dokuwelt.de/ verweisen, wo Du Dich dann über Dokus und Anwendungen zu den MS-Anwendungen durchhangeln kannst...
Vielleicht ist ja was Neues dabei (bestimmt, da auf DONKARL im Bereich Access verwiesen wird ;))?

<font color="#808080" size="3" face="Arial Black">cu
jinx</font>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten und die Signatur angepasst...</font>

Stema
21.06.2001, 22:54
Hallo ferdix & jinx,
das mit dem "Me" war natürlich ein echter Faux-Pas von mir. Das gibt es natürlich in Excel nicht. Hatte irgendwie das Gefühl im Access-Forum zu sein. :boah:

Mal rein hypothetisch: Könnte der Fehler im Übernehmen eines Textes aus einem anderen Forum liegen? = Volltreffer :D


In Excel wird das Objekt direkt angesprochen, ohne übergeordnetes Objekt, wie z.B. das Formular in Access. Also:
strDocName = "F:\datenbank\" & lstDeinListenfeld.Column(0) & ".xls" Und dann äquivalent zu der Schleife.
Muß ich morgen auch mal mit dem Listfeld ausprobieren.

Bei weiteren Fragen... Bitte melden!

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten und die Signatur angepasst...</font>

ferdix
23.06.2001, 21:46
hallo stema,

wollte nur bescheid sagen, dass ich jetzt dank reichlicher lektüre mein problem vollends in den griff bekommen habe :)

ich bin mir zwar sicher, dass jeder kenner meine lösungen für nicht ganz so ausgefeilt halten wird, aber sie funktionieren, und fängt an mir spass zu machen...
auf jeden fall vielen dank soweit, war echt nett von dir mir zu helfen

gruss ferdi

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten...</font>