excel you এমএস এক্সেলের জন্য সংস্করণ নিয়ন্ত্রণ করার সেরা উপায়



এক্সেলের কাজ (25)

আপনি কি এমএস এক্সেল (2003/2007) এর সাথে কি সংস্করণ নিয়ন্ত্রণ ব্যবস্থা ব্যবহার করেছেন? আপনি কি সুপারিশ করবেন এবং কেন? কি আপনার সীমাবদ্ধতা আপনার শীর্ষ রেট সংস্করণ নিয়ন্ত্রণ সিস্টেম সঙ্গে পাওয়া যায়?

দৃষ্টিকোণ এই রাখা, এখানে ব্যবহার ক্ষেত্রে একটি দম্পতি আছে:

  1. VBA মডিউল জন্য সংস্করণ নিয়ন্ত্রণ
  2. একাধিক ব্যক্তি একটি এক্সেল স্প্রেডশীটে কাজ করছে এবং তারা একই ওয়ার্কশীটে পরিবর্তন করতে পারে, যা তারা একত্রিত করতে এবং সংহত করতে চায়। এই ওয়ার্কশীটে সূত্র, তথ্য, চার্ট ইত্যাদি থাকতে পারে
  3. ব্যবহারকারী খুব প্রযুক্তিগত না এবং কম সংস্করণ নিয়ন্ত্রণ সিস্টেম ভাল ব্যবহার করা হয়
  4. স্পেস সীমাবদ্ধতা একটি বিবেচনা। আদর্শভাবে শুধুমাত্র ক্রমবর্ধমান পরিবর্তনগুলি সমগ্র এক্সেল স্প্রেডশীটের পরিবর্তে সংরক্ষিত হয়।

https://src-bin.com


Answer #1

@ ডেমোস্টেনয়েক্সের কাজ, @ টিমদান এবং @ জোন ক্রোয়েলের উপর কাজ করে মূল্যবান মন্তব্য! (+1 তাদের)

আমি ওয়ার্কবুক অবস্থান পাশে git \ dir মধ্যে মডিউল ফাইল সংরক্ষণ করুন। আপনার পছন্দসই যে পরিবর্তন।

এই ওয়ার্কবুক কোড পরিবর্তন ট্র্যাক করবে না। সুতরাং এটা তাদের উপর সিঙ্ক্রোনাইজ আপ আপনার উপর।

Sub SaveCodeModules()

'This code Exports all VBA modules
Dim i As Integer, name As String

With ThisWorkbook.VBProject
    For i = .VBComponents.count To 1 Step -1
        If .VBComponents(i).Type <> vbext_ct_Document Then
            If .VBComponents(i).CodeModule.CountOfLines > 0 Then
                name = .VBComponents(i).CodeModule.name
                .VBComponents(i).Export Application.ThisWorkbook.Path & _
                                            "\git\" & name & ".vba"
            End If
        End If
    Next i
End With

End Sub

Sub ImportCodeModules()
Dim i As Integer
Dim ModuleName As String

With ThisWorkbook.VBProject
    For i = .VBComponents.count To 1 Step -1

        ModuleName = .VBComponents(i).CodeModule.name

        If ModuleName <> "VersionControl" Then
            If .VBComponents(i).Type <> vbext_ct_Document Then
                .VBComponents.Remove .VBComponents(ModuleName)
                .VBComponents.Import Application.ThisWorkbook.Path & _
                                         "\git\" & ModuleName & ".vba"
            End If
        End If
    Next i
End With

End Sub

এবং তারপর ওয়ার্কবুক মডিউল:

Private Sub Workbook_Open()

    ImportCodeModules

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    SaveCodeModules

End Sub

Answer #2

@ ডেমোস্টেনেক্সের উত্তরটি এক ধাপ এগিয়ে নিয়ে গেলে, আপনি যদি আপনার Microsoft এক্সেল অবজেক্টস এবং ব্যবহারকারীর ফরমগুলিতে কোডটি ট্র্যাক রাখতে চান তবে আপনাকে কিছুটা চতুর পেতে হবে।

প্রথমে আমি আমার SaveCodeModules() ফাংশনটি বিভিন্ন ধরণের কোড এক্সপোর্ট করার পরিকল্পনা করার জন্য অ্যাকাউন্ট পরিবর্তন করেছি:

Sub SaveCodeModules(dir As String)

'This code Exports all VBA modules
Dim moduleName As String
Dim vbaType As Integer

With ThisWorkbook.VBProject
    For i = 1 To .VBComponents.count
        If .VBComponents(i).CodeModule.CountOfLines > 0 Then
            moduleName = .VBComponents(i).CodeModule.Name
            vbaType = .VBComponents(i).Type

            If vbaType = 1 Then
                .VBComponents(i).Export dir & moduleName & ".vba"
            ElseIf vbaType = 3 Then
                .VBComponents(i).Export dir & moduleName & ".frm"
            ElseIf vbaType = 100 Then
                .VBComponents(i).Export dir & moduleName & ".cls"
            End If

        End If
    Next i
End With

End Sub

