2013-03-28 4 views
0

У меня есть googled и нашел ответы на часть моего вопроса, но не на полный вопрос. Я хочу использовать Application.GetOpenFilename в Excel VBA, чтобы открыть файл, и я хочу, чтобы он открывался в том же каталоге, что и ThisWorkbook.Path. Я обнаружил, что заранее я могу сделатьExcel VBA изменить каталог по умолчанию для Application.GetOpenFilename

OpenPath = ThisWorkbook.Path 
ChDrive OpenPath 
ChDir OpenPath 

Но, после того, что работает, если я бегу любой другой Application.GetOpenFilename он все равно будет доступ в тот же каталог (до тех пор, возможно, я не закрою Excel ???). Но я хочу, чтобы он вернулся к директории по умолчанию (независимо от того, что это было). На моем компьютере, который является Windows XP, это MyDocuments. Но некоторые из тех, кто использует это, могут иметь XP, а некоторые из них могут иметь Windows 7. Я не могу найти нигде, как выяснить, что такое исходный каталог по умолчанию, чтобы я мог хранить его, чтобы впоследствии я мог вернуться к умолчанию , Любая помощь приветствуется.

+0

@KazJaw предложил хороший метод. Кроме того, вы также можете использовать API 'SetCurrentDirectory' :) –

+0

не может ли он использовать Application.DefaultFilePath? –

+0

Многие способы кошки кошки :) –

ответ

5

Таким образом, это может быть решение:

Dim StartingDir as string 
    StartingDir = CurDir 

'...your code here 

ChDir StartingDir 'just before you leave 

И если это необходимо сделать то же с Drive.

+0

+ 1 Это самый простой способ сделать это :) –

1

это может быть то, что вы хотите

dim sStarDir as string 
sStarDir=curDir 
... do all you stuff 
' now reset! 
Application.DefaultFilePath=sStarDir 

Филипп

+0

+ 1 Еще один простой способ :) –

+0

Когда я забираю ChDrive и ChDir и использую вместо этого Application.DefaultFilePath, он просто продолжает открываться в MyDocuments по умолчанию и никогда не меняет в каталог, который я хочу в первую очередь. Можете ли вы предоставить более подробную информацию? – Graphth

+0

то, что мы делаем, это сохранение пути при запуске кода, затем после строки * sStarDir = curDir *, где вы ** вставляете ** свой код, включая код для ChDir, а в конце, ПОСЛЕ вашего кода закончен, мы сбрасываем DefaultFilePath с кодом * Application.DefaultFilePath = sStarDir * –

Смежные вопросы