2009-12-23 46 views
3

如何將整個VB6項目保存到新文件夾?模塊和所有。我處於一個需要處理一些舊的VB6項目的職位。我想將它們保存到一個新的文件夾中,但是當我保存該項目時,所有保存的都是vbp文件。沒有模塊,沒有frm文件。我希望能夠將所有信息保存到一個文件夾中,而無需每次移動一個BAS文件。這甚至有可能嗎?如何將整個VB6項目保存到新文件夾?模塊和所有

增加:前2個回覆很有意義。但我的問題是,BAS模塊似乎分散在各地。使Windows資源管理器完成這項工作有點棘手。如果我必須,我會但會尋找一個更簡單的方法。

感謝

回答

3

如果您在Visual Studio中的意思是,我不認爲你可以通過做Save As爲每個文件除外...

但簡單的方法是隻使用Windows資源管理器和複製將解決方案的整個文件夾結構放入另一個文件夾(或者從源代碼存儲庫遞歸「Get」到另一個本地目標),然後在新位置打開解決方案或項目文件。項目文件告訴Visual Studio其中各個源代碼和其他文件所在的位置通常都存儲爲相對路徑,相對於項目文件所在的文件夾在...

+0

所有好的答案,但這是我用過的技術。謝謝大家 – JimDel 2009-12-23 20:31:54

+0

一面注意:如果您有註冊引用或組件的相對/絕對路徑,可以從路徑名中刪除目錄。在我看來,沒有必要 – 2011-11-01 13:36:02

1

自從我使用VB6以來已經有一段時間了,但我很想用Windows資源管理器移動它們,然後手動編輯VBP文件以指向新的位置。如果我沒有記錯,VBP中的相對路徑很好,所以你甚至可能不需要管理任何改變。

1
  1. 從源代碼控制中解除綁定,如果能夠/適當的話。
  2. 作爲全新解決方案/項目簽入源代碼管理
  3. 遞歸從您的SCM中「獲取」到新目錄中。
  4. 有你的新副本。
4

鑑於新的「加法」的問題:

  1. 移動船民和在Windows Explorer中一個全新的目錄中的文件。
  2. 在文本編輯器中打開VBP並將任何絕對路徑更改爲相對路徑。 VBP文件是簡單的文本文件,格式爲documented in the VB6 manual

下面是一個例子。下面這個邪惡VBP有很多絕對路徑

Type=Exe 
Form=c:\who\knows\where\B_Form.frm 
Module=CModule; z:\magic\mapped\network\drive\heehee\C_Module.bas 
Class=DClass; x:\personal\usb\stick\D_Class.cls 

這將改變這種良性VBP,它引用文件的本地副本。您可以爲子目錄使用相對路徑。

Type=Exe 
Form=B_Form.frm 
Module=CModule; C_Module.bas 
Class=DClass; subdirectory\D_Class.cls 
0

創建一個VB6加載項。您可以從下載:http://pan.baidu.com/s/1CXO3k 或者您可以使用下面的代碼來創建自己的。

Option Explicit 

Public VBInstance As VBIDE.VBE 
Public Connect As Connect 

Private Sub CancelButton_Click() 
Connect.Hide 
End Sub 

Private Sub OKButton_Click() 
On Error Resume Next 
Dim strProject As String 
Dim strPath As String 
Dim strPath2 As String 
Dim strFile As String 
Dim strPrjFile As String 
Dim rst As VbMsgBoxResult 
Dim m, n As Long 
Dim col2 As Collection, col As Collection 
Dim vbCom As VBComponent 
Dim fso As FileSystemObject 
Dim ts As TextStream 
Dim f1 As String, f2 As String 

strProject = Me.VBInstance.ActiveVBProject.FileName 
strPath = ParseFileName(strProject, strPrjFile) 

strPath2 = setFolder 

If strPath = "" Or strPath = strPath2 Then 
    MsgBox "target folder is invalid or same as the project folder. Can't copy." 
    Exit Sub 
End If 
Set col2 = New Collection 
Set col = New Collection 
Set fso = New FileSystemObject 
Set ts = fso.CreateTextFile(strPath2 & "\wemeet.log", False) 
For m = Me.VBInstance.ActiveVBProject.VBComponents.Count To 1 Step -1 
    Set vbCom = Me.VBInstance.ActiveVBProject.VBComponents(m) 
    For n = 1 To vbCom.FileCount 
     f1 = vbCom.FileNames(n) 
     ParseFileName f1, strFile 
     f2 = strPath2 & "\" & strFile 
     fso.CopyFile f1, f2 
     col.Add f1 
     col2.Add f2 
     ts.WriteLine "" & Now() & " [Move]: " & f1 
     ts.WriteLine "" & Now() & " [To ]: " & f2 
     ts.WriteBlankLines 1 
    Next 
    Me.VBInstance.ActiveVBProject.VBComponents.Remove vbCom 
Next 
For m = 1 To col2.Count 
    Me.VBInstance.ActiveVBProject.VBComponents.AddFile col2.Item(m) 
    ts.WriteLine "" & Now() & " [Add]: " & col2.Item(m) 
    ts.WriteBlankLines 1 
Next 

Me.VBInstance.ActiveVBProject.SaveAs strPath2 & "\" & strPrjFile 
ts.WriteLine "" & Now() & " [SaveAs]: " & strPath2 & "\" & strPrjFile 
ts.WriteBlankLines 1 
ts.Close 
fso.OpenTextFile strPath2 & "\wemeet.log" 
Set fso = Nothing 
Set col = Nothing 
Set col2 = Nothing 
Set vbCom = Nothing 
Connect.Hide 
End Sub 

Private Function ParseFileName(ByVal sPath As String, ByRef sFile As String) As String 
Dim fso As New FileSystemObject 
If fso.FileExists(sPath) Then 
    ParseFileName = fso.GetParentFolderName(sPath) 
    sFile = fso.GetFileName(sPath) 
Else 
    ParseFileName = "" 
    sFile = "" 
End If 
Set fso = Nothing 
End Function 


Private Function setFolder() As String 
Dim objDlg As Object 
Dim objStartFolder As Object 
Set objDlg = CreateObject("Shell.Application") 

Set objStartFolder = objDlg.BrowseForFolder(&H0, "Select a folder", &H10 + &H1) 

If InStr(1, TypeName(objStartFolder), "Folder") > 0 Then 
    setFolder = objStartFolder.ParentFolder.ParseName(objStartFolder.Title).Path 
End If 
Set objDlg = Nothing 
End Function 
相關問題