UserForms এক্সপোর্ট এবং VBA কোড ঠিক মত আমদানি করা যেতে পারে। একমাত্র পার্থক্য হল কোনও ফর্ম এক্সপোর্ট করার সময় দুটি ফাইল তৈরি করা হবে (আপনি প্রতিটি ব্যবহারকারীর ফরমের জন্য একটি .frm এবং একটি .frx ফাইল পাবেন)। এর মধ্যে একটি সফটওয়্যার রয়েছে যা আপনি লিখেছেন এবং অন্যটি একটি বাইনারি ফাইল যা (আমি নিশ্চিত নই) ফর্মটির বিন্যাস সংজ্ঞায়িত করে।

মাইক্রোসফ্ট এক্সেল অবজেক্টস (MEOs) (অর্থাত ThisWorkbook , ThisWorkbook Sheet2 , এই ThisWorkbook ইত্যাদি) একটি .cls ফাইল হিসাবে রপ্তানি করা যেতে পারে। যাইহোক, যখন আপনি এই কোডটিকে আপনার কার্যপুস্তিকায় ফিরে পেতে চান, আপনি যদি এটি আমদানি করার চেষ্টা করেন তবে আপনি VBA মডিউলটি ব্যবহার করবেন, যদি সেই শীটটি কার্যপুস্ত্রে ইতিমধ্যে বিদ্যমান থাকে তবে আপনাকে একটি ত্রুটি দেখা দেবে।

এই সমস্যাটি সমাধান করার জন্য, আমি এক্সেলের মধ্যে .cls ফাইল আমদানি করার চেষ্টা না করার সিদ্ধান্ত নিয়েছিলাম, কিন্তু পরিবর্তে .cls ফাইলটিকে স্ট্রিং হিসাবে এক্সেলের মধ্যে পড়ার জন্য, তারপর এই স্ট্রিংটি খালি MEO তে আটকে দিন। এখানে আমার ImportCodeModules হয়:

Sub ImportCodeModules(dir As String)

Dim modList(0 To 0) As String
Dim vbaType As Integer

' delete all forms, modules, and code in MEOs
With ThisWorkbook.VBProject
    For Each comp In .VBComponents

        moduleName = comp.CodeModule.Name

        vbaType = .VBComponents(moduleName).Type

        If moduleName <> "DevTools" Then
            If vbaType = 1 Or _
                vbaType = 3 Then

                .VBComponents.Remove .VBComponents(moduleName)

            ElseIf vbaType = 100 Then

                ' we can't simply delete these objects, so instead we empty them
                .VBComponents(moduleName).CodeModule.DeleteLines 1, .VBComponents(moduleName).CodeModule.CountOfLines

            End If
        End If
    Next comp
End With

' make a list of files in the target directory
Set FSO = CreateObject("Scripting.FileSystemObject")
Set dirContents = FSO.getfolder(dir) ' figure out what is in the directory we're importing

' import modules, forms, and MEO code back into workbook
With ThisWorkbook.VBProject
    For Each moduleName In dirContents.Files

        ' I don't want to import the module this script is in
        If moduleName.Name <> "DevTools.vba" Then

            ' if the current code is a module or form
            If Right(moduleName.Name, 4) = ".vba" Or _
                Right(moduleName.Name, 4) = ".frm" Then

                ' just import it normally
                .VBComponents.Import dir & moduleName.Name

            ' if the current code is a microsoft excel object
            ElseIf Right(moduleName.Name, 4) = ".cls" Then
                Dim count As Integer
                Dim fullmoduleString As String
                Open moduleName.Path For Input As #1

                count = 0              ' count which line we're on
                fullmoduleString = ""  ' build the string we want to put into the MEO
                Do Until EOF(1)        ' loop through all the lines in the file

                    Line Input #1, moduleString  ' the current line is moduleString
                    If count > 8 Then            ' skip the junk at the top of the file

                        ' append the current line `to the string we'll insert into the MEO
                        fullmoduleString = fullmoduleString & moduleString & vbNewLine

                    End If
                    count = count + 1
                Loop

                ' insert the lines into the MEO
                .VBComponents(Replace(moduleName.Name, ".cls", "")).CodeModule.InsertLines .VBComponents(Replace(moduleName.Name, ".cls", "")).CodeModule.CountOfLines + 1, fullmoduleString

                Close #1

            End If
        End If

    Next moduleName
End With

End Sub

যদি আপনি উভয় এই ফাংশন থেকে dir ইনপুট দ্বারা বিভ্রান্ত হন, যে শুধু আপনার কোড সংগ্রহস্থল! সুতরাং, আপনি এই ফাংশন কল চাইলে:

SaveCodeModules "C:\...\YourDirectory\Project\source\"
ImportCodeModules "C:\...\YourDirectory\Project\source\"

Answer #3

আপনি DiffEngineX চেষ্টা করা উচিত। এটি প্রোগ্রাম্যাটিক্যাল এবং কমান্ড লাইন কমান্ড লাইন আর্গুমেন্টগুলি থেকেও বলা যেতে পারে। এটি কেবল এক্সেল স্প্রেডশিট কোষগুলির সাথে তুলনা করে না, তবে কার্যপুস্তিকাগুলির মধ্যে এমবেড করা ভিজ্যুয়াল বেসিক ম্যাক্রোও। এছাড়াও এক্সেল সংজ্ঞায়িত নাম এবং মন্তব্য তুলনা, যা অনেক বিনামূল্যের সরঞ্জাম মিস্। এটা থেকে ডাউনলোড করা যাবে

http://www.florencesoft.com/excel-differences-download.html

আমি নিশ্চিত যে আপনার সংস্করণ নিয়ন্ত্রণ সিস্টেমে একটি বিকল্প বা বাক্স রয়েছে যাতে আপনি নিজের মূল এবং সংশোধিত এক্সেল কার্যপুস্তিকাগুলির সাথে স্বয়ংক্রিয়ভাবে ডিফাইঞ্জিনএক্সকে কল করতে পারেন।


Answer #4

আপনি SharePoint তুলনায় নিয়মিত অফিসে নন প্রযুক্তিগত ব্যবহারকারীদের সঙ্গে একটি অফিস সেটিং খুঁজছেন হয় একটি কার্যকর বিকল্প। আপনি সংস্করণ নিয়ন্ত্রণ সক্ষম এবং চেকইন এবং চেকআউট সঙ্গে নথি ফোল্ডার সেটআপ করতে পারেন। নিয়মিত অফিস ব্যবহারকারীদের জন্য এটি freindlier তোলে।


Answer #5

আপনি আমাকে সংস্করণ নিয়ন্ত্রণ করতে চান এবং কেন:

  1. কি:

    • কোড (ভিবিএ)
    • স্প্রেডশীট (সূত্র)
    • স্প্রেডশীট (মান)
    • চার্ট
    • ...
  2. কেন:

    • হিসাবনিকাশের বিবরণ
    • সহযোগিতা
    • সংস্করণ তুলনা ("diffing")
    • মার্জ

অন্যরা এখানে পোস্ট করেছেন, বিদ্যমান সংস্করণ নিয়ন্ত্রণ ব্যবস্থাগুলির উপরে কয়েকটি সমাধান রয়েছে যেমন:

  • git
  • তত্পর
  • পরাভব
  • বাজার

আপনার একমাত্র উদ্বেগ যদি আপনার কার্যপুস্তিকাগুলিতে VBA কোড হয়, তবে প্রস্তাবের উপরে ডেমোস্টেনয়েক্স পদ্ধতিটি প্রস্তাব করুন অথবা VbaGit ( https://github.com/brucemcpherson/VbaGit ) খুব ভাল কাজ করে এবং বাস্তবায়নের জন্য তুলনামূলকভাবে সহজ। সুবিধাগুলি হল যে আপনি ভাল প্রমাণিত সংস্করণ নিয়ন্ত্রণ সিস্টেমে নির্ভর করতে পারেন এবং আপনার প্রয়োজন অনুসারে একটি চয়ন করতে পারেন ( https://help.github.com/articles/what-are-the-differences-between-svn-and-git/ এ দেখুন https://help.github.com/articles/what-are-the-differences-between-svn-and-git/ গিট এবং সাবভার্সনের মধ্যে সংক্ষিপ্ত সংখ্যার জন্য)।

যদি আপনি কোড সম্পর্কে চিন্তা না করেন তবে আপনার শীটগুলির ("হার্ডকোডেড" মান এবং সূত্র ফলাফলগুলি) ডেটা সম্পর্কেও, আপনি তার জন্য একই কৌশল ব্যবহার করতে পারেন: আপনার শিটগুলির বিষয়বস্তুগুলি কিছু পাঠ্য বিন্যাসে সীমাবদ্ধ করুন (রেঞ্জ.ভালু মাধ্যমে) এবং একটি বিদ্যমান সংস্করণ নিয়ন্ত্রণ সিস্টেম ব্যবহার করুন। এখানে এটি সম্পর্কে একটি খুব ভাল ব্লগ পোস্ট: https://wiki.ucl.ac.uk/display/~ucftpw2/2013/10/18/Using+git+for+version+control+of+spreadsheet+models+-+part+1+of+3 -+ https://wiki.ucl.ac.uk/display/~ucftpw2/2013/10/18/Using+git+for+version+control+of+spreadsheet+models+-+part+1+of+3

যাইহোক, স্প্রেডশীট তুলনা একটি অ-তুচ্ছ অ্যালগরিদম সমস্যা। মাইক্রোসফ্ট এর স্প্রেডশীট তুলনা করে কয়েকটি সরঞ্জাম রয়েছে ( https://support.office.com/en-us/article/Overview-of-Spreadsheet-Compare-13fafa61-62aa-451b-8674-242ce5f2c986 স্প্রেডশীট- Comparare 13fafa61-62aa-451b-8674-242ce5f2c986), এক্সেল্ডিফ ( http://exceldiff.arstdesign.com/ ) এবং ডিফাইঞ্জাইনএক্স ( https://www.florencesoft.com/compare-excel-workbooks-differences.html )। কিন্তু এটি Git মত একটি সংস্করণ নিয়ন্ত্রণ সিস্টেমের সাথে এই তুলনা সংহত করার আরেকটি চ্যালেঞ্জ।

অবশেষে, আপনি আপনার প্রয়োজন অনুসারে একটি কর্মপ্রবাহ উপর বসতে হবে। এক্সেল ওয়ার্কফ্লোের জন্য সহজ, মাপসই Git এর জন্য, https://www.xltrail.com/blog/git-workflow-for-excel এ নজর রাখুন।


Answer #6

আপনি ডেটা সম্পর্কে কথা বলছেন কিনা, বা স্প্রেডশীটের মধ্যে থাকা কোডটি নির্ভর করে। যদিও মাইক্রোসফ্টের ভিজ্যুয়াল সোর্সফাইফটির শক্তিশালী অপছন্দ ঘটেছে এবং সাধারণত এটির সুপারিশ করা হবে না, এটি অ্যাক্সেস এবং এক্সেল উভয়ের সাথে সহজেই সংহত করে এবং মডিউলগুলির উৎস নিয়ন্ত্রণ সরবরাহ করে।

[প্রকৃতপক্ষে অ্যাক্সেসের সাথে ইন্টিগ্রেশন, সংস্করণগুলি, প্রতিবেদন এবং মডিউলে পৃথক সংস্করণ যা সংস্করণযুক্ত করা যায়]

এমএসডিএন লিঙ্ক here


Answer #7

আপনি যা করতে পারেন তা হল আপনার ওয়ার্কবুকের নীচের স্নিপেটটি:

Sub SaveCodeModules()

'This code Exports all VBA modules
Dim i%, sName$

    With ThisWorkbook.VBProject
        For i% = 1 To .VBComponents.Count
            If .VBComponents(i%).CodeModule.CountOfLines > 0 Then
                sName$ = .VBComponents(i%).CodeModule.Name
                .VBComponents(i%).Export "C:\Code\" & sName$ & ".vba"
            End If
        Next i
    End With
End Sub

আমি এই স্নিপেট ইন্টারনেটে খুঁজে পেয়েছি।

পরে, আপনি সংস্করণ নিয়ন্ত্রণ বজায় রাখার জন্য সাবভার্সন ব্যবহার করতে পারেন। উদাহরণস্বরূপ VBA এর মধ্যে 'শেল' কমান্ড সহ সাবভার্সনের কমান্ড লাইন ইন্টারফেস ব্যবহার করে। যে এটা করতে হবে। আমি এমনকি নিজেকে এই কাজ করার চিন্তা করছি :)


Answer #8

আপনি হয়তো সংস্করণ নিয়ন্ত্রণের জন্য জিপ কন্টেইনার (.xlsx এবং .xslm) এ মাইক্রোসফ্ট এর এক্সেল এক্সএমএল ব্যবহার করার চেষ্টা করেছেন এবং VBAProject.bin (যা ভার্সন নিয়ন্ত্রণের জন্য নিরর্থক) তে সংরক্ষিত হয়েছে।

সমাধান সহজ।

  1. LibreOffice ক্যালক দিয়ে এক্সেল ফাইল খুলুন
  2. LibreOffice ক্যালক ইন
    1. ফাইল
    2. সংরক্ষণ করুন
    3. টাইপ হিসাবে সংরক্ষণ করুন: ওডিএফ স্প্রেডশীট (.ods)
  3. LibreOffice ক্যালক বন্ধ করুন
  4. .ods থেকে .zip এ নতুন ফাইলের ফাইল এক্সটেনশানটি পুনঃনামকরণ করুন
  5. একটি জিআইটি রক্ষণাবেক্ষণ এলাকায় স্প্রেডশীটের জন্য একটি ফোল্ডার তৈরি করুন
  6. জিআইপি ফোল্ডারে জিপ বের করুন
  7. জিআইটি প্রতিশ্রুতিবদ্ধ

যখন আপনি স্প্রেডশীটের পরবর্তী সংস্করণটির সাথে এটি পুনরাবৃত্তি করবেন তখন আপনি নিশ্চিত হবেন যে আপনি ফোল্ডার ফাইলগুলিকে জিপ কন্টেইনারের সাথে মিলিত করে নিশ্চিত করুন (এবং পিছনে যেকোনো মুছে যাওয়া ফাইলগুলি ছেড়ে দেবেন না)।


Answer #9

আমি Rubberduck নামক একটি দুর্দান্ত ওপেন সোর্স Rubberduck সুপারিশ করতে চাই, যার মধ্যে VBA কোডের সংস্করণ নিয়ন্ত্রণ রয়েছে। এটি চেষ্টা করুন!


Answer #10

আমি গিট ব্যবহার করি, এবং আজ আমি পাইথন -এই (git-xlsx-textconv) পোর্ট করেছিলাম, যেহেতু আমার প্রকল্প পাইথন কোডের উপর ভিত্তি করে, এবং এটি এক্সেল ফাইলগুলির সাথে ইন্টারঅ্যাক্ট করে। এটি অন্তত .xlsx ফাইলগুলির জন্য কাজ করে, তবে আমি মনে করি এটিও .xls এর জন্য কাজ করবে। Here's জিতুব লিঙ্ক। আমি দুটি সংস্করণ লিখেছি, প্রতিটি সারি তার নিজস্ব লাইনের সাথে এবং অন্যটি যেখানে প্রত্যেকটি সেল তার নিজস্ব লাইনে থাকে (পরবর্তীটি লেখা হয়েছিল কারণ গিট ডিফাফ্টটি ডিফল্টভাবে লম্বা লাইন মোড়ানো পছন্দ করে না, অন্তত উইন্ডোজগুলিতে)।

এটি আমার .gitconfig ফাইল (এটি আমার প্রকল্পের রেপোতে পৃথক স্ক্রিপ্টটি থাকতে দেয়):

[diff "xlsx"]
    binary = true
    textconv = python `git rev-parse --show-toplevel`/src/util/git-xlsx-textconv.py

যদি আপনি স্ক্রিপ্টটিকে অনেকগুলি ভিন্ন প্রতিপাদ্যের জন্য উপলব্ধ করতে চান, তবে এরকম কিছু ব্যবহার করুন:

[diff "xlsx"]
    binary = true
    textconv = python C:/Python27/Scripts/git-xlsx-textconv.py

আমার। gitattributes ফাইল:

*.xlsx diff=xlsx


Answer #12

আমি এই প্রশ্নের একটি খুব সহজ সমাধান খুঁজে পেয়েছি যা আমার চাহিদা মেটায়। আমি আমার সমস্ত ম্যাক্রোসের নীচে একটি লাইন যোগ করি যা প্রতিটি ম্যাক্রো কোডের সাথে *.txt ফাইলটি চালানোর সময় চালানো হয়। কোড:

ActiveWorkbook.VBProject.VBComponents("moduleName").Export"C:\Path\To\Spreadsheet\moduleName.txt"

( টম এর টিউটোরিয়ালগুলিতে পাওয়া যায়, যা কিছু সেটআপকেও জুড়ে দেয়, আপনাকে এই কাজটি পেতে হবে।)

যেহেতু আমি কোডে কাজ করছি যখন আমি সর্বদা ম্যাক্রো চালাচ্ছি, আমি নিশ্চিত যে গিট পরিবর্তনগুলি গ্রহণ করবে। শুধুমাত্র বিরক্তিকর অংশটি হল যে যদি আমাকে পূর্বের সংস্করণ চেকআউট করতে হয় তবে আমি *.txt থেকে স্প্রেডশীটে ম্যানুয়ালি অনুলিপি / পেস্ট করতে হবে।


Answer #13

আমি এমন একটি সরঞ্জাম সম্পর্কে সচেতন নই যা এই ভাল কাজ করে তবে আমি বাড়ির বিভিন্ন সমাধান দেখেছি। এর সাধারণ থ্রেডটি সংস্করণ নিয়ন্ত্রণের অধীনে বাইনারি তথ্যকে কমিয়ে আনতে এবং প্রচলিত scc সিস্টেমের শক্তিগুলি লিভারেজ করার জন্য পাঠ্য তথ্যকে সর্বাধিক করতে হয়। এটা করতে:

  • অন্য কোন অ্যাপ্লিকেশন মত কাজbook আচরণ। পৃথক যুক্তি, কনফিগার এবং তথ্য।
  • ওয়ার্কবুক থেকে পৃথক কোড।
  • প্রোগ্রাম ইউটিউব তৈরি করুন।
  • কাজের বই পুনর্নির্মাণ একটি নির্মাণ স্ক্রিপ্ট লিখুন।

Answer #14

আমি টার্মাইজ বিজেডির মাধ্যমে ম্যানুয়াল চেকইন / আউট দিয়ে বাজার ব্যবহার করে একটি স্প্রেডশীট সেট আপ করেছি। এই বিষয়টি আমাকে সংরক্ষিত অংশের সাথে সাহায্য করেছে, আমি এখানে আমার সমাধান পোস্ট করতে চেয়েছিলাম।

আমার জন্য সমাধান একটি স্প্রেডশীট তৈরি করা যা সংরক্ষণের সমস্ত মডিউল রপ্তানি করে এবং খোলা অবস্থায় মডিউলগুলি সরিয়ে এবং পুনরায় আমদানি করে। হ্যাঁ, বিদ্যমান স্প্রেডশীট রূপান্তর করার জন্য এটি সম্ভবত বিপজ্জনক হতে পারে।

এটি আমাকে এমাক্স (হ্যাঁ, ইম্যাক) এর মাধ্যমে মডিউলগুলিতে ম্যাক্রোলগুলি সম্পাদনা করতে বা এক্সেলের মধ্যে নেটিভভাবে সম্পাদনা করতে এবং বড় পরিবর্তনগুলির পরে আমার BZR সংগ্রহস্থলটি প্রেরণ করতে দেয়। কারণ সমস্ত মডিউল পাঠ্য ফাইলগুলি, BZR- এ স্ট্যান্ডার্ড ডিফ-স্টাইল কমান্ডগুলি আমার উত্সগুলির জন্য এক্সেল ফাইলটি ছাড়াও কাজ করে।

আমি আমার BZR সংগ্রহস্থল, X: \ Data \ MySheet এর জন্য একটি ডিরেক্টরি সেট আপ করেছি। রেপোতে আমার প্রতিটি মডিউলগুলির জন্য MySheet.xls এবং একটি .vba ফাইল রয়েছে (অর্থাত: মডিউল 1 ম্যাক্রোস)। আমার স্প্রেডশীটে আমি একটি মডিউল যুক্ত করেছি যা "সংস্করণ কন্ট্রোল" নামক এক্সপোর্ট / আমদানি চক্র থেকে মুক্ত। প্রতিটি মডিউল এক্সপোর্ট এবং পুনরায় আমদানি করা আবশ্যক "ম্যাক্রো" মধ্যে শেষ।

"সংস্করণ কন্ট্রোল" মডিউল এর সামগ্রী:

Sub SaveCodeModules()

'This code Exports all VBA modules
Dim i%, sName$

With ThisWorkbook.VBProject
    For i% = 1 To .VBComponents.Count
        If .VBComponents(i%).CodeModule.CountOfLines > 0 Then
            sName$ = .VBComponents(i%).CodeModule.Name
            .VBComponents(i%).Export "X:\Tools\MyExcelMacros\" & sName$ & ".vba"
        End If
    Next i
End With

End Sub

Sub ImportCodeModules()

With ThisWorkbook.VBProject
    For i% = 1 To .VBComponents.Count

        ModuleName = .VBComponents(i%).CodeModule.Name

        If ModuleName <> "VersionControl" Then
            If Right(ModuleName, 6) = "Macros" Then
                .VBComponents.Remove .VBComponents(ModuleName)
                .VBComponents.Import "X:\Data\MySheet\" & ModuleName & ".vba"
           End If
        End If
    Next i
End With

End Sub

পরবর্তীতে, আমাদের এই ম্যাক্রোগুলি চালানোর জন্য খোলা / সংরক্ষণের জন্য ইভেন্ট হুক স্থাপন করতে হবে। কোড ভিউয়ারে, "ThisWorkbook" এ ডান ক্লিক করুন এবং "দেখুন কোড" নির্বাচন করুন। আপনাকে "(সাধারণ)" দৃশ্য থেকে "ওয়ার্কবুক" ভিউতে পরিবর্তন করার জন্য কোড উইন্ডো শীর্ষে নির্বাচন বাক্সটি টেনে আনতে হতে পারে।

"ওয়ার্কবুক" দেখুন এর বিষয়বস্তু:

Private Sub Workbook_Open()

ImportCodeModules

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

SaveCodeModules

End Sub

আমি আগামী কয়েক সপ্তাহ ধরে এই কার্যপ্রবাহে বসতি স্থাপন করব, এবং যদি আমার কোন সমস্যা থাকে তবে আমি পোস্ট করব।

VBComponent কোড ভাগ করার জন্য ধন্যবাদ!


Answer #15

আমি ভিবিএ ব্যবহার করে একটি সংশোধন নিয়ন্ত্রিত স্প্রেডশীট লিখেছি। এটি প্রকৌশল প্রতিবেদনগুলির জন্য আরও বেশি কিছু রয়েছে যেখানে বিল উপাদান বা সময়সূচী নিয়ে আপনার কাজ করার একাধিক লোক রয়েছে এবং তারপরে আপনি কোন স্ন্যাপশট পুনর্বিবেচনা তৈরি করতে চান যা পূর্ববর্তী পুনর্বিবেচনার সাথে যোগ, বিতরণ এবং আপডেটগুলি দেখায়।

দ্রষ্টব্য: এটি একটি ম্যাক্রো সক্ষম ওয়ার্কবুক যা আপনাকে আমার সাইট থেকে ডাউনলোড করতে সাইন ইন করতে হবে (আপনি OpenID ব্যবহার করতে পারেন)

সমস্ত কোড আনলক করা হয়।

রেভ নিয়ন্ত্রণ স্প্রেডশীট


Answer #16

এখানে একটি GitHub প্রকল্প যা ঠিক পয়েন্ট 1. এবং 4. OP এর প্রশ্নের সমাধান করে: https://github.com/ColmBhandal/VbaMisc । এটি শুধুমাত্র VBA মডিউলের জন্য একটি VC সমাধান। এটি GitHub এ প্রদর্শিত প্রকল্প কাঠামোর প্রতিলিপি করে এবং কোনও মডিউলগুলিকে এক্সপোর্টআইমোর্ট মডিউলে সংজ্ঞায়িত হোয়াইটলিস্টে যোগ করার জন্য কোনও মডিউল যোগ করে সহজেই মঞ্জুর করা যেতে পারে। যে মডিউল VBA মডিউল একটি হোয়াইটলিস্ট এক্সপোর্ট এবং আমদানি নিয়ন্ত্রণ, সম্ভাব্য নিজেই সহ। কিভাবে ব্যবহার করবেন তার নির্দেশাবলীর জন্য GitHub রেপো দেখুন।


Answer #17

এটি আপনি কোন ইন্টিগ্রেশনটি চান তা নির্ভর করে, আমি সাবভারসন / টোটোয়েসএসভিএন ব্যবহার করেছি যা সহজ ব্যবহারের জন্য জরিমানা বলে মনে হয়। আমি কীওয়ার্ড যুক্ত করেছি কিন্তু ফাইল দুর্নীতির ঝুঁকি মনে হচ্ছে। কীওয়ার্ড প্রতিস্থাপিত স্থির দৈর্ঘ্য তৈরি করতে সাবভার্সনের একটি বিকল্প আছে এবং যতক্ষণ আমি বুঝতে পারি যে এটি স্থির দৈর্ঘ্যের এমনকি বিজোড় হলেও কাজ করবে। কোনও ক্ষেত্রে আপনি কোন কার্যকারিতার কার্যকারিতা পাবেন না, আমার মনে হয় বাণিজ্যিক পণ্যগুলি 'ভিন্ন' হবে। আমি এমন কিছু খুঁজে পেয়েছিলাম যা স্টাফকে সরল পাঠ্য রূপে রূপান্তরিত করে এবং এটি তুলনা করে, তবে এটি খুব সুন্দর ছিল না।


Answer #18

এটি বেশিরভাগ ভিসিএসের সাথে কাজ করতে হবে (আপনি যে SVN, CVS, ডার্কস, টিএফএস, ইত্যাদি চয়ন করতে পারেন তার অন্যান্য মানদণ্ডের উপর নির্ভর করে) তবে এটি আসলে সম্পূর্ণ ফাইল (এটি একটি বাইনারি ফর্ম্যাট) কারণ এটি "কী পরিবর্তন হয়েছে" উত্তর এত সহজ নয়।

আপনি যদি লোকেদের সম্পূর্ণ করেন তবে আপনি এখনও লগ বার্তাগুলিতে নির্ভর করতে পারেন তবে আপনি 2007 এর এক্সএমএল ভিত্তিক ফর্ম্যাটগুলি আরও কিছু দৃশ্যমানতা অর্জন করতেও চেষ্টা করতে পারেন (যদিও এটি XML এর টনগুলির মাধ্যমে আগাছা করা কঠিন, তবে AFAIK XML ফাইলটি ডিস্কে জিপ করা হয়েছে, সুতরাং পাঠ্য বিভাজন সঠিকভাবে কাজ করার জন্য এটি আনজিপ করার জন্য আপনাকে প্রাক-সম্মতি হুক প্রয়োজন হবে)।


Answer #19

এসভিএন বা সিভিএস মত মান সংস্করণ নিয়ন্ত্রণ সরঞ্জাম ব্যবহার করুন। সীমাবদ্ধতা উদ্দেশ্য কি উপর নির্ভর করবে। সংগ্রহস্থল আকারে একটি ছোট বৃদ্ধি ছাড়াও, আমি কোনো সমস্যা সম্মুখীন হয়নি


Answer #20

প্রকৃতপক্ষে ম্যাক্রো কোডগুলিতে ট্র্যাক এবং তুলনা করার জন্য কেবল কয়েকটি সমাধান সমাধান করা হয়েছে - এদের মধ্যে বেশিরভাগই ইতিমধ্যে এখানে নাম দেওয়া হয়েছে। আমি ওয়েব ব্রাউজিং করা হয়েছে এবং উল্লেখ করার এই নতুন সরঞ্জাম জুড়ে এসেছিলেন:

VBA ম্যাক্রো জন্য XLTools সংস্করণ নিয়ন্ত্রণ

  • এক্সেল শীট এবং ভিবিএ মডিউল জন্য সংস্করণ নিয়ন্ত্রণ
  • একটি সংস্করণ সম্পাদনা করার আগে পূর্বরূপ এবং diff পরিবর্তন
  • একই ফাইলের বিভিন্ন ব্যবহারকারীর সহযোগিতামূলক কাজের জন্য দুর্দান্ত (ট্র্যাক কারা / কখন / মন্তব্য পরিবর্তন করেছে)
  • সংস্করণ তুলনা এবং কোড লাইন দ্বারা লাইন পরিবর্তন হাইলাইট
  • প্রযুক্তিবিদদের পক্ষে নয় এমন ব্যবহারকারীদের জন্য উপযুক্ত, অথবা সেই বিষয়ে এক্সেল-বুদ্ধিমান
  • সংস্করণ ইতিহাসটি আপনার নিজের পিসিতে গিট-রিপোজিটরিতে সংরক্ষণ করা হয় - কোনও সংস্করণ সহজেই পুনরুদ্ধার করা যেতে পারে

পাশাপাশি VBA কোড সংস্করণ, পরিবর্তন কল্পনা করা হয়


Answer #21

বয়সের জন্য অনুসন্ধান এবং অনেকগুলি ভিন্ন সরঞ্জাম চেষ্টা করার পরে, আমি এখানে আমার VBA সংস্করণ নিয়ন্ত্রণ সমস্যাটির উত্তর খুঁজে পেয়েছি: https://.com/a/25984759/2780179

এটি একটি সহজ এক্সেল addin যার জন্য here কোড পাওয়া here

আমদানি করার পরে কোন সদৃশ মডিউল নেই। এটি আপনার কোডটি স্বয়ংক্রিয়ভাবে রপ্তানি করে, যত তাড়াতাড়ি আপনি আপনার কার্যপুস্তিকাটি সংরক্ষণ করুন, যেহেতু কোনো বিদ্যমান কর্মপরিবর্তন সংশোধন না করেই । এটি একটি ভিবিএ কোড ফর্ম্যাট সঙ্গে একসঙ্গে আসে।


Answer #22

মাইক্রোসফ্ট অফিস সমাধানগুলি স্বয়ংক্রিয়ভাবে চালানোর ক্ষেত্রে আমার কোম্পানি একটি উল্লেখযোগ্য পরিমাণ কাজ করে তাই আমি একটি ডেলিএল লিখেছি যা প্রতিটি সময় একটি টেমপ্লেট সংরক্ষিত হলে সমাধানটির উত্স রপ্তানি করবে। এটি উৎস নামে একটি ফোল্ডার তৈরি করে যেখানে ফোল্ডারটি একটি শিশু যেখানে টেমপ্লেট সংরক্ষিত হয় এবং উৎসের নীচে এটি একটি ফোল্ডার তৈরি করে যা একই নামের সাথে VBA প্রকল্প হিসাবে তৈরি করে। প্রকল্প ফোল্ডারে এটি মডিউল, ক্লাস এবং ব্যবহারকারীর ফর্মগুলির জন্য সমস্ত সোর্স কোড রপ্তানি করে। টেমপ্লেটগুলির বড় সংগ্রহের জন্য উৎস পরিচালনা করা সহজ করার জন্য এই ব্যবস্থাটি নির্বাচন করা হয়েছিল। স্থানীয় কনফিগারেশন ফাইল বা গ্লোবাল কনফিগারেশন ফাইল উপলব্ধ থাকলে DLL VBA প্রকল্প অ্যাক্সেস পেতে লক করা প্রকল্পগুলি আনলক করতে সক্ষম। এই সরঞ্জামটি ব্যবহার করে, ডেভেলপারগণ তাদের অন্তরে সামগ্রীতে টেমপ্লেটগুলিতে কাজ করতে এবং তাদের কাজ পরিচালনা করতে তাদের প্রিয় পুনর্বিবেচনা নিয়ন্ত্রণ সরঞ্জাম ব্যবহার করতে পারেন। আমরা প্রাথমিকভাবে আমাদের পরিবেশে গিট ব্যবহার করি এবং পুনর্বিবেচনা নিয়ন্ত্রণের অধীনে আমরা সম্পূর্ণ টেম্পলেট বাইনারি ফাইলগুলির পাশাপাশি VBA সংস্থানগুলিও রাখি।


Answer #23

ম্যাটলান্টের উত্তরের প্রতিক্রিয়ায় - শেয়ারপয়েন্টটি কেবলমাত্র সংস্করণ নিয়ন্ত্রণ হিসাবে কাজ করবে যদি ডকুমেন্ট লাইব্রেরিতে সংস্করণ নিয়ন্ত্রণ বৈশিষ্ট্য চালু থাকে। উপরন্তু সচেতন থাকবেন যে কোনও কোড যেগুলি অন্য ফাইলগুলিকে আপেক্ষিক পাথ দ্বারা কাজ করে তা কাজ করবে না। এবং একটি ফাইল শেয়ারপয়েন্টে সংরক্ষিত হয় যখন অবশেষে বহিরাগত ফাইলের কোন লিঙ্ক বিরতি হবে।


Answer #24

TortoiseSVN সাবভার্সেশন সংস্করণ নিয়ন্ত্রণ সিস্টেমের জন্য একটি চমত্কারভাবে ভাল উইন্ডোজ ক্লায়েন্ট। একটি বৈশিষ্ট্য যা আমি এখন আবিষ্কার করেছি যে এটি হল যে যখন আপনি একটি এক্সেল ফাইলের সংস্করণের মধ্যে একটি পার্থক্য পেতে ক্লিক করেন, তখন এটি এক্সেলের উভয় সংস্করণ খুলবে এবং পরিবর্তিত কক্ষগুলি হাইলাইট করবে (লাল অবস্থায়)। এটি here বর্ণিত একটি vbs স্ক্রিপ্ট জাদু মাধ্যমে সম্পন্ন করা হয়।

আপনি TortoiseSVN ব্যবহার না করেও এই দরকারী খুঁজে পেতে পারেন।


Answer #25

Beyond Comparison নামে একটি প্রোগ্রাম রয়েছে যা একটি চমৎকার এক্সেল ফাইল তুলনা করেছে। আমি চীনাতে একটি স্ক্রিনশট খুঁজে পেয়েছি যা সংক্ষিপ্তভাবে এই দেখায়:


মূল ইমেজ উৎস

তাদের page একটি 30 দিনের ট্রায়াল আছে





version-control