Hỏi về cách tạo file excel tự khởi động?

Liên hệ QC

abc12199

Thành viên hoạt động
Tham gia
15/8/07
Bài viết
113
Được thích
14
chào các bạn tôi có vấn đề này không biết trên 4room có ai post chưa.
Nếu đã có xin ai đó chỉ giùm link!
Tôi có 1 số file exl được lưu trong 1 đia CD tôi muốn khi chạy đĩa thì các file excel này tự động lưu vào 1 thư mục nào đó trong đĩa cứng của máy (Giống như các đĩa chương trình vậy đó)
có thể dùng phần mểm nào? hay notepad có được không?
Tôi đã từng tải chương trình tạo bộ cài đặt nhưng không biết dùng mong ai đó chỉ giáo giúp
Chân thành cảm ơn
Ah không biết sách VBA của thầy PHAN TỰ HƯỚNG có còn bán không nhỉ?
 
Chỉnh sửa lần cuối bởi điều hành viên:
Khi bỏ Cd vô thì nếu có Windows chạy file autorun nếu có trong CD. Không có cái file này thì bạn chỉ thấy cái pop up mở Win Xplorer. Tôi có thể cho 1 bạn code VBA xài trong XL để tự động chuyển cái file vào 1 thư mục nhất định trong dĩa cứng. Nhưng tôi cần biết thêm thông tin:

- Cái file XL nằm ở thư mục nào trong CD?
- Cái thư mục muốn copy qua dĩa cứng là gì?

Mến
 
file này có thể nằm ngay trên CD (không trong folder)
còn copy vào thư muc nào thì tùy bạn . giống như chương trình tính điểm THCS có trên 4room vậy đó. code đơn giản thôi bạn nhé
mình còn chưa hiểu lắm về các chương trình trên mày mong sự giúp đỡ của ban.
cam ơn
 
Thật ra làm CD tự chạy cũng ko khó lắm... Cách đơn giản nhất là bạn bắt chước các CD tự chạy mà bạn đang có... Mở nó lên, tìm file Autorun.inf.. mở ra xem file này nó viết cái gì trong đó rồi làm theo... Chỉ cần vài dòng lệnh đơn giản là bạn cũng tự tạo dc cái cho riêng mình rồi... chẳng hạn như:
Open = Copy.bat
Icon = fileIcon.ico
Với file copy.bat có thể tạo bằng trình soạn thảo văn bản đơn giản, nội dung file copy.bat này như sau:
Copy file của bạn đường dẩn chứa file
(VD: Copy baitap1.xls D:\Documents\BTExcel)
Lưu file Autorun.inf này cùng với file copy.bat và file xls rồi đánh ra CD, vậy là xong... Mỗi lần đưa CD vào thì Autorun.inf chạy trước tiên, nó sẽ kích hoạt Copy.bat chạy theo... cuối cùng file .bat này sẽ làm nhiệm vụ copy gì gì đó vào đúng thư mục mà bạn cần
Mến!
ANH TUẤN
 
anhtuan1066 đã viết:
Mỗi lần đưa CD vào thì Autorun.inf chạy trước tiên, nó sẽ kích hoạt Copy.bat chạy theo... cuối cùng file .bat này sẽ làm nhiệm vụ copy gì gì đó vào đúng thư mục mà bạn cần
Mến!
ANH TUẤN
Cảm ơn anh Tuấn song giả sử trong máy tôi muốn file này copy vào thư mục cò tên là : "abc12199" nhưng trong máy chưa có folder này thì có phải dùng thêm lệnh nào trong file autorun không ?
cam ơn
 
Việc tạo thêm 1 thư mục nào đó hoàn toàn có thể dc...
VD bạn muốn tạo 1 thư mục tên Abc12199 trong ổ đĩa D thì cú pháp như sau
MD D:\Abc12199
Vậy theo suy luận logic thì lệnh này phải nằm trước lệnh copy, đúng ko? Bạn thử đi
(Đây là những dòng lệnh có tử thời DOS nên có thể các bạn trẽ ko biết).. Tôi làm sẳn đây, bạn chạy thử biết liền... Nếu muốn xem nội dung câu lệnh thì click phải chuột trên file, chọn Edit nhé
ANH TUẤN
 
Lần chỉnh sửa cuối:
Chào mọi người,

Cách của bạn Tuấn thì rất hay. Nhưng bỏ cái câu:


vô cái batch file thì chạy lần đầu tiên thì OK nhưng lần sau bỏ cái CD vô thì cái lệnh này không cần thiết và sẽ báo lỗi. Tốt hơn tạo cái thư mục thủ công trước & chỉ cần có câu lệnh trong các copy.bat:

Copy *.xls D:\Abc12199\*.xls

Bạn cần lưu ý thêm là khi chạy cái lệnh này các file từ trong dĩa CD sẽ viết chồng lên các file trùng tên trong cái thư mục bởi vậy nên thận trọng.

Mến
 
Hơn 20 mấy năm rồi mới mò mẫm lại cái việc lập trình trong DOS batch. Tìm trong Google thì có cách test coi cái thư mục có hay chưa. Sau đây là code hoàn chỉnh cho cái copy.bat (nhớ save nó dạng text file):

@echo off
if exist D:\Abc12199 goto CopyFiles
Md D:\Abc12199
:CopyFiles
copy *.xls D:\ D:\Abc12199\
echo File copy completed

Còn thữ file có trong thư mục thì có lẽ là

Nhưng nhập tên file vô trong array rồi làm vòng lặp test trước khi cho lệnh copy thì chắc phải dùng VBA chứ lệnh trong DOS thì tôi không biết có thể làm được không.
 
Bạn Digita cứ yên tâm... dòng lệnh MD D:\Abc12199 sẽ ko có vấn đề gì nếu chạy lần 2 (nghĩa là trong D đã có thư mục Abc12199)... Chưa có thư mục thì nó tạo, có rồi thì nó cho qua, ko sao cả (tôi vừa thử xong)
Còn như câu lệnh Copy *.xls D:\Abc12199\*.xls tôi thấy cũng hợp lý nhưng sao tôi thí nghiệm thì lại ko dc nhỉ?
------------------------------------------------
Xin lỗi, tôi nhầm... Hoàn toàn copy dc... Cám ơn bạn!
 
Lần chỉnh sửa cuối:
Chuyện phát hiện file trùng tôi nghĩ cũng ko cần thiết lắm... Này nhé, ta làm 1 file xong, lưu vào ổ D, tiếp theo có thể ta chỉnh sửa lại file này ở đâu đó, rồi lại chạy CD cho nó copy vào D, như vậy nếu gặp file trùng thì xem như cập nhật mới...
Có điều tôi nghĩ nếu dùng CD thì e rằng ko ổn, vì làm sao copy dc file và cập nhật vào CD đây! Nếu dùng CD có khả năng ghi xóa thì lại tốn thêm đầu ghi ko đáng... Áp dụng món này vào USB thì hay hơn!
ANH TUẤN
 
Lần chỉnh sửa cuối:
Càng ngày tôi càng thấy giá trị địch thực của các 4room
cảm ơn các bạn!
Kiểu này riết phải đăng ký hộ khẩu trên mạng mất thôi !
 
Copyfiles

Kỹ thuật viết code (lập trình) trong file.bat khá phổ biến với HĐH MSDOS, bây giờ là MS WINDOWS nhưng MSDOS vãn rất cần thiết. Bạn có thể tìm trên mạng tài liệu nói về các lệnh DOS, các lệnh nói về bẫy lỗi (ON ERROR), đặt nhãn LABEL,...lâu quá rồi tôi không nhớ nữa.

Thay vì làm file.bat bạn làm file.exe. Để làm file.exe có thể dùng nhiều ngôn ngữ lập trình như VB, VC++, Delphi,...Nội dung trong file.exe này chứa các lệnh về tạo thư mục và copy file.*. Làm file exe bạn có thể thực hiện được nhiều nhu cầu hơn đặc thuận lợi khi biết VB.

Ví dụ về Copyfiles.exe làm bằng VB và Excel VBA.

