Avatar billede dkkarpen Nybegynder
28. november 2004 - 17:49 Der er 5 kommentarer og
1 løsning

VS.Net macro

Halløj

Jeg prøver på at lave en makro der kan kopiere en fil fra et "udviklingsprojekt" og sætte den ind samme sted i et "produktionsprojekt". Men jeg mangler en måde at vælge den valgte fil og dens placering i solutions explorer. Hvordan skal det gøre? Her er koden.

    Sub Copy()
        DTE.ActiveWindow.Object.GetItem("Solution\http://udv.domain.dk/\minfil.asp").Select(vsUISelectionType.vsUISelectionTypeSelect)
        DTE.ExecuteCommand("Edit.Copy")
        DTE.ActiveWindow.Object.GetItem("Solution\http://www.domain.dk/").Select(vsUISelectionType.vsUISelectionTypeSelect)
        DTE.ExecuteCommand("Edit.Paste")
    End Sub
Avatar billede dkkarpen Nybegynder
28. november 2004 - 17:53 #1
I stedet for "minfil.asp" skal der altså sættes den selectede fil fra solution explorer ind. Dens mappe skal også sættes ind der hvor der pastes.
Avatar billede dkkarpen Nybegynder
28. november 2004 - 19:33 #2
Filnavnet kan bestemmes således

Dim SelContain As SelectionContainer
Dim ContainerItem As SelectedItem
SelContain = DTE.SelectedItems.SelectionContainer
ContainerItem = DTE.SelectedItems.Item(1)
filnavn = ContainerItem.Name
Avatar billede dkkarpen Nybegynder
28. november 2004 - 21:04 #3
Jeg har nu fået bikset en funktion sammen der kan udskrive de valgte filer. Men jeg aner ikke hvordan jeg får dem kopieret.

    Sub SelectedItemsExample()
        Dim SelItems As SelectedItems
        Dim SelItemObj As SelectedItem
        Dim SelContain As SelectionContainer
        Dim SelItem As SelectedItem
        Dim NameStr As String

        SelItems = DTE.SelectedItems

        SelItemObj = SelItems.Item(1)
        For Each SelItem In SelItemObj.Collection
            NameStr = NameStr & SelItem.ProjectItem.ContainingProject.Name & SelItem.Name
        Next
        MsgBox("Du har markeret: " & NameStr)
    End Sub
Avatar billede dkkarpen Nybegynder
28. november 2004 - 23:36 #4
Sub SelectedItemsExample()
        Dim SelItems As SelectedItems
        Dim SelItemObj As SelectedItem
        Dim SelContain As SelectionContainer
        Dim SelItem As SelectedItem
        Dim NameStr As String

        SelItems = DTE.SelectedItems

        SelItemObj = SelItems.Item(1)
        For Each SelItem In SelItemObj.Collection

        SelItem.DTE.ExecuteCommand("Edit.Copy")

        Next
    End Sub
Avatar billede dkkarpen Nybegynder
29. november 2004 - 09:42 #5
Så langt så godt. Jeg kan kopiere og sætte ind. Jeg kan bare ikke finde ud af at bestemme mappen hvorfra filen er kopieret og hvortil den skal sættes ind.

    Sub SelectedItemsExample()
        Dim SelItems As SelectedItems
        Dim SelItemObj As SelectedItem
        Dim SelContain As SelectionContainer
        Dim SelItem As SelectedItem
        Dim NameStr As String

        SelItems = DTE.SelectedItems

        SelItemObj = SelItems.Item(1)
        For Each SelItem In SelItemObj.Collection
            NameStr = NameStr & SelItem.ProjectItem.ContainingProject.Name & SelItem.Name
            SelItem.DTE.ExecuteCommand("Edit.Copy")

            DTE.ActiveWindow.Object.GetItem("Solution\http://www.domain.dk/\").Select(vsUISelectionType.vsUISelectionTypeSelect)
            DTE.ExecuteCommand("Edit.Paste")

        Next

        MsgBox("Du har kopieret: " & NameStr)
    End Sub
Avatar billede dkkarpen Nybegynder
29. november 2004 - 11:22 #6
Så fandt jeg selv ud af det.

    Sub Kopier()
        Dim SelItems As SelectedItems
        Dim SelItemObj As SelectedItem
        Dim SelContain As SelectionContainer
        Dim SelItem As SelectedItem
        Dim NameStr As String
        Dim folder As String
        Dim fil As String
        Dim FilLgn As Integer
        Dim pos As Integer
        Dim lng As Integer

        SelItems = DTE.SelectedItems

        SelItemObj = SelItems.Item(1)
        For Each SelItem In SelItemObj.Collection
            FilLgn = Len(SelItem.Name)

            pos = InStr(SelItem.ProjectItem.FileNames(1), "udv.robinhus.dk") + 16
            lng = Len(SelItem.ProjectItem.FileNames(1))
            folder = Mid(SelItem.ProjectItem.FileNames(1), pos, lng - FilLgn - pos)
            fil = SelItem.Name

            NameStr = NameStr & SelItem.ProjectItem.ContainingProject.Name & "\" & folder & fil
            SelItem.DTE.ExecuteCommand("Edit.Copy")


            DTE.ActiveWindow.Object.GetItem("Solution\http://www.domain.dk/\" & folder).Select(vsUISelectionType.vsUISelectionTypeSelect)
            DTE.ExecuteCommand("Edit.Paste")

        Next

    End Sub
    End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester