Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
rustyfishbones
Master II
Master II

Copy file to new Folder

Hi All,

I have a Qlikview App that tracks code files, I want to use a macro to copy the file I have selected to another folder.

2014-05-30_1214.png

At the moment I can delete the file, open the file or Open the Directory.

I want to copy the 1 file I have selected and place the copied file in another folder

I have copied files before from the script, but I need to have a button option to run a macro and copy the file based on the [Full Path] I have selected

Thanks

Alan

11 Replies
Not applicable

Not applicable

From Blogg.sigma.se

Dim fso

' create a global copy of the filesystem object

Set fso = CreateObject("Scripting.FileSystemObject")

TemplatePath = fso.GetAbsolutePathName(".") & "\qvw.template"

<a id="ctl00_FullRegion_PC_148_1_EditForm_MainBody_ctl00_resize" class="mceResize" onclick="return false;" href="javascript:;"></a>' WScript.Echo TemplatePath

' Call the RecurseFolders routine

' Takes one argument - in this case, the Path of the folder to be searched

RecurseFolders "."

' echo the job is completed

' WScript.Echo "Completed!"

Sub RecurseFolders(sPath)

With fso.GetFolder(sPath)

    if .SubFolders.Count > 0 Then

        For Each Folder In .SubFolders

            if Left(Folder.Name, 1) <> "." Then

                If InStr(1, folder.Path, "-prj") <> 0 Then

                    ' Copy and rename template to create empty qvd file next to prj folder

                    If fso.FileExists(TemplatePath) Then

                        fso.CopyFile TemplatePath, Replace(folder.Path ,"-prj",".qvw"), OverWriteExisting

                    End If

                End If

            ' Recurse to check for further subfolders

            RecurseFolders folder.Path

            End If

        Next

    End if

End With

End Sub

rustyfishbones
Master II
Master II
Author

Hi,

Thanks, but I don't think does what I need

Regards

Alan

rustyfishbones
Master II
Master II
Author

Can anyone help with this

nivellen11
Contributor III
Contributor III

I used  below script. You just need to replace string to dynamically generate path.

SUB CopyFileSub

rFile = "C:\source.txt"

Set fso = CreateObject("Scripting.FileSystemObject")

Set MyFile = fso.GetFile(rFile)

MyFile.Copy ("C:\copy.txt")

END SUB

and more advance version ( copy to user desktop) :

SUB CopyFileSub

rFile = "C:\source.txt"

Set fso = CreateObject("Scripting.FileSystemObject")

Set WshShell = CreateObject("WScript.Shell") 

strDesktop = WshShell.SpecialFolders("Desktop")

Set MyFile = fso.GetFile(rFile)

wFile = strDesktop & "\copy.txt"

MyFile.Copy (wFile)

END SUB

rustyfishbones
Master II
Master II
Author

Thanks Pawel,

I have tried this based on what you gave me

2014-06-03_0829.png

However I keep getting an error saying "file not found"

"Full Path" is the location and filename of the source I want to copy to my temp folder

nivellen11
Contributor III
Contributor III

I can advice following steps:

1. Make sure file is accessible from your computer.

2. Good diagnostic practice is to display "Full Path" in some textbox to check if they are properly generated.

3. Copy final path to windows explorer address bar to see if file will open.

I write below code to check file existence:

if fso.FileExists(rFile) then

Set MyFile = fso.GetFile(rFile)

wFile = strDesktop &"\"& fName

MyFile.Copy (wFile)

call msgbox("File has been saved to your desktop.",0,"DONE")

else

call msgbox("No file to Save",0,"Error")

end if

rustyfishbones
Master II
Master II
Author

Thanks Pawel,

I will have a look

Regards

Alan

nivellen11
Contributor III
Contributor III

Now i see that you use only folder Path to copy your file i think you need to provide path with filename as argument to MyFile.Copy function.

Use

MyFile.Copy("C:\temp\file.jpg")

instead of

MyFile.Copy("C:\temp\")

Regards

Pawel