Gebruikersgegevens overdragen tussen updates met VBA
Wanneer u uw beveiligde werkmap bijwerkt en een nieuwe EXE verspreidt, kan het lastig zijn om ervoor te zorgen dat de gegevens van uw gebruikers correct worden overgedragen, vooral als u de Full Save-modus gebruikt. Deze modus maakt een volledige momentopname van de werkmap op het moment van opslaan. Wanneer een gebruiker zijn oude opslagbestand (.xlsc) opent met de nieuwe toepassing, ziet hij dan ook zijn oude gegevens in de oude werkmapstructuur en profiteert hij niet van uw nieuwste updates (zoals nieuwe functies of foutoplossingen in uw VBA-code).
Dit onderwerp legt uit hoe u een op VBA gebaseerd export-/importsysteem gebruikt om uw gebruikers te helpen hun gegevens van een oude versie van uw toepassing naar een nieuwe te migreren.
Codevoorbeeld
Section titled “Codevoorbeeld”Dit proces omvat twee hoofdstappen: het exporteren van gegevens uit de oude versie en het importeren ervan in de nieuwe.
1. Gebruikersgegevens naar een Excel-bestand exporteren
Section titled “1. Gebruikersgegevens naar een Excel-bestand exporteren”Het onderstaande macro genereert een normaal .xlsx-Excel-bestand met de gegevens van de gebruiker. U dient dit macro op te nemen in uw oude toepassing, gekoppeld aan een knop, zodat gebruikers hun gegevens kunnen exporteren voordat ze de upgrade uitvoeren.
Sub GenerateData() Dim savePath As String 'New workbook with 3 sheets Workbooks.Add xlWBATWorksheet ActiveSheet.Name = "SheetA" Sheets.Add(After:=Sheets(1)).Name = "SheetB" Sheets.Add(After:=Sheets(2)).Name = "SheetC" ActiveWorkbook.Sheets("SheetA").Range("A1:C3").Value = ThisWorkbook.Sheets("SheetA").Range("A1:C3").Value ActiveWorkbook.Sheets("SheetB").Range("B3").Value = ThisWorkbook.Sheets("SheetB").Range("B3").Value ActiveWorkbook.Sheets("SheetC").Range("B1:C3").Value = ThisWorkbook.Sheets("SheetC").Range("B1:C3").Value savePath = Application.GetSaveAsFilename("", "Excel workbook (*.xlsx),*.xlsx", 1, "Export User Data") If savePath <> "False" Then ActiveWorkbook.SaveAs savePath, FileFormat:=51 ActiveWorkbook.Close FalseEnd Sub2. De gegevens uploaden naar het nieuwe EXE-bestand.
Section titled “2. De gegevens uploaden naar het nieuwe EXE-bestand.”De gebruiker moet de nieuwe EXE openen en het onderstaande derde macro uitvoeren om de gegevens te uploaden (koppel het macro aan een knop). Zodra de gebruiker het macro uitvoert, wordt hij gevraagd het bestand te selecteren (eerste macro), en worden de gegevens overgedragen (tweede macro). Het derde macro voert beide macro’s uit, en dat is het macro dat aan de knop moet worden gekoppeld. Ook hier moet u de cellen en werkbladnamen in het tweede macro wijzigen, en u kunt bovendien de titel in het eerste macro wijzigen:
************* 1st macro:Sub Open_Workbook_Dialog()Dim my_FileName As Variantmy_FileName = Application.GetOpenFilename( _FileFilter:="Excel Files,.xl;.xm", _FilterIndex:=3, _Title:="Select the old version of your file, where you will pull the data from", _MultiSelect:=False)If my_FileName <> False ThenWorkbooks.Open Filename:=my_FileNameEnd IfEnd Sub
**************** 2nd macro:Sub TransferData()If Workbooks.Count > 1 ThenWorkbooks(1).Sheets("SheetA").Range("A1:C3").Value = Workbooks(2).Sheets("SheetA").Range("A1:C3").ValueWorkbooks(1).Sheets("SheetB").Range("B3").Value = Workbooks(2).Sheets("SheetB").Range("B3").ValueWorkbooks(1).Sheets("SheetC").Range("B1:C3").Value = Workbooks(2).Sheets("SheetC").Range("B1:C3").ValueWorkbooks(2).Close savechanges:=FalseElseMsgBox "The data hasn’t been transferred.", vbExclamation, "Error"End IfEnd Sub
************ 3rd macro:Sub TheTransfer()Call Open_Workbook_DialogCall TransferDataEnd Sub👉 Zie ook: