VBA makro Wordi dokumentides teaduslike nimede vormindamise värskendamiseks

VBA makro Wordi dokumentides teaduslike nimede vormindamise värskendamiseks
VBA makro Wordi dokumentides teaduslike nimede vormindamise värskendamiseks

Teadusliku nimevormingu täiustamine VBA makrodega

VBA makrode kasutamine teaduslike nimede vormindamiseks Wordi dokumentides on võimas tööriist, eriti Excelist andmete tõmbamisel. Selles artiklis käsitletakse konkreetset VBA-makrot, mis sobib suurepäraselt teaduslike nimede paksuse, kaldkirja ja fondi muutmisega, kuid millel on raskusi teksti värskendamisega lause suurtähtedele.

Vaatamata selle tõhususele muudes vormindamisaspektides, ei suuda makro teaduslikke nimesid soovitud lausesuurusse teisendada. Selles artiklis uuritakse probleemi ja võimalikke lahendusi, eesmärgiga tagada, et kõik teaduslikud nimetused järgiksid õigeid vormindamisstandardeid.

Käsk Kirjeldus
Application.FileDialog(msoFileDialogFilePicker) Avab faili dialoogiboksi faili, antud juhul Exceli töövihiku valimiseks.
GetObject("", "Excel.Application") Hangib olemasoleva Exceli eksemplari, kui see juba töötab.
CreateObject("Excel.Application") Loob uue Exceli eksemplari, kui see veel ei tööta.
xlbook.Workbooks.Open(strSource) Avab valitud Exceli töövihiku.
xlsheet.Range("A1").CurrentRegion.Value Hangib praeguse piirkonna väärtuse alates lahtrist A1 Exceli lehel.
Selection.HomeKey wdStory Liigutab valiku dokumendi algusesse.
Selection.Find.ClearFormatting Kustutab otsinguoperatsioonis kõik varasemad vormingusätted.
StrConv(rng.Text, vbProperCase) Teisendab vahemikus oleva teksti õigesse suurtähte (pealkirja suur- ja suurtähte).

Teadusliku nimevormingu VBA makro mõistmine

Pakutav VBA-makro on loodud Wordi dokumendis teaduslike nimede vormindamise protsessi automatiseerimiseks, kasutades Exceli lehel olevaid andmeid. Skript algab faili dialoogiboksi (Application.FileDialog(msoFileDialogFilePicker)), et kasutaja saaks valida Exceli töövihiku, mis sisaldab vormindatavaid teaduslikke nimesid. Seejärel proovib see luua ühenduse olemasoleva Exceli eksemplariga, kasutades GetObject("", "Excel.Application") või loob uue eksemplari, kui Excel veel ei tööta (CreateObject("Excel.Application")). Kui töövihik on avatud, loeb makro andmeid määratud vahemikust (xlsheet.Range("A1").CurrentRegion.Value) ja salvestab selle edasiseks töötlemiseks massiivi.

Iga massiivi teadusliku nime jaoks kasutab makro Selection.Find Wordi dokumendist termini otsimiseks. Kui vaste leitakse, rakendab skript tekstile erinevaid vormindussuvandeid, näiteks kaldkirja (rng.Font.Italic = True), paksus kirjas (rng.Font.Bold = True), muutes fondi värvi (rng.Font.Color = RGB(200, 187, 0)) ja määrake fondi tüübiks Times New Roman (rng.Font.Name = "Times New Roman"). Selle makro põhiaspektiks on katse muuta teksti lausesuurusteks rng.Case = wdTitleSentence, mis kahjuks ei tööta nii, nagu ette nähtud. Skript sisaldab ka alternatiivset lähenemisviisi, teisendades teksti käsitsi õigesse tähte StrConv(rng.Text, vbProperCase).

VBA makro teaduslike nimede vormingu värskendamiseks Wordis

Visual Basic for Applications (VBA) Wordi ja Exceli jaoks

Sub format_scientific_names()
    Dim xlapp As Object
    Dim xlbook As Object
    Dim xlsheet As Object
    Dim myarray As Variant
    Dim FD As FileDialog
    Dim strSource As String
    Dim i As Long, lognum As Long
    Set FD = Application.FileDialog(msoFileDialogFilePicker)
    With FD
        .Title = "Select the workbook that contains the terms to be italicized"
        .Filters.Clear
        .Filters.Add "Excel Workbooks", "*.xlsx"
        .AllowMultiSelect = False
        If .Show = -1 Then
            strSource = .SelectedItems(1)
        Else
            MsgBox "You did not select the workbook that contains the data"
            Exit Sub
        End If
    End With
    On Error Resume Next
    Set xlapp = GetObject("", "Excel.Application")
    If Err Then
        bstartApp = True
        Set xlapp = CreateObject("Excel.Application")
    End If
    On Error GoTo 0
    Set xlbook = xlapp.Workbooks.Open(strSource)
    Set xlsheet = xlbook.Worksheets(1)
    myarray = xlsheet.Range("A1").CurrentRegion.Value
    If bstartApp = True Then xlapp.Quit
    Set xlapp = Nothing
    Set xlbook = Nothing
    Set xlsheet = Nothing
    For i = LBound(myarray) To UBound(myarray)
        Selection.HomeKey wdStory
        Selection.Find.ClearFormatting
        With Selection.Find
            Do While .Execute(FindText:=myarray(i, 1), Forward:=True, _
            MatchWildcards:=True, Wrap:=wdFindStop, MatchCase:=False) = True
                Set rng = Selection.Range
                Selection.Collapse wdCollapseEnd
                rng.Font.Italic = True
                rng.Font.Bold = True
                rng.Font.Color = RGB(200, 187, 0)
                rng.Font.Name = "Times New Roman"
                rng.Text = StrConv(rng.Text, vbProperCase)
            Loop
        End With
    Next i
End Sub

VBA-skript juhtude pärimiseks Exceli andmetest

VBA Exceli ja Wordi integreerimiseks

Sub format_scientific_names_inherit_case()
    Dim xlapp As Object
    Dim xlbook As Object
    Dim xlsheet As Object
    Dim myarray As Variant
    Dim FD As FileDialog
    Dim strSource As String
    Dim i As Long, lognum As Long
    Set FD = Application.FileDialog(msoFileDialogFilePicker)
    With FD
        .Title = "Select the workbook that contains the terms to be italicized"
        .Filters.Clear
        .Filters.Add "Excel Workbooks", "*.xlsx"
        .AllowMultiSelect = False
        If .Show = -1 Then
            strSource = .SelectedItems(1)
        Else
            MsgBox "You did not select the workbook that contains the data"
            Exit Sub
        End If
    End With
    On Error Resume Next
    Set xlapp = GetObject("", "Excel.Application")
    If Err Then
        bstartApp = True
        Set xlapp = CreateObject("Excel.Application")
    End If
    On Error GoTo 0
    Set xlbook = xlapp.Workbooks.Open(strSource)
    Set xlsheet = xlbook.Worksheets(1)
    myarray = xlsheet.Range("A1").CurrentRegion.Value
    If bstartApp = True Then xlapp.Quit
    Set xlapp = Nothing
    Set xlbook = Nothing
    Set xlsheet = Nothing
    For i = LBound(myarray) To UBound(myarray)
        Selection.HomeKey wdStory
        Selection.Find.ClearFormatting
        With Selection.Find
            Do While .Execute(FindText:=myarray(i, 1), Forward:=True, _
            MatchWildcards:=True, Wrap:=wdFindStop, MatchCase:=False) = True
                Set rng = Selection.Range
                Selection.Collapse wdCollapseEnd
                rng.Text = myarray(i, 1)
                rng.Font.Italic = True
                rng.Font.Bold = True
                rng.Font.Color = RGB(200, 187, 0)
                rng.Font.Name = "Times New Roman"
            Loop
        End With
    Next i
End Sub

Täiustatud VBA tehnikad teksti vormindamiseks Wordis

