Macro de salvare foaie Excel într-un fișier, macro-uri pentru excel

Pentru a utiliza această macrocomandă pe orice coală dintr-un registru de lucru Excel, creați un buton și alocați-i o macrocomandă Save SaveListFile.

Când macro-ul pornește (apăsând butonul), va fi afișată o casetă de dialog pentru selectarea numelui fișierului care va fi salvat, după care foaia curentă va fi salvată sub numele specificat în folderul selectat.

PS: Cineva poate spune că pentru a salva o foaie de lucru într-un fișier din modelul obiect Excel, există o metodă SaveAs. Se aplică la obiectul din foaia de lucru.







Dar, destul de ciudat, executarea codului ActiveSheet.SaveAs "<имя файла>"duce ​​la salvarea întregii cărți, care este echivalentă cu utilizarea ActiveWorkbook.SaveAs"<имя файла>"

De ce această metodă de salvare funcționează atât de ilogic - eu personal nu înțeleg (aparent, Microsoft acolo este prea inteligent)

Asigurați-vă că macro-urile sunt, în general, activate în setările Excel.
Înainte de a rula un fișier cu macrocomenzi, trebuie să faceți următoarele:

> găsiți un fișier cu macrocomenzi în dosar
> faceți clic dreapta pe fișier - Proprietăți - Deblocare - OK
> și numai după aceea

Bună ziua, macro super. Doar spune-mi, vă rog, cum să-l obțineți în timp ce salvați pentru a lua datele de nume de fișier de la o anumită celulă, de exemplu. Foaia1, A1?

Sub SaveListVFile ()
La reluarea erorii următoare
"numele subfolderului la care este implicit să salvați fișierul
Const REPORTS_FOLDER = "Rapoarte"
'creați un dosar pentru fișier, dacă acesta nu este deja acolo
MkDir ThisWorkbook.Path „“ REPORTS_FOLDER
'selectați folderul de pornire
ChDrive stânga (ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path „“ REPORTS_FOLDER

'afișează caseta de dialog pentru a solicita salvarea fișierului
Numele fișierului = Application.GetSaveAsFilename ("report.xls", "Rapoartele Excel (* .xls),"
"Introduceți numele fișierului pentru raportul salvat", "Salvați")
"dacă utilizatorul a refuzat să selecteze numele fișierului - anula salvarea foii în fișier
Dacă VarType (Nume fișier) = vbBoolean Apoi ieșire Sub

"închideți fișierul salvat
'(ștergeți următoarea linie dacă nu este necesar să închideți fișierul creat)
ActiveWorkbook.Close False
Sfârșit Dacă
End Sub

Bună ziua! Confruntat cu o problemă și căutarea a dat afară site-ul dvs. Sper cu adevărat pentru ajutorul tău.

Există un tabel, macroul produce unele manipulări cu tabela și salvează fișierele într-un dosar. Este necesar ca în proces să fie creat un dosar cu data curentă (dd), iar dosarele care conțin nume în numele său (usrnm) sunt deja create. Macroul a funcționat până la adăugarea unui dosar în dosar.







Dim usrnm ca șir
usrnm = Intervalul ("N6") Valoare
Dim dd ca șir
dd = Format (Acum, "dd-mm-yyyy", vbUseSystemDayOfWeek)
Dim tdd ca șir
tdd = Format (Acum, "dd-mm-yyyy (hh'mm'ss)")
Dim x ca boolean
x = Len (Dir ("D: \ ________ lucrare" dd „“ usrnm, vbDirectory))
Dacă usrnm = "" Și Len ("D: \ ________ work \ error", vbDirectory)) = 0 Apoi
MkDir "D: \ ________ lucru \ eroare"
ActiveWorkbook.SaveAs ("D: \ ________ lucru \ eroare") "Error_" tdd, FileFormat: = 51
Sfârșit Dacă
ActiveSheet.Range ("$ A $ 5: $ AE $ 9999") Câmp AutoFilter: = 14, Criteria1: = usrnm
Dacă x = False Apoi
MkDir "D: \ ________ locul de muncă" dd „“ usrnm
ChDrive stânga ("D: \ ________ locul de muncă", 1): ChDir "D: \ ________ locul de muncă" dd „“ usrnm
ActiveWorkbook.SaveAs bsnm "_" usrnm "_" tdd, FileFormat: = 51
Sfârșit Dacă
Dacă x = adevărat atunci
ChDrive stânga ("D: \ ________ locul de muncă", 1): ChDir "D: \ ________ locul de muncă" dd „“ usrnm
ActiveWorkbook.SaveAs bsnm "_" usrnm "_" tdd, FileFormat: = 51
Sfârșit Dacă

Bună, Kairat.
Aceasta este o macrocomandă complet diferită (macro-ul descris în articol face ceva complet diferit)
Macro-ul trebuie, de asemenea, să fie reprocesat - multe fișiere într-o singură linie de cod cum ar fi Workbooks.Open "C: \ *. Xlsx" nu poate fi deschis
(nevoie de o buclă de fișiere)
Putem crea o macrocomanda sub comanda. Sau contactați forumurile Excel dacă doriți gratuit.

Bună ziua, trebuie să remakez această macrocomandă, astfel încât să copieze nu dintr-o carte, ci din mai multe și să le introducă într-o singură coală, una după alta. pe verticală, adică jos

Sub Get_Value_From_Book2 ()
Dim sShName ca șir, sAddress ca șir, vData
Aplicație.ScreenUpdating = False
Tabele de lucru.Open "C: \ *. Xlsx"
sAddress = "A1: L26"
vData = Sheets ("eNodeBOutdoor fin"). Interval (sAddress) .Value
ActiveWorkbook.Close False
Dacă IsArray (vData) Apoi
[A1] .Reziziunea (UBound (vData, 1), UBound (vData, 2)) Valoare = vData
altfel
[A1] = vData
Sfârșit Dacă
Aplicație.ScreenUpdating = Adevărat
End Sub

Sub Salvare ()
La reluarea erorii următoare
"numele subfolderului la care este implicit să salvați fișierul
Const REPORTS_FOLDER = "Executiv"
'creați un dosar pentru fișier, dacă acesta nu este deja acolo
MkDir ThisWorkbook.Path „“ REPORTS_FOLDER
'selectați folderul de pornire
ChDrive stânga (ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path „“ REPORTS_FOLDER

'afișează caseta de dialog pentru a solicita salvarea fișierului
Numele fișierului = Application.GetSaveAsFilename ([e4] ".xlsm", "Executiv (* .xlsm),". _
"Introduceți numele fișierului pentru raportul salvat", "Salvați")
"dacă utilizatorul a refuzat să selecteze numele fișierului - anula salvarea foii în fișier
Dacă VarType (Nume fișier) = vbBoolean Apoi ieșire Sub

Am incercat sa rescriu tipul xlsx pe xlsm si sa-l plasez ca o carte cu macros activat, dar in sfarsit, scrie care este postul de mai jos.
Aplic un macro pe care am încercat să îl modific. Nu sunt special în scrierea de macrocomenzi, așa că mă interesează singură, pentru a facilita munca.

Scrie: "Următoarele componente nu pot fi salvate într-o carte fără suport macro:
-Proiectul VB
Pentru a salva un fișier cu toate componentele, faceți clic pe butonul "Nu" și apoi în lista "Tip fișier", selectați tipul de fișier care acceptă macrocomenzile "

Dacă macrocomenzile sunt în modulul foaie - acestea vor fi copiate împreună cu foaia și vor funcționa.
Dacă macrourile sunt în modul - atunci, bineînțeles, dacă salvați foaia într-un fișier, aceste module nu vor fi transferate în noul fișier







Trimiteți-le prietenilor: