Ga naar inhoud

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.

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 False
End Sub

2. 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 Variant
my_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 Then
Workbooks.Open Filename:=my_FileName
End If
End Sub
**************** 2nd macro:
Sub TransferData()
If Workbooks.Count > 1 Then
Workbooks(1).Sheets("SheetA").Range("A1:C3").Value = Workbooks(2).Sheets("SheetA").Range("A1:C3").Value
Workbooks(1).Sheets("SheetB").Range("B3").Value = Workbooks(2).Sheets("SheetB").Range("B3").Value
Workbooks(1).Sheets("SheetC").Range("B1:C3").Value = Workbooks(2).Sheets("SheetC").Range("B1:C3").Value
Workbooks(2).Close savechanges:=False
Else
MsgBox "The data hasn’t been transferred.", vbExclamation, "Error"
End If
End Sub
************ 3rd macro:
Sub TheTransfer()
Call Open_Workbook_Dialog
Call TransferData
End Sub

👉 Zie ook: