1.2k Aufrufe
Gefragt in Tabellenkalkulation von acr Mitglied (215 Punkte)
Hallo Exelgemeinde

Ich habe ein kleines Problem, aber da ich keine VBA-Kenntnisse habe, hoffe ich hier auf Hilfe
Meine Exelversion: Exel2003

Jetzt zum Problem. In einem Arbeitsblatt wird in Spalte A ein Datum eingetragen. In Spalte B per Auswahl ein bestimmter Name eingefügt. Aus beiden Kriterien wurde vorher eine pdf-Datei im Ordner x:\Ablage abgelegt.
Es soll nun beim Ausfüllen der beiden genannten Spalten des Arbeitsblattes überprüft werden, ob eine Datei aus beiden Kriterien (zB. 22.05.2015 Name.pdf) im Ordner vorhanden ist. Bei Nichtvorhandensein soll dann per Messagebox gefragt werden, ob eine Datei per Scanner erzeugt werden soll oder nicht.
Ich hoffe, ich habe mich verrständlich ausgedrücht und hoffe auf Eure Hilfe.

M.f.G.
H.Schult

5 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

probier mal den folgenden Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim strPfad As String
Dim strDateiname As String
Dim strDatei As String
Dim Antwort

'Pfad für Dateiablage - anpassen!!
strPfad = "X:\Ablage\"

'Prüfen, ob Eingabe in Spalten A oder B erfolgt ist, falls nicht, dann Makro beenden
If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub

'Prüfen, ob in Eingaben sowohl in Zelle A als auch in Zelle B erfolgt sind
If IsEmpty(Cells(Target.Row, 1)) = False And IsEmpty(Cells(Target.Row, 2)) = False Then
'Falls beide Spalten ausgefüllt sind, dann Variable für Überprüfung erstellen - Leerzeichen ggf. löschen
strDateiname = Cells(Target.Row, 1).Value & " " & Cells(Target.Row, 2) & ".pdf"
strDatei = strPfad & strDateiname
'prüfen ob Datei bereits vorhanden ist, falls nicht dann Nachfrage
If Dir(strDatei) = "" Then
Antwort = MsgBox("Eine Datei mit dem Namen " & strDateiname & " existiert nicht! Soll die Datei per Scanner erzeugt werden?", 68, "Datei existiert nicht")
'Falls die Antwort Ja ausgewählt wird, dann Scan-Programm starten - anpassen! Hier wird beispielhaft IrfanView gestartet
If Antwort = vbYes Then Shell ("C:\Program Files (x86)\IrfanView\i_view32.exe")
End If
End If

End Sub


Der Code gehört in das VBA-Projekt der Tabelle, in der die Eingaben erfolgen. Hier wird Beispielhaft IrfanView gestartet. Du musst hier natürlich den Pfad für dein vorhandenes Scan-Programm eintragen.

Gruß

M.O.
0 Punkte
Beantwortet von acr Mitglied (215 Punkte)
Hallo M.O.

Dieser Code war hervorragend. Mein Problem ist damit super gelöst. Funktioniert einwandfrei, so wie ich es mir vorgestellt hatte.
0 Punkte
Beantwortet von acr Mitglied (215 Punkte)
Hallo M.O.

Ich war etwas schnell mit meiner Antwort. Ein kleines Problem bleibt noch zu lösen: Wie erreiche ich, daß beim Aufruf des Scanprogrammes dieses auch in den Vordergrund gebracht wird? Hasdt Du eventuell auch darauf eine Antwort?

M.f.G.
Horst
(ACR)
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Horst,

hänge an den Aufruf des Scan-Programms den Befehl vbMaximizedFocus dran, also so:
If Antwort = vbYes Then Shell ("C:\Program Files (x86)\IrfanView\i_view32.exe"), vbMaximizedFocus

oder falls es dir dann zu groß ist
If Antwort = vbYes Then Shell ("C:\Program Files (x86)\IrfanView\i_view32.exe"),vbNormalFocus

Gruß

M.O.
0 Punkte
Beantwortet von acr Mitglied (215 Punkte)
Hallo M.O.

Dein Vorschlag war Super. Funktioniert einwandfrei.
Nochmals Danke für die superschnelle Antwort.

M.F.G.
Horst
...