Mã:
'
'tuanktcdcn@yahoo.com
'
Private Type SHFILEOPSTRUCT
        hwnd As Long
        wFunc As Long
        pFrom As String
        pTo As String
        fFlags As Integer
        fAnyOperationsAborted As Long
        hNameMappings As Long
        lpszProgressTitle As String '  only used if FOF_SIMPLEPROGRESS
End Type
Private Const FO_COPY = &H2
Private Const FO_DELETE = &H3
Private Const FO_MOVE = &H1
Private Const FO_RENAME = &H4

Private Const FOF_ALLOWUNDO = &H40
Private Const FOF_CONFIRMMOUSE = &H2
Private Const FOF_FILESONLY = &H80                  '  on *.*, do only files
Private Const FOF_MULTIDESTFILES = &H1
Private Const FOF_NOCONFIRMATION = &H10             '  Don't prompt the user.
Private Const FOF_NOCONFIRMMKDIR = &H200            '  don't confirm making any needed dirs
Private Const FOF_RENAMEONCOLLISION = &H8
Private Const FOF_SILENT = &H4                      '  don't create progress/report
Private Const FOF_SIMPLEPROGRESS = &H100            '  means don't show names of files
Private Const FOF_WANTMAPPINGHANDLE = &H20          '  Fill in SHFILEOPSTRUCT.hNameMappings

Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long

Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
Private Declare Function GetCurrentDirectory Lib "kernel32" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Const desFolder = "C:\CopyTuCD"
Const srcFolder = "*.*" [COLOR="SeaGreen"]'Current directory[/COLOR]

Sub Main()
Dim x&
Dim FS As SHFILEOPSTRUCT
    
    With FS
        .hwnd = GetDesktopWindow
        .wFunc = FO_COPY
        .pFrom = srcFolder & vbNullChar & vbNullChar
        .pTo = desFolder & vbNullChar & vbNullChar
        .fFlags = FOF_ALLOWUNDO  [COLOR="SeaGreen"]'Or FOF_SILENT[/COLOR]
        .lpszProgressTitle = "Copying..."
    End With
    
    On Error GoTo CopyFile:
    MkDir desFolder
CopyFile:
    x = SHFileOperation(FS)
    If x <> 0 Then
        MsgBox x, vbCritical, "Error"
    Else
        [COLOR="SeaGreen"]'MsgBox "Successfulness"[/COLOR]
    End If
End Sub
 

File đính kèm

  • CopyFiles.zip
    14.3 KB · Đọc: 122
Càng ngày tôi càng thấy giá trị địch thực của các 4room
cảm ơn các bạn!
Kiểu này riết phải đăng ký hộ khẩu trên mạng mất thôi !
Sự hài lòng của bạn chính là niềm động viên lớn cho tôi và tất cả mọi người trên diển đàn này đấy!
Xin cảm ơn!
ANH TUẤN
 
Các bác cho hỏi thêm 1 tý:
em có 1 chương trình trong CD sử dụng 1 font chữ không phổ biến lắm bây giờ em có 5 font chữ chữ trong folder có tên "Font"
em muốn khí đưo CD vào thì file Auturun tự động copy các font này vào Sytem của máy (nếu máy có rồi thì bỏ qua)
Nhờ các bác
Cám ơn!
 
Bạn giải nén file autorun.rar vào ổ đĩa cứng và sửa lại cho đúng với font chữ mà mình đưa vào Windows\Fonts rồi chép vào đĩa CD là được.
 

File đính kèm

  • autorun.rar
    196 bytes · Đọc: 74
Lần chỉnh sửa cuối:
Viết đúng thì như vầy: Copy \*.xls D:\Abc12199\*.xls Bạn có thể mở CMD (bằng cách vào Run, gõ cmd -> OK) ra. Nhập vào tại dấu nhắc lệnh: Copy \? Để biết cách viết lệnh đầy đủ. Hoặc là: Help
 
Lần chỉnh sửa cuối:
Mình có mấy file excel nằm trong thẻ nhớ. Bây giờ mình muốn mỗi lần cắm thẻ nhớ vào là những file excel đó sẽ tự động copy vào thư mục D:\Excel. Các bạn chỉ giúp mình.
 
Web KT
Back
Top Bottom