.xls to be saved as .csv with specified name
.xls to be saved as .csv with specified name
salutare din nou.
Am incercat sa fac o chestie in Visual Basic dar nu mi-a reusit.
Vreau sa salvez un fisier excell cu 3 sheeturi in 3 .csv-uri (cate unu pt fiecare sheet) sau daca se poate doar intr-un singur fisier .csv(desi ma cam indoiesc ca se poate), iar numele noului fisier .csv sa fie luat dintr-o anumita celula (sa zicem A1).
Am incercat azi noapte mai multe variante dar nici una nu a fost functionala, deci nu prea pot spune ca am facut ceva pana acum in privinta asta:(
Multumesc anticipat si RESPECT pt ceea ce faceti prin acest site! Sper sa luati amploare cat mai repede!
Am incercat sa fac o chestie in Visual Basic dar nu mi-a reusit.
Vreau sa salvez un fisier excell cu 3 sheeturi in 3 .csv-uri (cate unu pt fiecare sheet) sau daca se poate doar intr-un singur fisier .csv(desi ma cam indoiesc ca se poate), iar numele noului fisier .csv sa fie luat dintr-o anumita celula (sa zicem A1).
Am incercat azi noapte mai multe variante dar nici una nu a fost functionala, deci nu prea pot spune ca am facut ceva pana acum in privinta asta:(
Multumesc anticipat si RESPECT pt ceea ce faceti prin acest site! Sper sa luati amploare cat mai repede!
- Dr.Excel
- Site Admin
- Mesaje: 1997
- Membru din: Sâm Ian 24, 2009 1:45 pm
- Localitate: Bucharest
- Contact:
Re: .xls to be saved as .csv with specified name
macro te lasa sa-ti alegi un folder de pe disk (am folosit o functie API Windows ce face asta ), apoi salveaza in acel folder cate un fisier csv pentru fiecare foaie (cu numele foii respective , in acelasi folder ales initial)
Atentie totul se face in background, cartea xls curenta ramane deschisa in format xls
totul automat
sa-mi spui daca este ok
Atentie totul se face in background, cartea xls curenta ramane deschisa in format xls
totul automat
Cod: Selectaţi tot
Option Compare Text
Option Explicit
Private Const BIF_RETURNONLYFSDIRS As Long = &H1
Private Const BIF_DONTGOBELOWDOMAIN As Long = &H2
Private Const BIF_RETURNFSANCESTORS As Long = &H8
Private Const BIF_BROWSEFORCOMPUTER As Long = &H1000
Private Const BIF_BROWSEFORPRINTER As Long = &H2000
Private Const BIF_BROWSEINCLUDEFILES As Long = &H4000
Private Const MAX_PATH As Long = 260
Type BrowseInfo
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszINSTRUCTIONS As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Boolean
hNameMappings As Long
lpszProgressTitle As String
End Type
Declare Function SHGetPathFromIDListA Lib "shell32.dll" ( _
ByVal pidl As Long, _
ByVal pszBuffer As String) As Long
Declare Function SHBrowseForFolderA Lib "shell32.dll" ( _
lpBrowseInfo As BrowseInfo) As Long
Function BrowseFolder(Optional Caption As String = "") As String
Dim BrowseInfo As BrowseInfo
Dim FolderName As String
Dim ID As Long
Dim Res As Long
With BrowseInfo
.hOwner = 0
.pidlRoot = 0
.pszDisplayName = String$(MAX_PATH, vbNullChar)
.lpszINSTRUCTIONS = Caption
.ulFlags = BIF_RETURNONLYFSDIRS
.lpfn = 0
End With
FolderName = String$(MAX_PATH, vbNullChar)
ID = SHBrowseForFolderA(BrowseInfo)
If ID Then
Res = SHGetPathFromIDListA(ID, FolderName)
If Res Then
BrowseFolder = Left$(FolderName, InStr(FolderName, _
vbNullChar) - 1)
End If
End If
End Function
Sub SalveazaFiecareFoaieInFormatCSV()
Dim Path As String
Dim Prompt As String
Dim Title As String
Path = BrowseFolder("Selectati un folder")
If Path = "" Then
Prompt = "Nu ati selectat un folder."
Title = "Procedura anulata"
MsgBox Prompt, vbCritical, Title
Else
'Aici facem salvarea
Dim numeleVechi As String
numeleVechi = ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs Filename:=Path & "\" & ActiveWorkbook.Name & "v2.xls"
Application.ScreenUpdating = False
Workbooks.Open Filename:=Path & "\" & ActiveWorkbook.Name & "v2.xls"
Dim i As Integer
Dim nrFoi As Integer
nrFoi = ActiveWorkbook.Sheets.Count
For i = 1 To nrFoi
ActiveWorkbook.Sheets(i).Activate
ActiveWorkbook.SaveAs Filename:=Path & "\" & ActiveWorkbook.Sheets(i).Name, FileFormat:=xlCSV
Application.DisplayAlerts = False
ActiveWorkbook.Close
Workbooks.Open Filename:=Path & "\" & ActiveWorkbook.Name & "v2.xls"
Next
ActiveWorkbook.Close
Application.DisplayAlerts = True
Kill Path & "\" & numeleVechi & "v2.xls"
Application.ScreenUpdating = True
End If
End Sub
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
MCT, MCITP
MOS Master Instructor
IT Learning
Re: .xls to be saved as .csv with specified name
esti genial! Mersi mult.
Super tare faza ca poti sa-ti alegi folderul.
Doar ca as vrea sa se salveze fara ca userul sa stie si sa fie un folder anume, dar nu cred ca e o problema sa ma mai joc putin cu el si sa descopar ce si cum.
Mersi mult de tot pt ajutor.
Super tare faza ca poti sa-ti alegi folderul.
Doar ca as vrea sa se salveze fara ca userul sa stie si sa fie un folder anume, dar nu cred ca e o problema sa ma mai joc putin cu el si sa descopar ce si cum.
Mersi mult de tot pt ajutor.
Re: .xls to be saved as .csv with specified name
salut din nou,
imi cer scuze daca sunt o povara si ca vreau totul mura in gura , dar crezi ca ma poti ajuta cu ce am scris in postul anterior?
As vrea sa fie aceeasi destinatie pt toate, fara a avea optiunea sa alegi unde vrei sa fie salvat.
Am incercat sa modific codul tau, dar bine inteles sunt f multe chestii legate intre ele si am generat multe erori, fara a putea sa le rezolv pe toate.
imi cer scuze daca sunt o povara si ca vreau totul mura in gura , dar crezi ca ma poti ajuta cu ce am scris in postul anterior?
As vrea sa fie aceeasi destinatie pt toate, fara a avea optiunea sa alegi unde vrei sa fie salvat.
Am incercat sa modific codul tau, dar bine inteles sunt f multe chestii legate intre ele si am generat multe erori, fara a putea sa le rezolv pe toate.
- Dr.Excel
- Site Admin
- Mesaje: 1997
- Membru din: Sâm Ian 24, 2009 1:45 pm
- Localitate: Bucharest
- Contact:
Re: .xls to be saved as .csv with specified name
ok, spune-mi numai unde vrei sa fac salvarea?
MCT, MCITP
MOS Master Instructor
IT Learning
Re: .xls to be saved as .csv with specified name
nu conteaza, ca pot sa modific eu dup-aia destinatia.
sa zicem "C:\My Documents"
sa zicem "C:\My Documents"
- Dr.Excel
- Site Admin
- Mesaje: 1997
- Membru din: Sâm Ian 24, 2009 1:45 pm
- Localitate: Bucharest
- Contact:
Re: .xls to be saved as .csv with specified name
done! am salvat direct in root
Cod: Selectaţi tot
Sub SalveazaFiecareFoaieInFormatCSV()
Dim Path As String
Path = "C:"
'Aici facem salvarea
Dim numeleVechi As String
numeleVechi = ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs Filename:=Path & "\" & ActiveWorkbook.Name & "v2.xls"
Application.ScreenUpdating = False
Workbooks.Open Filename:=Path & "\" & ActiveWorkbook.Name & "v2.xls"
Dim i As Integer
Dim nrFoi As Integer
nrFoi = ActiveWorkbook.Sheets.Count
For i = 1 To nrFoi
ActiveWorkbook.Sheets(i).Activate
ActiveWorkbook.SaveAs Filename:=Path & "\" & ActiveWorkbook.Sheets(i).Name, FileFormat:=xlCSV
Application.DisplayAlerts = False
ActiveWorkbook.Close
Workbooks.Open Filename:=Path & "\" & ActiveWorkbook.Name & "v2.xls"
Next
ActiveWorkbook.Close
Application.DisplayAlerts = True
Kill Path & "\" & numeleVechi & "v2.xls"
Application.ScreenUpdating = True
End Sub
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
MCT, MCITP
MOS Master Instructor
IT Learning