6 Stimmen

Wie erhalte ich einen Dateinamen aus einem File-Dialog-Objekt in VBA (für MS Access 2007)?

Wie ändere ich meinen Code, um den Dateinamen anstelle des Verzeichnisnamens zu erhalten? openDialog.InitialFileName gibt mir den Verzeichnisnamen.
openDialog.FileName gibt mir den Fehler "Methode oder Element nicht gefunden".

Private Sub btnEditPhoto_Click()
    If (txtImageName > "") Then

        Application.FollowHyperlink txtImageName

    Else
        Dim openDialog As Office.FileDialog

        Set openDialog = Application.FileDialog(msoFileDialogFilePicker)

            openDialog.Filters.Clear
            openDialog.Filters.Add "JPEG-Dateien", "*.jpg"

        Dim pickedFile As Boolean
            pickedFile = openDialog.Show

        If pickedFile Then
                txtImageName.SetFocus
                txtImageName.Text = openDialog.InitialFileName
        End If

    End If

End Sub

0 Stimmen

Es ist etwas verwirrend, die Frage zu bearbeiten, um die Antwort einzufügen, da Ihr Code zu diesem Zeitpunkt das tut, wonach Sie um Hilfe fragen.

13voto

Fionnuala Punkte 89346

Sie wollen:

OpenDialog.SelectedItems.Item(1)

Anstatt von:

OpenDialog.InitialFileName

Weil Sie Multiselect nicht zugelassen haben.


Also:

''Referenz Microsoft Office x.x Objektbibliothek
Dim openDialog As Office.FileDialog

Set openDialog = Application.FileDialog(msoFileDialogFilePicker)
openDialog.Filters.Clear
openDialog.Filters.Add "JPEG Dateien", "*.jpg"

If openDialog.Show Then
    ''SelectedItems ist nicht nullbasiert

    ''Verwenden Sie die .Text Eigenschaft in MS Access nicht, außer
    ''in speziellen Fällen, dann müssen Sie keinen Fokus setzen
    ''txtImageName.SetFocus

    txtImageName = openDialog.SelectedItems(1)
End If

Wenn AllowMultiSelect verwendet wird, müssen Sie durch SelectedItems iterieren

''Referenz Microsoft Office x.x Objektbibliothek
Dim openDialog As Office.FileDialog
Dim i As Integer

Set openDialog = Application.FileDialog(msoFileDialogFilePicker)
'Verwenden Sie strg oder Umschalt + Mausklick, um mehr als eine Datei auszuwählen
openDialog.AllowMultiSelect = True
openDialog.Filters.Clear
openDialog.Filters.Add "JPEG Dateien", "*.jpg"

If openDialog.Show Then
    For i = 1 To openDialog.SelectedItems.Count
        Imagelst = Imagelst & ";" & openDialog.SelectedItems(i)
    Next
End If

1voto

Askjerry Punkte 49

Ich musste eine einzelne Textdatei auswählen... das habe ich gemacht... es hat gut funktioniert.

' Datei abrufen
'----------------------------------------------------------
Dim dialog As Object
Dim pickedfile As Boolean
Dim myfile As String
Set dialog = Application.FileDialog(msoFileDialogFilePicker)
With dialog
    .AllowMultiSelect = False
    .Title = "Bitte wählen Sie die Datei aus, die konvertiert werden soll."
    .Filters.Clear
    .Filters.Add "Textdateien", "*.TXT"
    .Filters.Add "Alle Dateien", "*.*"
    pickedfile = False
    pickedfile = .Show
    If pickedfile Then
    myfile = .SelectedItems.Item(1)
    End If
End With
'----------------------------------------------------------

Zusätzlich... kannst du den Dialogtyp mit diesem ersetzen...

Set dialog = Application.FileDialog(msoFileDialogOpen)

Und es hat genauso gut funktioniert.

0voto

NAsif Punkte 1
Private Sub Command135_Click()

Dim dialog As Object
Dim pickedfile As Boolean
Dim myfile As String
Set dialog = Application.FileDialog(1)
With dialog
    .AllowMultiSelect = False
    .Title = "Bitte wählen Sie die Datei zum Konvertieren aus."
    .Filters.Clear
    .Filters.Add "Bilddateien", "*.Jpg"
    .Filters.Add "Alle Dateien", "*.*"
    pickedfile = False
    pickedfile = .Show
    If pickedfile Then
    myfile = .SelectedItems.Item(1)
    End If
End With

Me.Form.Picture = myfile
End Sub

Command_135=Button Name
Me.Form.Picture = "Der Name des Steuerelements"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X