Wordi dokumentides teksti vormindamiseks VBA makrodega töötades tuleb lisaks lihtsatele vorminduskäskudele arvestada paljude aspektidega. Üks ülioluline element on tagada, et tekstitähti käsitletakse õigesti, eriti kui tegemist on konkreetse nomenklatuuriga, näiteks teaduslike nimetustega. Makro, mis integreerib Exceli andmeid ja rakendab Wordis erinevaid vormindussuvandeid, võib dokumentide ettevalmistamist oluliselt lihtsustada. Õige teksti, näiteks lause käände, saavutamine võib aga olla keeruline. See probleem tekib sageli seetõttu, et VBA vaikefunktsioonid on suur- ja suurtähtede muutmiseks, näiteks wdUpperCase ja wdLowerCase, ei vasta alati nüansirikkamate suurtähtede kohandamise nõuetele.

Teine lähenemisviis hõlmab kohandatud funktsioonide kasutamist või Exceli võimaluste kasutamist, et hallata tekstitähti enne andmete ülekandmist Wordi. Näiteks võib enne Wordi makro käivitamist teaduslike nimede õige vormindamine Excelis säästa aega ja vähendada vigu. VBA-d StrConv funktsioon, mis teisendab stringid erinevateks juhtudeks, võib olla kasulik, kuid nõuab hoolikat rakendamist. Lisaks mõista, kuidas manipuleerida Selection.Find Objekti tõhus kasutamine on teksti täpseks leidmiseks ja asendamiseks hädavajalik. Veakäsitluse kaasamine ja makro erinevate tekstistsenaariumitega toimetulemise tagamine viib jõulisema ja usaldusväärsema automatiseerimiseni.

Levinud küsimused teksti vormindamise VBA makrode kohta

  1. Kuidas avada VBA-s failidialoog?
  2. Kasuta Application.FileDialog(msoFileDialogFilePicker) et avada failidialoog ja lubada kasutajatel faili valida.
  3. Kuidas saan VBA-s Exceli eksemplari hankida?
  4. Sa võid kasutada GetObject("", "Excel.Application") olemasoleva Exceli eksemplari hankimiseks või CreateObject("Excel.Application") uue loomiseks.
  5. Kuidas avada VBA-s Exceli töövihik?
  6. Kasuta xlbook.Workbooks.Open("filePath") Exceli töövihiku avamiseks määratud failiteelt.
  7. Mis on parim viis VBA-s Excelist erinevate andmete lugemiseks?
  8. Kasutades xlsheet.Range("A1").CurrentRegion.Value loeb kogu lehe praeguse piirkonna alates lahtrist A1 massiiviks.
  9. Kuidas ma saan VBA-s kursori Wordi dokumendi algusesse viia?
  10. Käsk Selection.HomeKey wdStory nihutab valiku dokumendi algusesse.
  11. Mida teeb Selection.Find.ClearFormatting VBA-s?
  12. See kustutab kõik varasemad otsimistoimingule rakendatud vormingusätted, tagades uue otsingu.
  13. Kuidas muuta tekst VBA-s õigeks suureks?
  14. Kasuta StrConv(text, vbProperCase) funktsioon teksti õigesse suurtähte teisendamiseks.
  15. Kuidas rakendada VBA-s tekstile mitut vormingusuvandit?
  16. Saate kasutada erinevaid vorminguid, näiteks kaldkirja, paksu kirja ja fondivärvi rng.Font.Italic = True, rng.Font.Bold = Trueja rng.Font.Color = RGB(200, 187, 0).

Järeldus ja järgmised sammud

Kokkuvõtteks võib öelda, et VBA-makro loomine teaduslike nimede vormindamiseks Wordi dokumentides hõlmab mitut sammu, sealhulgas andmete hankimist Excelist ja mitmete vormindamisvalikute rakendamist. Kuigi makro saab tõhusalt muuta fondi stiile ja värve, on lausete suurtähtede vormindamine endiselt väljakutse. Tulevased täiustused võivad hõlmata kohandatud funktsioone või andmete eelvormindamist Excelis, et tagada järjepidevus. Tekstitähtede nõuetekohane käsitlemine suurendab teadusdokumentide loetavust ja professionaalsust.