OCX dosyalarını istediğim klasöre kopyalama. [Archive] - Excel Forum

PDA

Tüm Versiyonu Göster : OCX dosyalarını istediğim klasöre kopyalama.


Orion1
23-08-2008, 09:39
Merhaba.
İçinde bulunduğu klasörden OCX dosyalarını C:\Deneme klasörü içersine kopyalamak istiyorum.
Döngüye girecek.Kaç tane OCX dosyası varsa kopyalayacak.
Sonuçtada kaç tane ocx dosyasının kopyalandığın mesajbox'la bildirecek.
Teşekkür ederim.

Korhan Ayhan
23-08-2008, 11:16
Selamlar,

Evren bey,

Aşağıdaki kodu denermisiniz.

Sub OCX_KOPYALA()
Dim Klasör As Object
Dim Dosya As Object
Dim FSO As Object
Dim Dosya_Yolu As String
Dosya_Yolu = "C:\DENEME"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Klasör = CreateObject("Scripting.FileSystemObject")
Set Dosya = Klasör.GetFolder(Dosya_Yolu)

If Not FSO.FolderExists(Dosya_Yolu) Then
FSO.CreateFolder (Dosya_Yolu)
End If

Klasör.CopyFile "C:\WINDOWS\system32\*.OCX", "C:\DENEME"
MsgBox "Kopyalanan *.ocx uzantılı dosya sayısı;" & Chr(10) & Chr(10) & Dosya.Files.Count
End Sub

Orion1
23-08-2008, 11:32
Korhan bey 2nci satırda 16ncı karakterde hata veriyor.
Not:
Dosya vbs uzantılı dosya olacaktı.

tahsinanarat
23-08-2008, 15:41
Sevgili hocam, bu sitede sizlerden öğrendiğim bilgiler doğrultusunda istediğiniz mantıkla bir dosya hazırlamaya çalıştım, umarım beğenirsiniz, Kolay gelsin

vba şifresi ve kaydetme şifresi 123

Orion1
23-08-2008, 18:48
Sevgili hocam, bu sitede sizlerden öğrendiğim bilgiler doğrultusunda istediğiniz mantıkla bir dosya hazırlamaya çalıştım, umarım beğenirsiniz, Kolay gelsin

vba şifresi ve kaydetme şifresi 123
Sayın tahsinarat teşekkür ederim.
Yalnız ben VBScript kodu istemiştim.Dosya Uzantısı Vbs olacaktı.NotePad'de yazabiliyorsunuz.
Uzantısınıda farklı kaydetten xxx.vbs olarak kaydediyorsunuz.

Haluk
23-08-2008, 20:09
Evren bey;

Birincisi; VBScript dilinde "Dim XXXX as YYYY" gibi değişken tanımlaması yapılmaz.. Dolayısıyle, o satırların hepsini silin.

İkincisi; VBScript dilinde kullandığınız değişken adlarında kesinlikleTürkçe karakter kullanmamaya dikkat edeceksiniz.

