Page 50 of 57 FirstFirst ... 404849505152 ... LastLast
Results 491 to 500 of 565

Thread: Tests Copying, Pasting, API Cliipboard issues. and Rough notes on Advanced API stuff

  1. #491
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    In support of this Thread https://excelfox.com/forum/showthrea...ed-on-Criteria
    https://excelfox.com/forum/showthread.php/2774-Summarize-Data-from-Dates-to-Months-based-on-Criteria


    _____ Workbook: Project Tracker.xlsx ( Using Excel 2007 32 bit )
    Row\Col B C D
    2 DATE CONTRACT NO. STATUS
    3 01-Jul-21 NOT STARTED
    4 01-Aug-21 IN PROGRESS
    5 02-Aug-21 COMPLETE
    6 09-Sep-21 ON HOLD
    7 21-Oct-21 NOT STARTED
    8 22-Oct-21 IN PROGRESS
    9 03-Nov-21 COMPLETE
    10 05-Nov-21 ON HOLD
    11 12-Dec-21 COMPLETE
    12 22-Dec-21 ON HOLD
    Worksheet: Case Tracker



    _____ Workbook: Project Tracker.xlsx ( Using Excel 2007 32 bit )
    Row\Col B C D E F
    2 DATE NOT STARTED IN PROGRESS ON HOLD COMPLETE
    3 Aug-21
    4 Sep-21
    5 Oct-21
    6 Nov-21
    7 Dec-21
    8 Jan-22
    9 Feb-22
    10 Mar-22
    11 Apr-22
    12 May-22
    13 Jun-22
    14 Jul-22
    15 Aug-22
    16 Sep-22
    17 Oct-22
    18 Nov-22
    19 Dec-22
    Worksheet: Summary





    results after running macro here https://excelfox.com/forum/showthread.php/2774-Summarize-Data-from-Dates-to-Months-based-on-Criteria?p=16306&viewfull=1#post16306 https://excelfox.com/forum/showthrea...ll=1#post16306
    _____ Workbook: Project Tracker.xls ( Using Excel 2007 32 bit )
    Row\Col B C D E F
    2 DATE NOT STARTED IN PROGRESS ON HOLD COMPLETE
    3 Aug-21 1 1
    4 Sep-21 1
    5 Oct-21 1 1
    6 Nov-21 1 1
    7 Dec-21 1 1
    8 Jan-22
    9 Feb-22
    10 Mar-22
    11 Apr-22
    12 May-22
    13 Jun-22
    14 Jul-22
    15 Aug-22
    16 Sep-22
    17 Oct-22
    18 Nov-22
    19 Dec-22
    Worksheet: Summary

  2. #492
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    In support of the forum post:

    NOT POSTED YET – DRAFT COPY






    Hi
    I am new to PowerShell script since a few weeks

    I hit my first major coding problem, I have got over some smaller ones.

    I have a GUI with lots of buttons on it. Each Button has some various things behind it. Some do some quite major things to the computer, such as registry changes, others download stuff. With one exception all is working as it should**.

    Problem Summary

    This coding does what it should. I checked it on a few computers with different Windows 10 versions. It checks for installed winget on the computer, and if not there attempts to download it. ( That download might not work for other reasons, but that is a separate issue which I am not concerned with here – as it happens I have it installed on all my computers )
    On all my current computers that have winget, the message comes up saying 'winget already installed', and the coding moves on. All is well
    Code:
     Write-Host "Checking winget..."  
    if (Test-Path ~\AppData\Local\Microsoft\WindowsApps\winget.exe){  # Check if winget is installed
        'Winget Already Installed'
    }  
    else{
        # Installing winget from the Microsoft Store
    	Write-Host "Winget not found, installing it now."
        $ResultText.text = "`r`n" +"`r`n" + "Installing Winget... Please Wait"
    	Start-Process "ms-appinstaller:?source=https://aka.ms/getwinget"   # If I paste that link in Browser URL I get this offered as if I hit the download button somewhere     Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
    	$nid = (Get-Process AppInstaller).Id
    	Wait-Process -Id $nid
    	Write-Host Winget Installed
        $ResultText.text = "`r`n" +"`r`n" + "Winget Installed - Ready for Next Task"
    }   #  })
    I put that same coding behind a button on a GUI. It seems to work initially, the GUI comes up,

    , and on clicking the button it appears initially to start OK, , but on the same computers, the coding always hangs at
    "checking winget…"
    Code:
     # 
    Add-Type -AssemblyName System.Windows.Forms
    # Create a new form
    $Form = New-Object system.Windows.Forms.Form
    # Define the size
    $Form.ClientSize         = '800, 600'
    
    # Range to put button in
    $Panel10 = New-Object system.Windows.Forms.Panel ; $Panel10.height = 50 ; $Panel10.width = 250 ; $Panel10.location = New-Object System.Drawing.Point(1, 25)
    
    # function to create sinple botton
    function Create-Button {param([string]$Text, [int]$FntSz, [int]$Width, [int]$Height, [int]$ClmX, [int]$RwY)#As Object   ' This function allows us to make a buttons in one line. (Those later single lines do not make the button appear)                                                                       
     $Btn = New-Object System.Windows.Forms.Button                                                                                           #                                                                                               
     $Btn.Text = $Text                                                                             #                                                           
     $Btn.Width = $Width   ;  $Btn.Height = $Height                                                                           #                                                                     
                                                                         #                                                                                    
     $Btn.Location = New-Object System.Drawing.Point($ClmX, $RwY)                                                        #                                                                              
     $Btn.Font = New-Object System.Drawing.Font('Arial', $FntSz)   #   ('Microsoft Sans Serif', 9)
                                                                           #                                                                                   
     return $Btn   }                                                      #                                                                              
    # Make button
    $GetWinGet = Create-Button -Text "winget" -FntSz 9 -Width 117 -Height 21 -ClmX 3 -RwY 1                                                                                                            
    
    
    
    $GetWinGet.Add_Click({                                                                                      
    Write-Host "Checking winget..."     # PROBLEM!!!!   This wont work in a button - it freezes here?                                                                       
    if (Test-Path ~\AppData\Local\Microsoft\WindowsApps\winget.exe){  # Check if winget is installed            
     'Winget Already Installed'                                                                                 
    }                                                                                                           
    else{                                                                                                        
     # Installing winget from the Microsoft Store
    Write-Host "Winget not found, installing it now."                                                            
     $ResultText.text = "`r`n" +"`r`n" + "Installing Winget... Please Wait"                                      
    Start-Process "ms-appinstaller:?source=https://aka.ms/getwinget"   # If I paste that link in Browser URL I get this offered as if I hit the download button somewhere     Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle          
    $nid = (Get-Process AppInstaller).Id                                                                         
    Wait-Process -Id $nid                                                                                        
    Write-Host Winget Installed                                                                                  
    $ResultText.text = "`r`n" +"`r`n" + "Winget Installed - Ready for Next Task"
    }     })                                                                                                     
    
    
    # Add Button to range
    $Panel10.controls.AddRange(@($GetWinGet)) 
    
    # Add ranbge to Form
    $Form.controls.AddRange(@($Panel10))
    
    # Display the form
    [void]$Form.ShowDialog()
    On this same GUI I can put lots of other buttons, all doing different things, and they always do what they should**

    What am I missing?


    Alan
    Attached Images Attached Images
    Attached Files Attached Files

  3. #493
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    Test

    HTML Code:
     # 
    Add-Type -AssemblyName System.Windows.Forms
    # Create a new form
    $Form = New-Object system.Windows.Forms.Form
    # Define the size, title and background color
    $Form.ClientSize         = '800, 600'
    
    # Range to put button in
    $Panel10 = New-Object system.Windows.Forms.Panel ; $Panel10.height = 50 ; $Panel10.width = 250 ; $Panel10.location = New-Object System.Drawing.Point(1, 25)
    
    # function to create sinple botton
    function Create-Button {param([string]$Text, [int]$FntSz, [int]$Width, [int]$Height, [int]$ClmX, [int]$RwY)#As Object   ' This function allows us to make a buttons in one line. (Those later single lines do not make the button appear)                                                                       
     $Btn = New-Object System.Windows.Forms.Button                                                                                           #                                                                                               
     $Btn.Text = $Text                                                                             #                                                           
     $Btn.Width = $Width   ;  $Btn.Height = $Height                                                                           #                                                                     
                                                                         #                                                                                    
     $Btn.Location = New-Object System.Drawing.Point($ClmX, $RwY)                                                        #                                                                              
     $Btn.Font = New-Object System.Drawing.Font('Arial', $FntSz)   #   ('Microsoft Sans Serif', 9)
                                                                           #                                                                                   
     return $Btn   }                                                      #                                                                              
    # Make button
    $GetWinGet = Create-Button -Text "winget" -FntSz 9 -Width 117 -Height 21 -ClmX 3 -RwY 1                                                                                                            #                                                                 $firefox.width                   = 212
    
    
    
    $GetWinGet.Add_Click({                                                                                      
    Write-Host "Checking winget..."     # PROBLEM!!!!   This wont work in a button - it freezes here?                                                                       
    if (Test-Path ~\AppData\Local\Microsoft\WindowsApps\winget.exe){  # Check if winget is installed            
     'Winget Already Installed'                                                                                 
    }                                                                                                           
    else{                                                                                                        
     # Installing winget from the Microsoft Store
    Write-Host "Winget not found, installing it now."                                                            
     $ResultText.text = "`r`n" +"`r`n" + "Installing Winget... Please Wait"                                      
    Start-Process "ms-appinstaller:?source=https://aka.ms/getwinget"   # If I paste that link in Browser URL I get this offered as if I hit the download button somewhere     Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle             #$vscode.width                    = 211
    $nid = (Get-Process AppInstaller).Id                                                                         
    Wait-Process -Id $nid                                                                                        
    Write-Host Winget Installed                                                                                  
    $ResultText.text = "`r`n" +"`r`n" + "Winget Installed - Ready for Next Task"
    }     })                                                                                                     
    
    
    # Add Button to range
    $Panel10.controls.AddRange(@($GetWinGet)) 
    
    # Add ranbge to Form
    $Form.controls.AddRange(@($Panel10))
    
    # Display the form
    [void]$Form.ShowDialog()

    PHP Code:
     
    Add-Type -AssemblyName System.Windows.Forms
    # Create a new form
    $Form = New-Object system.Windows.Forms.Form
    # Define the size, title and background color
    $Form.ClientSize         '800, 600'

    # Range to put button in
    $Panel10 = New-Object system.Windows.Forms.Panel $Panel10.height 50 $Panel10.width 250 $Panel10.location = New-Object System.Drawing.Point(125)

    # function to create sinple botton
    function Create-Button {param([string]$Text, [int]$FntSz, [int]$Width, [int]$Height, [int]$ClmX, [int]$RwY)#As Object   ' This function allows us to make a buttons in one line. (Those later single lines do not make the button appear)                                                                       
     
    $Btn = New-Object System.Windows.Forms.Button                                                                                           #                                                                                               
     
    $Btn.Text $Text                                                                             #                                                           
     
    $Btn.Width $Width   ;  $Btn.Height $Height                                                                           #                                                                     
                                                                         #                                                                                    
     
    $Btn.Location = New-Object System.Drawing.Point($ClmX$RwY)                                                        #                                                                              
     
    $Btn.Font = New-Object System.Drawing.Font('Arial'$FntSz)   #   ('Microsoft Sans Serif', 9)
                                                                           #                                                                                   
     
    return $Btn   }                                                      #                                                                              
    # Make button
    $GetWinGet Create-Button -Text "winget" -FntSz 9 -Width 117 -Height 21 -ClmX 3 -RwY 1                                                                                                            #                                                                 $firefox.width                   = 212



    $GetWinGet.Add_Click({                                                                                      
    Write-Host "Checking winget..."     # PROBLEM!!!!   This wont work in a button - it freezes here?                                                                       
    if (Test-Path ~\AppData\Local\Microsoft\WindowsApps\winget.exe){  # Check if winget is installed            
     
    'Winget Already Installed'                                                                                 
    }                                                                                                           
    else{                                                                                                        
     
    # Installing winget from the Microsoft Store
    Write-Host "Winget not found, installing it now."                                                            
     
    $ResultText.text "`r`n" +"`r`n" "Installing Winget... Please Wait"                                      
    Start-Process "ms-appinstaller:?source=https://aka.ms/getwinget"   # If I paste that link in Browser URL I get this offered as if I hit the download button somewhere     Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle             #$vscode.width                    = 211
    $nid = (Get-Process AppInstaller).Id                                                                         
    Wait
    -Process -Id $nid                                                                                        
    Write
    -Host Winget Installed                                                                                  
    $ResultText
    .text "`r`n" +"`r`n" "Winget Installed - Ready for Next Task"
    }     })                                                                                                     


    # Add Button to range
    $Panel10.controls.AddRange(@($GetWinGet)) 

    # Add ranbge to Form
    $Form.controls.AddRange(@($Panel10))

    # Display the form
    [void]$Form.ShowDialog() 

  4. #494
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    In support of this forum post
    https://excelfox.com/forum/showthrea...ll=1#post16373





    _____ Workbook: Work_file.xlsm ( Using Excel 2007 32 bit )
    Row\Col A B C D E F G H I
    1 S.No. Year Month Name Project Task Amount Submitted By
    2
    1
    2022
    January bbb Project2 Task2
    100
    Liviu Popescu
    3
    2
    2022
    February ccc Project5 Task1
    200
    Liviu Popescu
    4
    3
    2022
    March aaa Project3 Task2
    500
    Liviu Popescu
    5
    Worksheet: Database



    _____ Workbook: Work_file.xlsm ( Using Excel 2007 32 bit )
    Row\Col A B C D E F G
    1 Name Project Task
    01-22
    02-22
    03-22
    04-22
    2 aaa Project1 Task1
    3 aaa Project1 Task2
    4 aaa Project2 Task1
    5 aaa Project2 Task2
    6 aaa Project3 Task1
    7 aaa Project3 Task2
    8 aaa Project4 Task1
    9 aaa Project4 Task2
    10 aaa Project5 Task1
    11 aaa Project5 Task2
    12 bbb Project1 Task1
    13 bbb Project1 Task2
    14 bbb Project2 Task1
    15 bbb Project2 Task2
    16 bbb Project3 Task1
    17 bbb Project3 Task2
    18 bbb Project4 Task1
    19 bbb Project4 Task2
    20 bbb Project5 Task1
    21 bbb Project5 Task2
    22 ccc Project1 Task1
    23 ccc Project1 Task2
    24 ccc Project2 Task1
    25 ccc Project2 Task2
    26 ccc Project3 Task1
    27 ccc Project3 Task2
    28 ccc Project4 Task1
    29 ccc Project4 Task2
    30 ccc Project5 Task1
    31 ccc Project5 Task2
    32 ddd Project1 Task1
    33 ddd Project1 Task2
    Worksheet: Database1

  5. #495
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    In support of this forum post
    https://excelfox.com/forum/showthrea...ll=1#post16376




    Before, as we had before


    _____ Workbook: Work_file.xlsm ( Using Excel 2007 32 bit )
    Row\Col A B C D E F G H I
    1 S.No. Year Month Name Project Task Amount Submitted By
    2
    1
    2022
    January bbb Project2 Task2
    100
    Liviu Popescu
    3
    2
    2022
    February ccc Project5 Task1
    200
    Liviu Popescu
    4
    3
    2022
    March aaa Project3 Task2
    500
    Liviu Popescu
    5
    Worksheet: Database



    _____ Workbook: Work_file.xlsm ( Using Excel 2007 32 bit )
    Row\Col A B C D E F G
    1 Name Project Task
    01-22
    02-22
    03-22
    04-22
    2 aaa Project1 Task1
    3 aaa Project1 Task2
    4 aaa Project2 Task1
    5 aaa Project2 Task2
    6 aaa Project3 Task1
    7 aaa Project3 Task2
    8 aaa Project4 Task1
    9 aaa Project4 Task2
    10 aaa Project5 Task1
    11 aaa Project5 Task2
    12 bbb Project1 Task1
    13 bbb Project1 Task2
    14 bbb Project2 Task1
    15 bbb Project2 Task2
    16 bbb Project3 Task1
    17 bbb Project3 Task2
    18 bbb Project4 Task1
    19 bbb Project4 Task2
    20 bbb Project5 Task1
    21 bbb Project5 Task2
    22 ccc Project1 Task1
    23 ccc Project1 Task2
    24 ccc Project2 Task1
    25 ccc Project2 Task2
    26 ccc Project3 Task1
    27 ccc Project3 Task2
    28 ccc Project4 Task1
    29 ccc Project4 Task2
    30 ccc Project5 Task1
    31 ccc Project5 Task2
    32 ddd Project1 Task1
    33 ddd Project1 Task2
    Worksheet: Database1

  6. #496
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    In support of this forum post
    https://excelfox.com/forum/showthrea...ll=1#post16376







    After





    _____ Workbook: Work_file.xlsm ( Using Excel 2007 32 bit )
    Row\Col
    A
    B
    C
    D
    E
    F
    G
    1
    Name Project Task
    01-22
    02-22
    03-22
    04-22
    2
    aaa Project1 Task1
    3
    aaa Project1 Task2
    4
    aaa Project2 Task1
    5
    aaa Project2 Task2
    6
    aaa Project3 Task1
    7
    aaa Project3 Task2
    500
    8
    aaa Project4 Task1
    9
    aaa Project4 Task2
    10
    aaa Project5 Task1
    11
    aaa Project5 Task2
    12
    bbb Project1 Task1
    13
    bbb Project1 Task2
    14
    bbb Project2 Task1
    15
    bbb Project2 Task2
    100
    16
    bbb Project3 Task1
    17
    bbb Project3 Task2
    18
    bbb Project4 Task1
    19
    bbb Project4 Task2
    20
    bbb Project5 Task1
    21
    bbb Project5 Task2
    22
    ccc Project1 Task1
    23
    ccc Project1 Task2
    24
    ccc Project2 Task1
    25
    ccc Project2 Task2
    26
    ccc Project3 Task1
    27
    ccc Project3 Task2
    28
    ccc Project4 Task1
    29
    ccc Project4 Task2
    30
    ccc Project5 Task1
    200
    31
    ccc Project5 Task2
    32
    ddd Project1 Task1
    Worksheet: Database1

  7. #497
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    In support of this forum post
    https://excelfox.com/forum/showthrea...ll=1#post16376







    After





    _____ Workbook: Work_file.xlsm ( Using Excel 2007 32 bit )
    Row\Col
    A
    B
    C
    D
    E
    F
    G
    1
    Name Project Task
    01-22
    02-22
    03-22
    04-22
    2
    aaa Project1 Task1
    3
    aaa Project1 Task2
    4
    aaa Project2 Task1
    5
    aaa Project2 Task2
    6
    aaa Project3 Task1
    7
    aaa Project3 Task2
    500
    8
    aaa Project4 Task1
    9
    aaa Project4 Task2
    10
    aaa Project5 Task1
    11
    aaa Project5 Task2
    12
    bbb Project1 Task1
    13
    bbb Project1 Task2
    14
    bbb Project2 Task1
    15
    bbb Project2 Task2
    100
    16
    bbb Project3 Task1
    17
    bbb Project3 Task2
    18
    bbb Project4 Task1
    19
    bbb Project4 Task2
    20
    bbb Project5 Task1
    21
    bbb Project5 Task2
    22
    ccc Project1 Task1
    23
    ccc Project1 Task2
    24
    ccc Project2 Task1
    25
    ccc Project2 Task2
    26
    ccc Project3 Task1
    27
    ccc Project3 Task2
    28
    ccc Project4 Task1
    29
    ccc Project4 Task2
    30
    ccc Project5 Task1
    200
    31
    ccc Project5 Task2
    32
    ddd Project1 Task1
    Worksheet: Database1

  8. #498
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    In support of these forum posts
    https://excelfox.com/forum/showthread.php/2408-Windows-10-and-Office-Excel/page51#post12776
    https://excelfox.com/forum/showthrea...5356#post15356
    https://eileenslounge.com/viewtopic.php?f=18&t=37740
    https://eileenslounge.com/viewtopic.php?f=18&t=37712
    https://eileenslounge.com/viewtopic.php?f=18&t=37707


    Code:
    'Version : 5.1.19041.1320
    'InstanceId : e165cf30-9ddd-49ed-96c7-59cca98516ee
    'UI:  System.Management.Automation.Internal.Host.InternalHostUserInterface
    'CurrentCulture:  DE -DE
    'CurrentUICulture:  DE -DE
    'PrivateData:  Microsoft.PowerShell.Host.ISE.ISEOptions
    'DebuggerEnabled : True
    'IsRunspacePushed : False
    'Runspace:  System.Management.Automation.Runspaces.LocalRunspace
    'https://excelfox.com/forum/showthread.php/2408-Windows-10-and-Office-Excel/page51#post12776
    'https://excelfox.com/forum/showthread.php/2559-Notes-tests-text-files-manipulation-of-text-files-in-Excel-and-with-Excel-VBA?p=15356#post15356
    'https://eileenslounge.com/viewtopic.php?f=18&t=37740
    'https://eileenslounge.com/viewtopic.php?f=18&t=37712
    'https://eileenslounge.com/viewtopic.php?f=18&t=37707
    Sub Services()  '  https://excelfox.com/forum/showthread.php/2408-Windows-10-and-Office-Excel/page51#post12776   https://excelfox.com/forum/showthread.php/2559-Notes-tests-text-files-manipulation-of-text-files-in-Excel-and-with-Excel-VBA?p=15356#post15356
    ' PowerShell
    Dim PScmdLet As String, cmdLet As String
     'Let cmdLet = "Get-Service|Select-Object name,displayname,starttype|Format-Table -AutoSize|Out-File -FilePath 'C:\Users\acer\Desktop\test.txt' -Width 1000"
     Let cmdLet = "Get-Service|Select-Object name,displayname,starttype|Format-Table -AutoSize|Out-File -FilePath '" & ThisWorkbook.Path & Application.PathSeparator & "test.txt' -Width 1000"
     Let PScmdLet = "powershell -command " & cmdLet  '   https://www.devhut.net/vba-run-powershell-command/
     CreateObject("WScript.Shell").Exec (PScmdLet)
    ' Get the text file as a long single string
    Dim FileNum As Long: Let FileNum = FreeFile(1)                                    ' https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/freefile-function
    Dim PathAndFileName As String, TotalFile As String
     Let PathAndFileName = ThisWorkbook.Path & Application.PathSeparator & "test.txt"   '                                                               CHANGE TO SUIT                                                                                                         From vixer zyxw1234  : http://www.eileenslounge.com/viewtopic.php?f=30&t=34629     DF.txt https://app.box.com/s/gw941dh9v8sqhvzin3lo9rfc67fjsbic
    Open PathAndFileName For Binary As #FileNum 'Open Route to data. Binary is a fundamental type data input...
     Let TotalFile = Space(LOF(FileNum)) '....and wot receives it has to be a string of exactly the right length
    Get #FileNum, , TotalFile                                               'Debug.Print TotalFile
     Let TotalFile = Replace(TotalFile, Chr(0), "", 1, -1, vbBinaryCompare) ' There seems to be a lot of  Chr(0)s  in the string https://i.postimg.cc/t43HCQr9/Rather-a-lot-of-Chr-0-s.jpg
     'Let TotalFile = Replace(TotalFile, Chr(255) & Chr(254) & vbCr & vbLf, "", 1, 1, vbBinaryCompare) ' this would tsake the first bit of crap out, (alternatively we can just take out the first line when split later by
    Close #FileNum
    ' Call WtchaGot_Unic_NotMuchIfYaChoppedItOff(TotalFile)
    
    ' make a 1 D array of the text file lines
    Dim arrRws() As String: Let arrRws() = Split(TotalFile, vbCr & vbLf, -1, vbBinaryCompare)
    
    ' make array for output
    Dim arrOut() As String: ReDim arrOut(1 To UBound(arrRws()) - 2, 1 To 3) ' we are ignoring the first 3 lines. The  UBound  of the 1 dimensional array is already 1 less then the lines we need because a 1 dimensional array starts at 0
    Dim Cnt As Long
        For Cnt = 1 To UBound(arrRws()) - 2
            If arrRws(Cnt + 2) = "" Then
            ' This should occur at the last empty rows, so we could consider jumping out of the loop here
            Else
            ' time to split the line string
            Dim Pos1 As Long: Let Pos1 = InStr(1, arrRws(Cnt + 2), "  ", vbBinaryCompare)
            Dim Nme As String: Let Nme = Left(arrRws(Cnt + 2), Pos1 - 1)
            Dim Pos3 As Long: Let Pos3 = Len(arrRws(Cnt + 2)) - InStrRev(arrRws(Cnt + 2), "  ", -1, vbBinaryCompare)
            Dim StrtTyp As String: Let StrtTyp = Right(arrRws(Cnt + 2), Pos3)
            Dim DispNme As String: Let DispNme = Replace(arrRws(Cnt + 2), Nme, "", 1, -1, vbBinaryCompare)
             Let DispNme = Replace(DispNme, StrtTyp, "", 1, -1, vbBinaryCompare)
             Let DispNme = Trim(DispNme)
            ' fill the array for output
             Let arrOut(Cnt, 1) = Nme: arrOut(Cnt, 2) = DispNme: arrOut(Cnt, 3) = StrtTyp
            End If
    
        Next Cnt
    
    ' Chuck array into a spreadsheet
     Let ThisWorkbook.Worksheets("PowerShell").Range("A2").Resize(UBound(arrOut(), 1), 3).Value = arrOut()
     ThisWorkbook.Worksheets("PowerShell").Cells.Columns("A:C").EntireColumn.AutoFit
    
    End Sub

    Edit Some issues…
    I messed up with a few things.
    _ the display name could be long and go up to the startuptype in the text file, which messed up the manipulation of a line of data from the text file a bit. For now I fiddled that by adding some spaces before the words used for the startuptype. A better solution will probably wait until I fully understand the PowerShell code line
    _ There seems to be some strange effects with something somewhere working too slow, too fast or not giving accurate information about if a text file is present. For now that is fiddled with some Waits , Dirs and a Kill. That will do for now, but that need to be looked at again when I understand better wots going on

    The next code version is in the next post
    https://excelfox.com/forum/showthrea...ll=1#post16369

  9. #499
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    In support of these forum posts
    https://excelfox.com/forum/showthread.php/2408-Windows-10-and-Office-Excel/page51#post12776
    https://excelfox.com/forum/showthrea...5356#post15356
    https://eileenslounge.com/viewtopic.php?f=18&t=37740
    https://eileenslounge.com/viewtopic.php?f=18&t=37712
    https://eileenslounge.com/viewtopic.php?f=18&t=37707


    Code:
    'Version : 5.1.19041.1320
    'InstanceId : e165cf30-9ddd-49ed-96c7-59cca98516ee
    'UI:  System.Management.Automation.Internal.Host.InternalHostUserInterface
    'CurrentCulture:  DE -DE
    'CurrentUICulture:  DE -DE
    'PrivateData:  Microsoft.PowerShell.Host.ISE.ISEOptions
    'DebuggerEnabled : True
    'IsRunspacePushed : False
    'Runspace:  System.Management.Automation.Runspaces.LocalRunspace
    'https://excelfox.com/forum/showthread.php/2408-Windows-10-and-Office-Excel/page51#post12776
    'https://excelfox.com/forum/showthread.php/2559-Notes-tests-text-files-manipulation-of-text-files-in-Excel-and-with-Excel-VBA?p=15356#post15356
    'https://eileenslounge.com/viewtopic.php?f=18&t=37740
    'https://eileenslounge.com/viewtopic.php?f=18&t=37712
    'https://eileenslounge.com/viewtopic.php?f=18&t=37707
    Sub Services()  '  https://excelfox.com/forum/showthread.php/2408-Windows-10-and-Office-Excel/page51#post12776   https://excelfox.com/forum/showthread.php/2559-Notes-tests-text-files-manipulation-of-text-files-in-Excel-and-with-Excel-VBA?p=15356#post15356
    ' PowerShell
    Dim PScmdLet As String, cmdLet As String
     'Let cmdLet = "Get-Service|Select-Object name,displayname,starttype|Format-Table -AutoSize|Out-File -FilePath 'C:\Users\acer\Desktop\test.txt' -Width 1000"
     Let cmdLet = "Get-Service|Select-Object name,displayname,starttype|Format-Table -AutoSize|Out-File -FilePath '" & ThisWorkbook.Path & Application.PathSeparator & "test.txt' -Width 1000"
     Let PScmdLet = "powershell -command " & cmdLet  '   https://www.devhut.net/vba-run-powershell-command/
     CreateObject("WScript.Shell").Exec (PScmdLet)
    ' Get the text file as a long single string
    Dim FileNum As Long: Let FileNum = FreeFile(1)                                    ' https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/freefile-function
    Dim PathAndFileName As String, TotalFile As String
     Let PathAndFileName = ThisWorkbook.Path & Application.PathSeparator & "test.txt"   '                                                               CHANGE TO SUIT                                                                                                         From vixer zyxw1234  : http://www.eileenslounge.com/viewtopic.php?f=30&t=34629     DF.txt https://app.box.com/s/gw941dh9v8sqhvzin3lo9rfc67fjsbic
    Open PathAndFileName For Binary As #FileNum 'Open Route to data. Binary is a fundamental type data input...
     Let TotalFile = Space(LOF(FileNum)) '....and wot receives it has to be a string of exactly the right length
    Get #FileNum, , TotalFile                                               'Debug.Print TotalFile
     Let TotalFile = Replace(TotalFile, Chr(0), "", 1, -1, vbBinaryCompare) ' There seems to be a lot of  Chr(0)s  in the string https://i.postimg.cc/t43HCQr9/Rather-a-lot-of-Chr-0-s.jpg
     'Let TotalFile = Replace(TotalFile, Chr(255) & Chr(254) & vbCr & vbLf, "", 1, 1, vbBinaryCompare) ' this would tsake the first bit of crap out, (alternatively we can just take out the first line when split later by
    Close #FileNum
    ' Call WtchaGot_Unic_NotMuchIfYaChoppedItOff(TotalFile)
    
    ' make a 1 D array of the text file lines
    Dim arrRws() As String: Let arrRws() = Split(TotalFile, vbCr & vbLf, -1, vbBinaryCompare)
    
    ' make array for output
    Dim arrOut() As String: ReDim arrOut(1 To UBound(arrRws()) - 2, 1 To 3) ' we are ignoring the first 3 lines. The  UBound  of the 1 dimensional array is already 1 less then the lines we need because a 1 dimensional array starts at 0
    Dim Cnt As Long
        For Cnt = 1 To UBound(arrRws()) - 2
            If arrRws(Cnt + 2) = "" Then
            ' This should occur at the last empty rows, so we could consider jumping out of the loop here
            Else
            ' time to split the line string
            Dim Pos1 As Long: Let Pos1 = InStr(1, arrRws(Cnt + 2), "  ", vbBinaryCompare)
            Dim Nme As String: Let Nme = Left(arrRws(Cnt + 2), Pos1 - 1)
            Dim Pos3 As Long: Let Pos3 = Len(arrRws(Cnt + 2)) - InStrRev(arrRws(Cnt + 2), "  ", -1, vbBinaryCompare)
            Dim StrtTyp As String: Let StrtTyp = Right(arrRws(Cnt + 2), Pos3)
            Dim DispNme As String: Let DispNme = Replace(arrRws(Cnt + 2), Nme, "", 1, -1, vbBinaryCompare)
             Let DispNme = Replace(DispNme, StrtTyp, "", 1, -1, vbBinaryCompare)
             Let DispNme = Trim(DispNme)
            ' fill the array for output
             Let arrOut(Cnt, 1) = Nme: arrOut(Cnt, 2) = DispNme: arrOut(Cnt, 3) = StrtTyp
            End If
    
        Next Cnt
    
    ' Chuck array into a spreadsheet
     Let ThisWorkbook.Worksheets("PowerShell").Range("A2").Resize(UBound(arrOut(), 1), 3).Value = arrOut()
     ThisWorkbook.Worksheets("PowerShell").Cells.Columns("A:C").EntireColumn.AutoFit
    
    End Sub

    Edit Some issues…
    I messed up with a few things.
    _ the display name could be long and go up to the startuptype in the text file, which messed up the manipulation of a line of data from the text file a bit. For now I fiddled that by adding some spaces before the words used for the startuptype. A better solution will probably wait until I fully understand the PowerShell code line
    _ There seems to be some strange effects with something somewhere working too slow, too fast or not giving accurate information about if a text file is present. For now that is fiddled with some Waits , Dirs and a Kill. That will do for now, but that need to be looked at again when I understand better wots going on

    The next code version is in the next post
    https://excelfox.com/forum/showthrea...ll=1#post16369

  10. #500
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    Macro for this post
    https://excelfox.com/forum/showthrea...ge51#post12776



    Code:
    'In support of these forum posts
    'https://excelfox.com/forum/showthread.php/2408-Windows-10-and-Office-Excel/page51#post12776
    'https://excelfox.com/forum/showthrea...5356#post15356
    'https://eileenslounge.com/viewtopic.php?f=18&t=37740
    'https://eileenslounge.com/viewtopic.php?f=18&t=37712
    'https://eileenslounge.com/viewtopic.php?f=18&t=37707
    
    
    Sub Services2()  '  https://excelfox.com/forum/showthrea...ge51#post12776   https://excelfox.com/forum/showthrea...5356#post15356
    ' kill the text file before I make it, because the code might otherwise use a previous one, as it takes a second or so to overwrite the old or make a new one
        Do While Dir("" & ThisWorkbook.Path & Application.PathSeparator & "test.txt", vbNormal) <> ""
            If Dir("" & ThisWorkbook.Path & Application.PathSeparator & "test.txt", vbNormal) <> "" Then Kill PathName:="" & ThisWorkbook.Path & Application.PathSeparator & "test.txt"
        Application.Wait (Now + TimeValue("0:00:01"))
        Loop
     DoEvents: DoEvents
    '                                 Application.Wait (Now + TimeValue("0:00:01")) ' I am not sure why I had to do this. It should not be necerssary, without it the text file is empty  - maybe Dir says something is there before it is available to have???
    ' PowerShell
    Dim PScmdLet As String, cmdLet As String
     'Let cmdLet = "Get-Service|Select-Object name,displayname,starttype|Format-Table -AutoSize|Out-File -FilePath 'C:\Users\acer\Desktop\test.txt' -Width 1000"
     Let cmdLet = "Get-Service|Select-Object name,displayname,starttype|Format-Table -AutoSize|Out-File -FilePath '" & ThisWorkbook.Path & Application.PathSeparator & "test.txt' -Width 2000"
     Let PScmdLet = "powershell -command " & cmdLet  '   https://www.devhut.net/vba-run-powershell-command/
     CreateObject("WScript.Shell").Exec (PScmdLet)
    ' we need to wait a bit until the text file is made
        Do While Dir("" & ThisWorkbook.Path & Application.PathSeparator & "test.txt", vbNormal) = ""
        Application.Wait (Now + TimeValue("0:00:01"))
        Loop
     DoEvents: DoEvents ' I chucked this in, but did not really have any reason
     Application.Wait (Now + TimeValue("0:00:02")) ' I am not sure why I had to do this. It should not be necerssary, without it the text file is empty  - maybe Dir says something is there before it is available to have???  01 seemed OK  -  I made it 2
    ' Get the text file as a long single string
    Dim FileNum As Long: Let FileNum = FreeFile(1)                                    ' https://msdn.microsoft.com/en-us/vba...efile-function
    Dim PathAndFileName As String, TotalFile As String
     Let PathAndFileName = ThisWorkbook.Path & Application.PathSeparator & "test.txt"   '                                                               CHANGE TO SUIT                                                                                                         From vixer zyxw1234  : http://www.eileenslounge.com/viewtopic.php?f=30&t=34629     DF.txt https://app.box.com/s/gw941dh9v8sqhvzin3lo9rfc67fjsbic
    Open PathAndFileName For Binary As #FileNum 'Open Route to data. Binary is a fundamental type data input...
     Let TotalFile = Space(LOF(FileNum)) '....and wot receives it has to be a string of exactly the right length
    Get #FileNum, , TotalFile                                               'Debug.Print TotalFile
     Let TotalFile = Replace(TotalFile, Chr(0), "", 1, -1, vbBinaryCompare) ' There seems to be a lot of  Chr(0)s  in the string https://i.postimg.cc/t43HCQr9/Rather...of-Chr-0-s.jpg
     'Let TotalFile = Replace(TotalFile, Chr(255) & Chr(254) & vbCr & vbLf, "", 1, 1, vbBinaryCompare) ' this would tsake the first bit of crap out, (alternatively we can just take out the first line when split later by
    Close #FileNum
    ' Call WtchaGot_Unic_NotMuchIfYaChoppedItOff(TotalFile)
    
    ' make a 1 D array of the text file lines
    Dim arrRws() As String: Let arrRws() = Split(TotalFile, vbCr & vbLf, -1, vbBinaryCompare)
    
    ' make array for output
    Dim arrOut() As String: ReDim arrOut(1 To UBound(arrRws()) - 2, 1 To 3) ' we are ignoring the first 3 lines. The  UBound  of the 1 dimensional array is already 1 less then the lines we need because a 1 dimensional array starts at 0
    Dim Cnt As Long
        For Cnt = 1 To UBound(arrRws()) - 2
            If arrRws(Cnt + 2) = "" Then
            ' This should occur at the last empty rows, so we could consider jumping out of the loop here
            Else
            ' This is a bit of a temporary bodge as the  Display name  sometimes pushes up to the  startuptype  which screws up the string manipulation below
             Let arrRws(Cnt + 2) = Replace(arrRws(Cnt + 2), "Manual", "      Manual", 1, 1, vbBinaryCompare): Let arrRws(Cnt + 2) = Replace(arrRws(Cnt + 2), "Automatic", "      Auotomatic", 1, 1, vbBinaryCompare): Let arrRws(Cnt + 2) = Replace(arrRws(Cnt + 2), "Disabled", "      Disabled", 1, 1, vbBinaryCompare)
            ' time to split the line string
            Dim Pos1 As Long: Let Pos1 = InStr(1, arrRws(Cnt + 2), "  ", vbBinaryCompare)
            Dim Nme As String: Let Nme = Left(arrRws(Cnt + 2), Pos1 - 1)
            Dim Pos3 As Long: Let Pos3 = Len(arrRws(Cnt + 2)) - InStrRev(arrRws(Cnt + 2), "  ", -1, vbBinaryCompare)
            Dim StrtTyp As String: Let StrtTyp = Right(arrRws(Cnt + 2), Pos3)
            Dim DispNme As String: Let DispNme = Replace(arrRws(Cnt + 2), Nme, "", 1, 1, vbBinaryCompare)
             Let DispNme = Replace(DispNme, StrtTyp, "", 1, 1, vbBinaryCompare)
             Let DispNme = Trim(DispNme)
            ' fill the array for output
             Let arrOut(Cnt, 1) = Nme: arrOut(Cnt, 2) = DispNme: arrOut(Cnt, 3) = StrtTyp
            End If
    
        Next Cnt
    
    ' Chuck array into a spreadsheet
     Let ThisWorkbook.Worksheets("PowerShell").Range("A2").Resize(UBound(arrOut(), 1), 3).Value = arrOut()
     ThisWorkbook.Worksheets("PowerShell").Cells.Columns("A:C").EntireColumn.AutoFit
    
    End Sub
    

Similar Threads

  1. Some Date Notes and Tests
    By DocAElstein in forum Test Area
    Replies: 5
    Last Post: 03-26-2025, 02:56 AM
  2. Replies: 116
    Last Post: 02-23-2025, 12:13 AM
  3. Replies: 21
    Last Post: 12-15-2024, 07:13 PM
  4. Replies: 42
    Last Post: 05-29-2023, 01:19 PM
  5. Replies: 11
    Last Post: 10-13-2013, 10:53 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •