Otwieranie pliku bez ścieżki

2015-02-11 14:32
0

Witam,
Mam pytanie dotyczące otwierania pliku, zrobiłem sobie makro które otworzy mi plik txt i przerobi go jak będę chciał, lecz chciałbym się dowiedzieć czy istnieje możliwość otwarcia pliku bez znanej ścieżki, tylko znam nazwę pliku (abym mógł umieścić w dowolnej lokalizacji i odpalić lub przenieść na inny komputer i odpalić)
mam tak:

Workbooks.OpenText Filename:="C:\Users\PC\Desktop\pliki_do_excela.txt"

jak to przerobić aby otwierał plik pliki_do_excela.txt z dowolnej lokalizacji.

dodanie znacznika <code class="vbnet"> - @furious programming

edytowany 1x, ostatnio: furious programming, 2015-02-11 16:37
Nie używaj prefiksów/postfiksów w tytułach wątków - od podawania nazwy języka/technologii są tagi; I wstawiaj kod w znaczniki kolorujące składnię; - furious programming 2015-02-11 16:37

Pozostało 580 znaków

2015-02-11 14:39
1

Musiałbyś przeszukać cały dysk żeby znaleźć lokalizację tego pliku. Nie da się otworzyć pliku znając tylko nazwę.
Chyba że chodzi Ci o to aby trzymać plik w folderze z uruchomioną aplikacją. Wtedy pobierasz Environment.CurrentDirectory

Pozostało 580 znaków

2015-02-11 16:52
0

@dam1an - pytacz zapewne chce używać ścieżki względnej, więc Environment.CurrentDirectory wystarczy;

Inna sprawa - na podstawie samej nazwy pliku da się uzyskać pełną-bezwzględną ścieżkę; Nie piszę tu akurat o VB, ale ogólnie; Na przykład w bibliotece standardowej FPC jest funkcja ExpandFileName, która potrafi rozwinąć ścieżkę do wersji "absolutnej":

uses
  SysUtils;
begin
  Write(ExpandFileName('foo.dat'));
end.

Uruchomienie takiego kodu spowoduje wyświetlenie w konsoli łańcucha C:\DOCUME~1\FURIOU~1\USTAWI~1\Temp\foo.dat (projektu nie zapisywałem na dysku); Gdybym zapisał projekt, analogicznie ścieżka była by inna;

Przeszukiwanie dysku pod kątem takiego pliku będzie bardzo ułomne, dlatego że na dysku może istnieć mnóstwo plików o takiej samej nazwie, w różnych katalogach; Tak więc istnieje możliwość rozwinięcia ścieżki na podstawie samej nazwy pliku, choćby za pomocą tzw. working directory; Uniwersalny algorytm nie jest taki oczywisty (wystarczy zobaczyć na kod wymienionej funkcji), jednak jest możliwy do zapisania.


edytowany 1x, ostatnio: furious programming, 2015-02-11 16:53

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0