Üçüncüsü; VBScript ile hazırladığınız bir dosyada eğer prosedüre bir ad vermişseniz (Korhan bey'in kodundaki OCX_KOPYALA gibi....) o zaman bu prosedürü çalıştırmak için, prosedürü adıyla çağırmanız gerekir.

Yukarıdaki açıklamaların ışığında, Korhan bey'in VBA dilindeki kodunu VBS dosyası olarak kullanmak istediğinizde, yapılması gereken revizyon aşağıdaki gibidir;

Sub OCX_KOPYALA()
Dosya_Yolu = "C:\DENEME"
Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(Dosya_Yolu) Then
FSO.CreateFolder (Dosya_Yolu)
End If

Set Klasor = CreateObject("Scripting.FileSystemObject")
Set Dosya = Klasor.GetFolder(Dosya_Yolu)

Klasor.CopyFile "C:\WINDOWS\system32\*.OCX", "C:\DENEME"
MsgBox "Kopyalanan *.ocx uzantılı dosya sayısı;" & Chr(10) & Chr(10) & Dosya.Files.Count
End Sub
'
Call OCX_KOPYALA



.

tahsinanarat
23-08-2008, 22:06
Hocam, dediğiniz dosya olduğunda eklermisiniz, merak ettim.

Haluk
23-08-2008, 22:10
Hocam, dediğiniz dosya olduğunda eklermisiniz, merak ettim.

Pardon, bana mı dediniz?

Eğer bana diyorsanız, sözkonusu dosyanın içindeki kodlar (orjinali Korhan bey'e ait) yukarıdaki mesajımda.

Yeni bir Notepad dosyası oluşturun, dosyaya herhangibir isim verin, uzantısını vbs yapın, kaydedip, kapatın.

Daha sonra dosyanın üzerinde çift tıklayıp, çalıştırın...

.

tahsinanarat
23-08-2008, 22:32
Sn. Haluk hocam note pad "Not Defteri" aynı şeyler değilmi, not defteri ne kopyalarak dediğiniz gibi denemiştim, ama olmadı, bu açıdan sn.evren gizlen hocama dosyanın olmuş halini eklemesini rica etmiştim. şu an tekrar denedim. olmadı. İlginize teşekkürler.

Haluk
23-08-2008, 22:50
Tahsin bey;

Sözkonusu VBS dosyası ektedir. (Not: Orjinal kodda gözüme çarpan bir-iki düzeltmeyi de yaptım.)

Çift tıklayıp çalıştırabilirsiniz.... Eğer yine de olmuyorsa, belki PC'de WSH aktif edilmemiş olabilir.


.

tahsinanarat
23-08-2008, 23:09
Sn. Haluk hocam gönderdiğiniz test dosyası oldu, şimdi yeni birşey daha öğrenmiş bulunmaktayım, Emeği geçen bütün hocalarıma teşekkür ederim. Saygılar.

Bu arada iki kod arasındaki farkı incelerken fark ettim, ben ilk denememde '
Call OCX_KOPYALA kısmını fazlalık diye düşündüğümden yazmamıştım, oysa önceki dosyada bu şekilde çalışıyormuş, olsun öğrenmeler bu şekilde olur zaten. Tekrar teşekkürler

Orion1
23-08-2008, 23:36
Haluk hocam verdiğiniz birbirinden değerli bilgiler için ve Kodlar için teşekkür ederim.
Acaba şöyle bir şey istesem diyorum.
Kaynak yolu , vbs dosyasının içinde bulunduğu yol olarak belirtebilirmiyiz?
Vbs dosyası hangi klasörün içinde bulunuyorsa o klasörün içindeki ocx dosyaları C:\Deneme klasörü içersine kopyalansın.
Tekrardan teşekkür ederim.

Korhan Ayhan
24-08-2008, 01:28
Selamlar,

Haluk bey verdiğiniz değerli bilgiler için bende teşekkür ederim.

Haluk
24-08-2008, 11:43
Ben de size teşekkür ederim beyler.


Acaba şöyle bir şey istesem diyorum.
Kaynak yolu , vbs dosyasının içinde bulunduğu yol olarak belirtebilirmiyiz?


Evren bey, ekli revizyon sanırım işinizi görecektir.

.

Orion1
24-08-2008, 20:01
Ben de size teşekkür ederim beyler.




Evren bey, ekli revizyon sanırım işinizi görecektir.

.
İstediğim oldu.
Teşekkür ederim,hocam.Saygılar.

Orion1
24-08-2008, 20:28
Merhaba.
Hocam şöyle bir durum oluştu.
Eğer buluduğu klasörde hiç ocx dosyası yoksa hata veriyor.
Eğer hiç ocx dosyası yoksa
xxxx klasöründe kopyalanacak ocx dosyası/dosyaları bulunamadı.!
Diye mesaj verbilirmi?
Teşekkür ederim.

Haluk
24-08-2008, 20:39
Evren bey, buyrun;

Sub OCX_KOPYALA()
Dosya_Yolu = "C:\DENEME"
Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(Dosya_Yolu) Then
FSO.CreateFolder (Dosya_Yolu)
End If

Set Klasor = CreateObject("Scripting.FileSystemObject")
Set Dosya = Klasor.GetFolder(Dosya_Yolu)
on error resume next
Klasor.CopyFile Replace(WScript.ScriptFullname,WScript.ScriptName,"") & "*.OCX", "C:\DENEME"

if err then
msgbox Replace(WScript.ScriptFullname,WScript.ScriptName,"") & chr(13) & "klasöründe kopyalanacak OCX dosyası bulunamadı..."
exit sub
end if
MsgBox "Kopyalanan *.ocx uzantılı dosya sayısı;" & Chr(10) & Chr(10) & Dosya.Files.Count
End Sub
'
Call OCX_KOPYALA


.

Orion1
25-08-2008, 07:11
Halu hocam teşekkür ederim.

Orion1
26-08-2008, 04:38
Haluk hocam bu konu ile son bir soru ve bu konu bitiyor.Böylelikle küçük bir setup programı sayenizde yapmış olacağız.
Dosyaları klasöre kopyalarken ayni zamanda regsvr32 dosyası ilede windowsa tanıntsa.Kodları bu şekilde revize ederek yollarsanız çok memnun olurum.
Tekrar teşekkür ederim.

Tarkan VURAL
13-10-2008, 08:02
Selam,
Evren Bey aşağıdaki kodlamayı kulanabilirsiniz, işinizi yapar...

Sub OCX_Copy_Run()
On Error Resume Next
Dim FSO
Dim EVNShell
Dim EVNDos
Dim EVN1
Dim EVN2
Dim EVN3
Yol = "C:\DENEME"
Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(Yol) Then
FSO.CreateFolder (Yol)
End If
Set EVNDos = FSO.GetFolder(Yol)
EVN1 = Replace(WScript.ScriptFullname, WScript.ScriptName, "") & "*.ocx"
FSO.CopyFile EVN1, Yol
If Err.Number = 53 Then
MsgBox Replace(WScript.ScriptFullname, WScript.ScriptName, "") & vbcr & "klasöründe kopyalanacak OCX dosyası yok ",16 , "Evren GİZLEN"
Exit Sub
End If
MsgBox EVNDos.Files.Count &" adet ocx uzantılı dosya kopyalandı " ,64 , "Evren GİZLEN"
Set EVNShell = CreateObject("WScript.Shell")
Set EVN2 = EVNDos.Files
For Each EVN3 In EVN2
EVNShell.Run ("%SystemRoot%\system32\regsvr32 " & EVN3)
Next
End Sub
Call OCX_Copy_Run

Tarkan VURAL
15-10-2008, 14:29
Klasörünüzde yüklenecek çok fazla ocx dosyası var ise yüklemelerin sonunda regsvr32 ' nin vereceği mesajlar can sıkabilir.
Buna da alternatif olarak şu yolu öneriyorum :

Kod içerisinde regsvr32 sonuna / s koyarsanız mesaj vermiyor. Ama yan tesiri var. Bu defa da ocx.lerin yüklenip yüklenmediğini anlayamayacaksınız. Hata verdiğinde bilginiz olmayacak. ;)

İyi çalışmalar.

Jezus
21-04-2009, 11:00
Merhaba Haluk bey,

Benim ogrenmek istedigim Vbs ile desktopta bir dosyaya veri kopyalama nasil yapilir araya kendi ismimizi yazmadan yani herkesin kullanabilecegini dusunerek, bunun bir benzerini Excel Vba icin Levent hocamdan ogrenmistim asagidaki ornek gibi

ActiveWorkbook.SaveAs "C:\Documents and Settings\" & Environ("username") & "\Desktop\test\

Username yerine ne yazmam gerekiyor bunu ogrenebilirmiyim sizden..?

modalı
21-04-2009, 22:13
Sayın Jezus,

Dim objNetwork
Set objNetwork = CreateObject("WScript.Network")
strUserName = objNetwork.UserName
MsgBox strUserName


İyi çalışmalar


Özel Arama