如何将整个VB6项目保存到新文件夹?模块和所有
如何将整个VB6项目保存到新文件夹?模块和所有。我处于一个需要处理一些旧的VB6项目的职位。我想将它们保存到一个新的文件夹中,但是当我保存该项目时,所有保存的都是vbp文件。没有模块,没有frm文件。我希望能够将所有信息保存到一个文件夹中,而无需每次移动一个BAS文件。这甚至有可能吗?如何将整个VB6项目保存到新文件夹?模块和所有
增加:前2个回复很有意义。但我的问题是,BAS模块似乎分散在各地。使Windows资源管理器完成这项工作有点棘手。如果我必须,我会但会寻找一个更简单的方法。
感谢
如果您在Visual Studio中的意思是,我不认为你可以通过做Save As
为每个文件除外...
但简单的方法是只使用Windows资源管理器和复制将解决方案的整个文件夹结构放入另一个文件夹(或者从源代码存储库递归“Get”到另一个本地目标),然后在新位置打开解决方案或项目文件。项目文件告诉Visual Studio其中各个源代码和其他文件所在的位置通常都存储为相对路径,相对于项目文件所在的文件夹在...
自从我使用VB6以来已经有一段时间了,但我很想用Windows资源管理器移动它们,然后手动编辑VBP文件以指向新的位置。如果我没有记错,VBP中的相对路径很好,所以你甚至可能不需要管理任何改变。
- 从源代码控制中解除绑定,如果能够/适当的话。
- 作为全新解决方案/项目签入源代码管理
- 递归从您的SCM中“获取”到新目录中。
- 有你的新副本。
鉴于新的“加法”的问题:
- 移动船民和在Windows Explorer中一个全新的目录中的文件。
- 在文本编辑器中打开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
创建一个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
所有好的答案,但这是我用过的技术。谢谢大家 – JimDel 2009-12-23 20:31:54
一面注意:如果您有注册引用或组件的相对/绝对路径,可以从路径名中删除目录。在我看来,没有必要 – 2011-11-01 13:36:02