Registriert seit: 24.11.2017
Version(en): 2016
24.07.2018, 14:01
(Dieser Beitrag wurde zuletzt bearbeitet: 24.07.2018, 14:02 von jules.)
Hallo zusammen,
wahrscheinlich nur eine kurze Frage, aber ich komme gerade nicht weiter:
Ich habe die Range für "Pfad" und "Blattname" bereits unter Namen definiert. Jetzt würde ich sie gerne hier nutzen... - Klappt aber nicht...
Code:
Option Explicit
Const strPathFile As String = "Tabelle1.Range(Pfad)"
Const strSheet As String = "Tabelle1.Range(Blattname)"
Wenn ich anstatt "Pfad" den richtigen Pfad angebe (C:\Bla\Datei.xlsm) geht es natürlich. Aber es muss doch möglich sein den Pfad und Blattnamen aus einer Zelle zu lesen?
Danke für Eure Hilfe.
VG
Registriert seit: 10.07.2018
Version(en): 2013, 2016
Hallo,
Zitat:Aber es muss doch möglich sein den Pfad und Blattnamen aus einer Zelle zu lessen?
Klar, ist das möglich, aber nicht wenn du die Variable als Konstante deklarierst. Außerdem gehören diese nicht in Anführungszeichen.
Registriert seit: 24.11.2017
Version(en): 2016
Hi Matthias,
wie muss ich dann an die Geschichte rangehen?
Hier mal mein Script:
Code:
Option Explicit
Const strPathFile As String =
Const strSheet As String =
Public Sub Main()
Dim wkbBook As Workbook
Dim blnTMP As Boolean
On Error GoTo Fin
Application.ScreenUpdating = False
If fncFileUse(strPathFile) = True Then blnTMP = True
Set wkbBook = GetObject(strPathFile)
With ThisWorkbook
wkbBook.Worksheets(strSheet).Copy After:=.Worksheets(.Worksheets.Count)
If blnTMP = False Then wkbBook.Close False
End With
Fin:
Application.ScreenUpdating = True
If Err.Number <> 0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
Set wkbBook = Nothing
End Sub
Function fncFileUse(strFile As String) As Boolean
On Error Resume Next
Open strFile For Binary Access Read Lock Read As #1
Close #1
If Err.Number <> 0 Then
fncFileUse = True
Err.Clear
End If
End Function
Vielen Dank!
Registriert seit: 10.07.2018
Version(en): 2013, 2016
Hallo,
deine beiden Variablen sind ja immer noch Konstanten und keine Variablen. Zur Deklaration von Variablen siehe [url=
Dateiupload bitte im Forum! So geht es: Klick mich! 13[/url].
So wie du die Variable definierst, erhält sie nicht den Inhalt der Zelle. Wenn du den haben willst, brauchst du keine Anführungszeichen, sondern am Ende ein .Value
Registriert seit: 24.11.2017
Version(en): 2016
Hi,
das ist richtig. Sie sind Konstanten, da ich sie weiter unten für die Funktion benötige.
Wenn ich es in Variablen umänder, funktioniert es nicht mehr ..
Oder übersehe ich etwas?
Registriert seit: 10.07.2018
Version(en): 2013, 2016
Zitat:Wenn ich es in Variablen umänder, funktioniert es nicht mehr ..
Warum sollte das nicht mehr funktionieren? Konstanten und Variablen unterscheiden sich nur dadurch, dass du den Wert von Variablen zur Laufzeit ändern kannst, den von Konstanten nur während der Programmierung. Wenn du aber den Wert der Zelle einlesen willst, darfst du keine Konstante verwenden, da du während der Programmierung den Wert der Zelle noch gar nicht kennst.
Registriert seit: 24.11.2017
Version(en): 2016
Matthias, ich danke Dir !
Stand wohl echt etwas auf dem Schlauch.
Es funktioniert einwandfrei. - Jedoch auch ohne .value
Code:
Dim strPathFile As String
strPathFile = Tabelle1.Range("Pfad").Value
Dim strSheet As String
strSheet = Tabelle1.Range("Blattname").Value
LG
Registriert seit: 10.07.2018
Version(en): 2013, 2016
24.07.2018, 16:46
(Dieser Beitrag wurde zuletzt bearbeitet: 24.07.2018, 16:46 von Matthias84.)
Ja, da .Value die Default-Eigenschaft ist. Allerdings schreibe ich persönlich immer .Value hin - finde das erleichtert einiges (und ganz nebenbei mache ich mich unabhängig, falls Microsoft die Default_Einstellung mal ändern solte)
Folgende(r) 1 Nutzer sagt Danke an Matthias84 für diesen Beitrag:1 Nutzer sagt Danke an Matthias84 für diesen Beitrag 28
• jules