Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Vorgabe in InputBox

Vorgabe in InputBox
27.05.2005 09:25:57
Josef
Hallo!
Mit nachfolgendem Makro erzeuge und speichere ich eine Textdatei vom aktiven Arbeitsblatt.
In der Inputbox steht dann H:\NOVAIMPORT\*.txt.
In der Zeile A1 des aktiven Arbeitsblattes steht z.B. folgendes:
401351700000501000000001270505
Ist es bitte möglich, dass als Speicherungsvorgabe von der Zeile A1 die 4-9 Stelle + das Datum in die InputBox eingegeben wird?
Beispiel: H:\NOVAIMPORT\351700_270505.txt
Danke
Josef

Sub Daten_Speichern()
F = FreeFile(0)
fname = InputBox("Bitte geben Sie den Dateinamen ein!", , "H:\NOVAIMPORT\*.txt")
MsgBox "File Selected is: " & fname
If fname <> False Then
Open fname For Output As #F
Set rng = ActiveCell.CurrentRegion
Debug.Print rng.Address
FCol = rng.Columns(1).Column
LCol = rng.Columns(rng.Columns.Count).Column
Frow = rng.Rows(1).Row
Lrow = rng.Rows(rng.Rows.Count).Row
For i = Frow To Lrow
outputLine = ""
For j = FCol To LCol
If j <> LCol Then
'Semikolon als Texttrennzeichen, kann geändert werden
outputLine = outputLine & Cells(i, j) & ";"
Else
outputLine = outputLine & Cells(i, j)
End If
Next j
Print #F, outputLine
Next i
Close #F
End If
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Vorgabe in InputBox
27.05.2005 09:34:01
Dr.
Hi,
ungetestet:
fname = InputBox("Bitte geben Sie den Dateinamen ein!", , "H:\NOVAIMPORT\" & Mid([A1],4,9) & "*.txt")
AW: Vorgabe in InputBox
27.05.2005 09:43:41
Josef
Hallo Dr.
Mit
fname = InputBox("Bitte geben Sie den Dateinamen ein!", , "H:\NOVAIMPORT\" & Mid([A1],4,6) & ".txt") würde es soweit funktionieren, dass die Zahl 351700.txt eingetragen wird.
Ich bräuchte hinten nach jedoch noch das Datum?
Also 351700_270505.txt
Gäbe es dafür bitte auch eine Lösung?
Danke
Josef
Anzeige
AW: Vorgabe in InputBox
27.05.2005 09:34:54
Dr.
Sorry, muss natürlich Mid([A1],4,5) heissen.
AW: Vorgabe in InputBox
27.05.2005 10:02:55
Josef
Hallo Dr.
Das ist die Lösung:
fname = InputBox("Bitte geben Sie den Dateinamen ein!", , "H:\NOVAIMPORT\" & Mid([A1], 4, 6) & "_" & Format(Now, "DDMMYY_hh.mm") & ".txt")
Danke nochmals für Deine Hilfe
Josef
AW: Vorgabe in InputBox
27.05.2005 09:39:18
chris
Hallo habe dir mal was zusammengebastelt.
Hoffe du kommst zurecht damit.

Sub neu()
cb = Mid(Cells(1, 1), 4, 6)
laenge = Len(Cells(1, 1))
cb1 = Mid(Cells(1, 1), laenge - 5, 6)
ges = "H:\NOVAIMPORT\" & cb & "_" & cb1 & ".txt"
fname = InputBox("Bitte geben Sie den Dateinamen ein!", , ges)
End Sub

Anzeige
AW: Vorgabe in InputBox
27.05.2005 09:46:50
Josef
Hallo Chris!
Danke für Deinen Lösungsvorschlag, schau es mir gleich an.
Josef
;
Anzeige
Anzeige

Infobox / Tutorial

Vorgabe in InputBox für Excel VBA


Schritt-für-Schritt-Anleitung

Um eine InputBox in Excel VBA zu erstellen, die einen Vorgabewert anzeigt, kannst Du das folgende Makro verwenden. Es nutzt den Wert aus Zelle A1 für die Dateinamenserstellung.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei)", dann "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:
Sub Daten_Speichern()
    Dim F As Integer
    Dim fname As String
    Dim rng As Range
    Dim i As Long, j As Long
    Dim outputLine As String
    Dim FCol As Long, LCol As Long, Frow As Long, Lrow As Long

    F = FreeFile(0)
    fname = InputBox("Bitte geben Sie den Dateinamen ein!", , "H:\NOVAIMPORT\" & Mid([A1], 4, 6) & "_" & Format(Now, "DDMMYY") & ".txt")
    MsgBox "File Selected is: " & fname
    If fname <> "" Then
        Open fname For Output As #F
        Set rng = ActiveCell.CurrentRegion
        FCol = rng.Columns(1).Column
        LCol = rng.Columns(rng.Columns.Count).Column
        Frow = rng.Rows(1).Row
        Lrow = rng.Rows(rng.Rows.Count).Row
        For i = Frow To Lrow
            outputLine = ""
            For j = FCol To LCol
                If j <> LCol Then
                    outputLine = outputLine & Cells(i, j) & ";"
                Else
                    outputLine = outputLine & Cells(i, j)
                End If
            Next j
            Print #F, outputLine
        Next i
        Close #F
    End If
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus, um zu sehen, wie die InputBox mit dem Vorgabewert erscheint.

Häufige Fehler und Lösungen

  • Fehler: InputBox gibt keinen Vorgabewert zurück
    Stelle sicher, dass Du den richtigen Bereich in der InputBox verwendest. Zum Beispiel, Mid([A1], 4, 6) sollte korrekt sein, um die Zeichenstellen zu extrahieren.

  • Fehler: Datei nicht gefunden oder Fehler beim Speichern
    Überprüfe den Pfad in der InputBox. Der Ordner H:\NOVAIMPORT\ muss existieren und Du musst die Berechtigung haben, dort zu speichern.


Alternative Methoden

Eine alternative Methode für den InputBox-Vorgabewert ist die Verwendung einer benutzerdefinierten Form. Dies erfordert jedoch mehr Aufwand in VBA, bietet aber mehr Flexibilität in der Benutzeroberfläche.

Hier ein einfaches Beispiel für eine benutzerdefinierte UserForm:

  1. Erstelle eine UserForm im VBA-Editor.
  2. Füge ein Textfeld und zwei Schaltflächen (OK, Abbrechen) hinzu.
  3. Setze den Standardwert des Textfeldes auf Mid([A1], 4, 6) und füge Logik hinzu, um die Eingabe zu verarbeiten.

Praktische Beispiele

In diesem Beispiel wird der InputBox-Vorgabewert mit dem Datum kombiniert:

fname = InputBox("Bitte geben Sie den Dateinamen ein!", , "H:\NOVAIMPORT\" & Mid([A1], 4, 6) & "_" & Format(Now, "DDMMYY") & ".txt")

Das Ergebnis könnte z.B. H:\NOVAIMPORT\351700_270505.txt sein, wenn A1 den Wert 401351700000501000000001270505 enthält.


Tipps für Profis

  • Nutze die Format-Funktion, um das Datum in verschiedenen Formaten darzustellen.
  • Füge Fehlerbehandlungsroutinen hinzu, um sicherzustellen, dass Dein Makro auch bei unerwarteten Eingaben robust bleibt.
  • Verwende die Application.InputBox, wenn Du sicherstellen willst, dass der Benutzer nur bestimmte Datentypen eingibt.

FAQ: Häufige Fragen

1. Wie kann ich den Pfad in der InputBox ändern?
Du kannst den Pfad einfach im InputBox-Aufruf anpassen. Ersetze H:\NOVAIMPORT\ durch Deinen gewünschten Pfad.

2. Was passiert, wenn der Benutzer die InputBox abbricht?
Wenn der Benutzer abbricht, gibt die InputBox einen leeren String zurück. Du kannst dies abfangen, indem Du eine Bedingung hinzufügst, die prüft, ob fname leer ist.

3. Welche Excel-Version benötige ich?
Der gezeigte Code sollte in allen modernen Excel-Versionen (Excel 2010 und höher) funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige