Soru GetOpenFilename açıldığında %currentdirectory% de açılması nasıl sağlanır?

Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
PHP:
Sub dozimetri_al()
fName = Application.GetOpenFilename("Excel Files (*.xls*), *.xls", , "*")
If fName = "False" Then Exit Sub
Worksheets("Dozimetri").Select
Set hdf = Cells(Rows.count, 1).End(3).Offset(1)
Set w2 = Workbooks.Open(fName)
Set s2 = w2.Sheets(1)
hdf.Resize(, 20).Value = Application.Transpose(s2.Range("B2:B21"))
w2.Close 0
Worksheets("Formlar").Select
End Sub
Merhaba
Dış excel dosyasından veri almaya çalışıyorum. Bunun için gelOpenFilename kullanıyorum.

Varsayılan klasörün dosyanın mevcut olduğu klasör olmasını nasıl sağlarım? Alakasız bir yerde açılıyor 5-10 hamlede dosyanın olduğu "Current Directory" ye ulaşıyorum.

Teşekkürler.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,842
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bu kodu bir dene

Kod:
Sub dozimetri_al()

Dim fd As FileDialog

Set fd = Application.FileDialog(msoFileDialogOpen)
fd.InitialFileName = ThisWorkbook.Path

Dim FileChosen As Integer
FileChosen = fd.Show
fd.Title = "Dosya Penceresi"
fd.Filters.Clear
fd.Filters.Add "Excel Files", "*.xls"
fd.FilterIndex = 1
fd.ButtonName = "Dosyayı Aç"
If FileChosen <> -1 Then

Else

Worksheets("Dozimetri").Select
Set hdf = Cells(Rows.Count, 1).End(3).Offset(1)
Set w2 = Workbooks.Open(fd.SelectedItems(1))
Set s2 = w2.Sheets(1)
hdf.Resize(, 20).Value = Application.Transpose(s2.Range("B2:B21"))
w2.Close 0
Worksheets("Formlar").Select

End If
End Sub
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Alternatif olarak, kodun başına aşağıdaki "kırmızı" renkli satırı ekleyip, deneyebilirsiniz...

Rich (BB code):
Sub dozimetri_al()
ChDir ThisWorkbook.Path
fName = Application.GetOpenFilename("Excel Files (*.xls*), *.xls", , "*")
If fName = False Then Exit Sub
Worksheets("Dozimetri").Select
Set hdf = Cells(Rows.Count, 1).End(3).Offset(1)
Set w2 = Workbooks.Open(fName)
Set s2 = w2.Sheets(1)
hdf.Resize(, 20).Value = Application.Transpose(s2.Range("B2:B21"))
w2.Close 0
Worksheets("Formlar").Select
End Sub
.
 
Son düzenleme:
Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
ChDir ThisWorkbook.Path

bunu çalıştıramadım, diğer kod çalıştı.

teşekkürler
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Kodu yazdıktan sonra dosyayı kaydettiniz mi?

Çalıştıramadığınız zaman aldığınız hata mesajı nedir ?

.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Değişik disk bölümlerinde çalışıyorsanız, belki ondan dolayı problem olabilir.

Aşağıdaki şekliyle bende bir sorun gözükmüyor....


Rich (BB code):
Sub dozimetri_al()
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set drive = FSO.GetDrive(FSO.GetDriveName(ThisWorkbook.FullName))
    ChDrive drive.DriveLetter
    ChDir ThisWorkbook.Path
    fName = Application.GetOpenFilename("Excel Files (*.xls*), *.xls", , "*")
    If fName = False Then Exit Sub
    Worksheets("Dozimetri").Select
    Set hdf = Cells(Rows.Count, 1).End(3).Offset(1)
    Set w2 = Workbooks.Open(fName)
    Set s2 = w2.Sheets(1)
    hdf.Resize(, 20).Value = Application.Transpose(s2.Range("B2:B21"))
    w2.Close 0
    Worksheets("Formlar").Select
End Sub
.
 
Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
Değişik disk bölümlerinde çalışıyorsanız, belki ondan dolayı problem olabilir.

Aşağıdaki şekliyle bende bir sorun gözükmüyor....


Rich (BB code):
Sub dozimetri_al()
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set drive = FSO.GetDrive(FSO.GetDriveName(ThisWorkbook.FullName))
    ChDrive drive.DriveLetter
    ChDir ThisWorkbook.Path
    fName = Application.GetOpenFilename("Excel Files (*.xls*), *.xls", , "*")
    If fName = False Then Exit Sub
    Worksheets("Dozimetri").Select
    Set hdf = Cells(Rows.Count, 1).End(3).Offset(1)
    Set w2 = Workbooks.Open(fName)
    Set s2 = w2.Sheets(1)
    hdf.Resize(, 20).Value = Application.Transpose(s2.Range("B2:B21"))
    w2.Close 0
    Worksheets("Formlar").Select
End Sub
.
bu şekilde tekrarlı kullanımlarda da kusursuz çalışıyor.

ThisWorkbook.Path & "\dosya\"

şeklinde hedefi modifiye ettim bu arada.
 
Üst