Как сохранить весь проект VB6 в новую папку? Модули и все - PullRequest
3 голосов
/ 23 декабря 2009

Как сохранить весь проект VB6 в новую папку? Модули и все. Я нахожусь в положении, когда мне нужно работать с некоторыми старыми проектами VB6. Я хотел бы сохранить их в новую папку, но когда я сохраняю проект, все, что сохраняется, это файл VBP. Нет модулей, нет файлов FRM. Я хочу иметь возможность сохранять всю информацию в одну папку, не перемещая каждый файл BAS по одному. Это вообще возможно?

Дополнение: первые 2 ответа имеют смысл. Но моя проблема в том, что модули BAS, кажется, разбросаны повсюду. Заставить Windows Explorer сделать работу немного сложнее. Если бы я должен был, но искал более легкий путь.

Спасибо

Ответы [ 5 ]

4 голосов
/ 23 декабря 2009

Учитывая новое «дополнение» к вопросу:

  1. Переместите VBP и файлы в проводнике Windows в совершенно новый каталог.
  2. Откройте VBP в текстовом редакторе и измените любые абсолютные пути на относительные пути. Файлы VBP представляют собой простые текстовые файлы, и формат даже задокументирован в руководстве по VB6 .

Вот пример. Этот злой 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 
3 голосов
/ 23 декабря 2009

Если вы имеете в виду из Visual Studio, я не думаю, что вы можете, кроме как сделать Save As для каждого файла ...

Но более простой подход состоит в том, чтобы просто использовать Windows Explorer и скопировать всю структуру папок для решения в другую папку (или выполнить рекурсивное «Get» из вашего хранилища исходного кода в другое локальное место назначения), а затем открыть файл решения или проекта в новом расположении ... Указатели в файле проекта, которые сообщают Visual Studio, где находятся все отдельные исходные коды и другие файлы, обычно хранятся в виде относительных путей относительно папки, в которой находится файл проекта. ...

1 голос
/ 23 декабря 2009
  1. Отмена привязки из системы контроля источников, если это возможно / целесообразно.
  2. Регистрация в системе контроля версий как новое решение / проект
  3. Рекурсивное 'get' из вашего SCM в новый каталог.
  4. Это ваша новая копия.
1 голос
/ 23 декабря 2009

Прошло много времени с тех пор, как я использовал VB6, но у меня возникнет соблазн переместить их с помощью проводника Windows, а затем вручную отредактировать файл VBP, чтобы он указывал на новые местоположения. Если я правильно помню, относительные пути в VBP хороши, так что вам может даже не потребоваться вносить какие-либо изменения.

0 голосов
/ 25 мая 2015

Создание надстройки 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...