Nationalflaggen

.. das wohl mächtigste Werkzeug in Bill Gates' Büro-Sippe. Ob reine Formeln, PowerQuery oder VBA. Hier bleiben kaum Wünsche unerfüllt.
Benutzeravatar
thowe
Beiträge: 209
Registriert: 12. Sep 2022, 16:57
Hat sich bedankt: 79 Mal
Danksagung erhalten: 67 Mal
Kontaktdaten:

Nationalflaggen

#1

Beitrag von thowe »

Hallo,

ganz genau, zum denkbar falschen Moment, nämlich nach der Fussball EM.
Die initiale Idee ist irgendwann des Nächtens (ja!, es grüßt die senile Schlaflosigkeit) gekommen.

Heb hat schon hier Speilereien mit Shapes veranstaltet. Dies ist mir als "spin-off-product" (ach wie schön man ein Nebenprodukt, noch uncharmanter Abfallprodukt" betiteln kann...) in einem in Entwicklung befinclichen Projekt eingefallen. Der Auslöser war noch noch mehr vage: DesignColors:

Gut, worum geht es:
Eine sehr rudimentäre Lösung wie man sich schnell in ein Arbeitsblatt die Nationalflagge zaubern kann. Vorerst nur Deutschland, Österreich (Achtung! Reihung alphapetisch).

Nun mal der Code:
Dieser sollte selbsterklärend sein:

Code: Alles auswählen

'Source: https://design.austria.info/manual/farbwelt/
'Weiss: rgb(255, 255,255) -> Austria
'Rot: rgb(220, 0 ,0) -> Austria
'Schwarz: rgb (0, 0, 0) -> Austria
'at a ratio 3 to 2

'Source: https://de.wikipedia.org/wiki/Flagge_Deutschlands
'Schwarz: rgb(0, 0, 0) -> Germany
'Rot: rgb (255, 0, 0) -> Germany
'Gelb: rgb (255, 204, 0) -> Germany
'at a ratio 3 to 2

Sub CreateFlagTripartite(strCountry As String, Optional lngColumns As Long)

    'Declarations
    Dim wb As Workbook 'This Workbook
    Dim wks As Worksheet 'Active Worksheet
    Dim i As Integer 'Iterator
    
    
    'initialilze
    Set wb = Application.ThisWorkbook
    Set wks = wb.ActiveSheet
    strCountry = LCase(strCountry)
    If lngColumns = 0 Then lngColumns = 2
    
    For i = 1 To 3
        With wks
            Select Case strCountry
                Case "austria"
                    .Cells(i, lngColumns).Interior.Color = Choose(i, RGB(220, 0, 0), RGB(255, 255, 255), RGB(220, 0, 0))
                    
                Case "germany"
                    .Cells(i, lngColumns).Interior.Color = Choose(i, RGB(0, 0, 0), RGB(255, 0, 0), RGB(255, 204, 0))
                Case Else
                    Exit Sub
                
            End Select
        End With
    Next i
    
    'tidy up and unset, reset, delete objects etc.
    strCountry = ""
    Set wks = Nothing
    Set wb = Nothing
    
End Sub
Wie man die Farbwerte, Länder vorrätig hält, die Länder die Sprache, bin ich mir noch unschlüssig. Jedenfalls wird es eine "static info table" per country (in diesem Projekt) geben. Ob als Array, Dictionary, Collection, noch recht unschlüssig.

Denkbar sind auch die DesignColor Paletten

Natürlich kann man den oben stehenden Code auch mit

Code: Alles auswählen

Shapes.AddShape(msoShapeRectangle ...)
undmit weiteren Propertiess wie .Fill, .Backcolor, .Forecolor. Line erstellen.
Sichmit .TwoColorGradient Eigenschaften herumspielen.

Aber da bin ich mal auf die ersten Rückäußerungen neugierig.
Auf jedenfall wird dieses spin-off-product weiterenwickelt und - auch - hier zur Verfügung gestellt werden.

Möchte nur auf Ideen, Vorschläge und Wünsche der User und Forenbteilnehmer hier warten.

lg
Benutzeravatar
d'r Bastler
Beiträge: 683
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 177 Mal
Danksagung erhalten: 91 Mal

Re: Nationalflaggen

#2

Beitrag von d'r Bastler »

Moin thowe,

interessante Bastelei, die Du da anstößt. Meine erste Idee war, das Ganze doch auf Basis einer existierenden Sammlung/Datenbank von Flaggen aufzubauen. Denn mit "nur RGB" ist schon bei den Schweizern Schluss, die ja schon ihr Kreuz abbilden müssen. Und da bietet sich natürlich Wikipedia an, die eine solche Sammlung vorhält. Leider im .svg-Format, was XL bekanntlich nicht kann.

Also muss konvertiert werden. Dabei hilft IrfanView mit seinen Batch-Optionen. Ob es am Ende Shapes oder Grafiken sind, werden wir sehen...

Schönen A'md noch :)
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
xlKing
Beiträge: 37
Registriert: 30. Mai 2024, 19:42
Hat sich bedankt: 2 Mal
Danksagung erhalten: 35 Mal
Kontaktdaten:

Re: Nationalflaggen

#3

Beitrag von xlKing »

Hi ihr,

darf ich auch mitspielen? Mein Ziel war es, alles in eine Zelle zu bekommen. Zumindest für die farbigen Flaggen ohne Symbol geht das ganz gut mit Gradient. Die Länder habe ich in ein Enum gepackt. So wird es einfacher das entsprechende Land beim Aufruf im Parameter anzugeben.

Code: Alles auswählen

Enum Country
  germany
  belgium
  france
  italy
  mauritius
  Tanzania
End Enum


Sub Test()
  SetFlag ActiveCell, Tanzania
End Sub



Sub SetFlag(rng As Range, ctr As Country)

With rng.Interior
  .Pattern = xlPatternLinearGradient
  .Gradient.ColorStops.Clear
  Select Case ctr
  Case germany
    .Gradient.Degree = 90
    .Gradient.ColorStops.Add(0).Color = 0
    .Gradient.ColorStops.Add(0.333333333).Color = 0
    .Gradient.ColorStops.Add(0.333333334).Color = 255
    .Gradient.ColorStops.Add(0.666666666).Color = 255
    .Gradient.ColorStops.Add(0.666666667).Color = RGB(255, 204, 0)
    .Gradient.ColorStops.Add(1).Color = RGB(255, 204, 0)
  Case belgium
    .Gradient.Degree = 0
    .Gradient.ColorStops.Add(0).Color = RGB(45, 41, 38)
    .Gradient.ColorStops.Add(0.333333333).Color = RGB(45, 41, 38)
    .Gradient.ColorStops.Add(0.333333334).Color = RGB(255, 205, 0)
    .Gradient.ColorStops.Add(0.666666666).Color = RGB(255, 205, 0)
    .Gradient.ColorStops.Add(0.666666667).Color = RGB(200, 16, 46)
    .Gradient.ColorStops.Add(1).Color = RGB(200, 16, 46)
  Case france
    .Gradient.Degree = 0
    .Gradient.ColorStops.Add(0).Color = RGB(0, 38, 84)
    .Gradient.ColorStops.Add(0.333333333).Color = RGB(0, 38, 84)
    .Gradient.ColorStops.Add(0.333333334).Color = RGB(255, 255, 255)
    .Gradient.ColorStops.Add(0.666666666).Color = RGB(255, 255, 255)
    .Gradient.ColorStops.Add(0.666666667).Color = RGB(237, 41, 57)
    .Gradient.ColorStops.Add(1).Color = RGB(237, 41, 57)
  Case italy
    .Gradient.Degree = 0
    .Gradient.ColorStops.Add(0).Color = RGB(0, 140, 69)
    .Gradient.ColorStops.Add(0.333333333).Color = RGB(0, 140, 69)
    .Gradient.ColorStops.Add(0.333333334).Color = RGB(244, 249, 255)
    .Gradient.ColorStops.Add(0.666666666).Color = RGB(244, 249, 255)
    .Gradient.ColorStops.Add(0.666666667).Color = RGB(205, 33, 42)
    .Gradient.ColorStops.Add(1).Color = RGB(205, 33, 42)
  Case mauritius
    .Gradient.Degree = 90
    .Gradient.ColorStops.Add(0).Color = RGB(234, 40, 57)
    .Gradient.ColorStops.Add(0.25).Color = RGB(234, 40, 57)
    .Gradient.ColorStops.Add(0.250000001).Color = RGB(26, 32, 109)
    .Gradient.ColorStops.Add(0.5).Color = RGB(26, 32, 109)
    .Gradient.ColorStops.Add(0.500000001).Color = RGB(255, 213, 0)
    .Gradient.ColorStops.Add(0.75).Color = RGB(255, 213, 0)
    .Gradient.ColorStops.Add(0.750000001).Color = RGB(0, 165, 81)
    .Gradient.ColorStops.Add(1).Color = RGB(0, 165, 81)
  Case Tanzania
    .Gradient.Degree = 45
    .Gradient.ColorStops.Add(0).Color = RGB(30, 181, 58)
    .Gradient.ColorStops.Add(0.35).Color = RGB(30, 181, 58)
    .Gradient.ColorStops.Add(0.350000001).Color = RGB(252, 209, 22)
    .Gradient.ColorStops.Add(0.4).Color = RGB(252, 209, 22)
    .Gradient.ColorStops.Add(0.400000001).Color = RGB(0, 0, 0)
    .Gradient.ColorStops.Add(0.6).Color = RGB(0, 0, 0)
    .Gradient.ColorStops.Add(0.600000001).Color = RGB(252, 209, 22)
    .Gradient.ColorStops.Add(0.65).Color = RGB(252, 209, 22)
    .Gradient.ColorStops.Add(0.650000001).Color = RGB(0, 163, 221)
    .Gradient.ColorStops.Add(1).Color = RGB(0, 163, 221)
  End Select

End With
  
End Sub
Was die Flaggen mit Symbol angeht. Wenn es hier eine SVG-Sammlung gibt, sollten die Knotenpunkte ja bekannt sein. Dann müsste es meiner Meinung nach möglich sein, eine Freeform anzulegen und das ganze nachzuzeichnen. Das können wir uns ja morgen mal gemeinsam anschauen.

Gruß Mr. K.
xlKing
Beiträge: 37
Registriert: 30. Mai 2024, 19:42
Hat sich bedankt: 2 Mal
Danksagung erhalten: 35 Mal
Kontaktdaten:

Re: Nationalflaggen

#4

Beitrag von xlKing »

Das Ganze hat mir keine Ruhe gelassen. Leider sind die zeigt die von Heb angegebene Seite keine SVG-Daten, sondern nur darauf beruhende *.webP-Dateien. Also habe ich mal ein bisschen gegoogelt und habe eine Seite mit zumindest ein paar SVG-Flaggen gefunden. Darauf basierend habe ich mal die Kanada-Flagge für Excel nachgebastelt. Hier der Code:

Code: Alles auswählen

Sub Canada_Flag()

  'SVG-Code von https://fontawesomeicons.com/svg/icons/Canada-flag
  
  Dim cnt As Long
  
  'Flaggenrechteck erstellen (nicht sichtbar)
  With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, 2.574219, 5.546875)
    .AddNodes msoSegmentLine, msoEditingAuto, 27.253906, 5.546875
    .AddNodes msoSegmentLine, msoEditingAuto, 27.253906, 23.695312
    .AddNodes msoSegmentLine, msoEditingAuto, 2.574219, 23.695312
    .AddNodes msoSegmentLine, msoEditingAuto, 2.574219, 5.546875
    With .ConvertToShape
      .Fill.Visible = msoFalse
      .Line.Visible = msoFalse
    End With
  End With
  
  'Bereich für weißes Rechteck in der Mitte der Flagge (nicht sichtbar)
  With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, 9, 5.546875)
    .AddNodes msoSegmentLine, msoEditingAuto, 21, 5.546875
    .AddNodes msoSegmentLine, msoEditingAuto, 21, 23.695312
    .AddNodes msoSegmentLine, msoEditingAuto, 9, 23.695312
    .AddNodes msoSegmentLine, msoEditingAuto, 9, 5.546875
    With .ConvertToShape
      .Fill.Visible = msoFalse
      .Line.Visible = msoFalse
    End With
  End With
  
  'Linkes rotes Shape
  With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, 5.328125, 5.546875)
    .AddNodes msoSegmentCurve, msoEditingCorner, 3.8125, 5.546875, 2.585938, 6.796875, 2.585938, 8.339844
    .AddNodes msoSegmentLine, msoEditingAuto, 2.585938, 20.902344
    .AddNodes msoSegmentCurve, msoEditingCorner, 2.585938, 22.445312, 3.8125, 23.695312, 5.328125, 23.695312
    .AddNodes msoSegmentLine, msoEditingAuto, 9.433594, 23.695312
    .AddNodes msoSegmentLine, msoEditingAuto, 9.433594, 5.546875
    .AddNodes msoSegmentLine, msoEditingAuto, 5.328125, 5.546875
    With .ConvertToShape
      .Fill.ForeColor.RGB = RGB(255 * 83.529663 / 100, 255 * 16.859436 / 100, 255 * 11.759949 / 100)
      .Line.Visible = msoFalse
    End With
  End With
  
  'Rechtes rotes Shape
  With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, 24.503906, 5.546875)
    .AddNodes msoSegmentLine, msoEditingAuto, 20.394531, 5.546875
    .AddNodes msoSegmentLine, msoEditingAuto, 20.394531, 23.695312
    .AddNodes msoSegmentLine, msoEditingAuto, 24.503906, 23.695312
    .AddNodes msoSegmentCurve, msoEditingCorner, 26.015625, 23.695312, 27.242188, 22.445312, 27.242188, 20.902344
    .AddNodes msoSegmentLine, msoEditingAuto, 27.242188, 8.339844
    .AddNodes msoSegmentCurve, msoEditingCorner, 27.242188, 6.796875, 26.015625, 5.546875, 24.503906, 5.546875
    .AddNodes msoSegmentLine, msoEditingAuto, 24.503906, 5.546875
    With .ConvertToShape
      .Fill.ForeColor.RGB = RGB(255 * 83.529663 / 100, 255 * 16.859436 / 100, 255 * 11.759949 / 100)
      .Line.Visible = msoFalse
    End With
  End With
  
  'Weißes Shape in der Mitte
  With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, 9.433594, 5.546875)
    .AddNodes msoSegmentLine, msoEditingAuto, 20.394531, 5.546875
    .AddNodes msoSegmentLine, msoEditingAuto, 20.394531, 23.695312
    .AddNodes msoSegmentLine, msoEditingAuto, 9.433594, 23.695312
    .AddNodes msoSegmentLine, msoEditingAuto, 9.433594, 5.546875
    With .ConvertToShape
      .Fill.ForeColor.RGB = RGB(255 * 93.328857 / 100, 255 * 93.328857 / 100, 255 * 93.328857 / 100)
      .Line.Visible = msoFalse
    End With
  End With
  
  'Ahornblatt
  With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, 15.335938, 17.492188)
    .AddNodes msoSegmentCurve, msoEditingCorner, 16.15625, 17.589844, 16.890625, 17.675781, 17.675781, 17.769531
    .AddNodes msoSegmentLine, msoEditingAuto, 17.503906, 17.070312
    .AddNodes msoSegmentCurve, msoEditingCorner, 17.46875, 16.949219, 17.515625, 16.816406, 17.613281, 16.738281
    .AddNodes msoSegmentLine, msoEditingAuto, 19.996094, 14.761719
    .AddNodes msoSegmentLine, msoEditingAuto, 19.5, 14.523438
    .AddNodes msoSegmentCurve, msoEditingCorner, 19.285156, 14.445312, 19.34375, 14.320312, 19.421875, 14.019531
    .AddNodes msoSegmentLine, msoEditingAuto, 19.785156, 12.671875
    .AddNodes msoSegmentLine, msoEditingAuto, 18.402344, 12.96875
    .AddNodes msoSegmentCurve, msoEditingCorner, 18.265625, 12.988281, 18.175781, 12.902344, 18.15625, 12.816406
    .AddNodes msoSegmentLine, msoEditingAuto, 17.976562, 12.183594
    .AddNodes msoSegmentLine, msoEditingAuto, 16.882812, 13.433594
    .AddNodes msoSegmentCurve, msoEditingCorner, 16.726562, 13.636719, 16.414062, 13.636719, 16.511719, 13.171875
    .AddNodes msoSegmentLine, msoEditingAuto, 16.980469, 10.636719
    .AddNodes msoSegmentLine, msoEditingAuto, 16.351562, 10.96875
    .AddNodes msoSegmentCurve, msoEditingCorner, 16.175781, 11.066406, 16, 11.085938, 15.902344, 10.90625
    .AddNodes msoSegmentLine, msoEditingAuto, 15.035156, 9.253906
    .AddNodes msoSegmentLine, msoEditingAuto, 15.035156, 9.296875
    .AddNodes msoSegmentLine, msoEditingAuto, 15.035156, 9.253906
    .AddNodes msoSegmentLine, msoEditingAuto, 14.167969, 10.90625
    .AddNodes msoSegmentCurve, msoEditingCorner, 14.070312, 11.085938, 13.894531, 11.066406, 13.71875, 10.96875
    .AddNodes msoSegmentLine, msoEditingAuto, 13.089844, 10.636719
    .AddNodes msoSegmentLine, msoEditingAuto, 13.558594, 13.171875
    .AddNodes msoSegmentCurve, msoEditingCorner, 13.65625, 13.636719, 13.339844, 13.636719, 13.183594, 13.433594
    .AddNodes msoSegmentLine, msoEditingAuto, 12.089844, 12.183594
    .AddNodes msoSegmentLine, msoEditingAuto, 11.914062, 12.820312
    .AddNodes msoSegmentCurve, msoEditingCorner, 11.890625, 12.902344, 11.800781, 12.988281, 11.667969, 12.96875
    .AddNodes msoSegmentLine, msoEditingAuto, 10.28125, 12.671875
    .AddNodes msoSegmentLine, msoEditingAuto, 10.644531, 14.023438
    .AddNodes msoSegmentCurve, msoEditingCorner, 10.722656, 14.320312, 10.785156, 14.445312, 10.566406, 14.527344
    .AddNodes msoSegmentLine, msoEditingAuto, 10.074219, 14.761719
    .AddNodes msoSegmentLine, msoEditingAuto, 12.457031, 16.742188
    .AddNodes msoSegmentCurve, msoEditingCorner, 12.550781, 16.816406, 12.597656, 16.949219, 12.566406, 17.074219
    .AddNodes msoSegmentLine, msoEditingAuto, 12.355469, 17.773438
    .AddNodes msoSegmentLine, msoEditingAuto, 14.730469, 17.492188
    .AddNodes msoSegmentCurve, msoEditingCorner, 14.804688, 17.492188, 14.851562, 17.53125, 14.851562, 17.617188
    .AddNodes msoSegmentLine, msoEditingAuto, 14.707031, 20.203125
    .AddNodes msoSegmentLine, msoEditingAuto, 15.359375, 20.203125
    .AddNodes msoSegmentLine, msoEditingAuto, 15.214844, 17.617188
    .AddNodes msoSegmentCurve, msoEditingCorner, 15.214844, 17.53125, 15.261719, 17.492188, 15.335938, 17.492188
    .AddNodes msoSegmentLine, msoEditingAuto, 15.335938, 17.492188
    With .ConvertToShape
      .Fill.ForeColor.RGB = RGB(255 * 83.529663 / 100, 255 * 16.859436 / 100, 255 * 11.759949 / 100)
      .Line.Visible = msoFalse
    End With
  End With
  
  cnt = ActiveSheet.Shapes.Count
  With ActiveSheet.Shapes.Range(Array(cnt, cnt - 1, cnt - 2, cnt - 3, cnt - 4, cnt - 5)).Group
    .Height = .Height * 10
    .Width = .Width * 10
  End With
End Sub
Nun aber gute Nacht, sofern davon noch was übrig ist. :shock:
Gruß Mr. K.
Folgende Benutzer bedankten sich beim Autor xlKing für den Beitrag:
thowe
Benutzeravatar
thowe
Beiträge: 209
Registriert: 12. Sep 2022, 16:57
Hat sich bedankt: 79 Mal
Danksagung erhalten: 67 Mal
Kontaktdaten:

Re: Nationalflaggen

#5

Beitrag von thowe »

Gute Nacht,

hoffentlich für dich Mr. K!

Wow danke für das mitbasteln.

Ich sehe mir deine 2 Ansätze heute durch.

Zu Enums, eine Diskussion & Beiträge dazu,hier in diesem Forum.

viewtopic.php?p=1011&hilit=Enum#p1011

lg
Benutzeravatar
thowe
Beiträge: 209
Registriert: 12. Sep 2022, 16:57
Hat sich bedankt: 79 Mal
Danksagung erhalten: 67 Mal
Kontaktdaten:

Re: Nationalflaggen

#6

Beitrag von thowe »

Hallöchen euch beiden!

Also Mr. King beides ist schon sehr beeindruckend!

Wem mein anfängliches Einleiten gefällt soll nach der "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -" weiterlesen

Vorweg stelle ich in den Raum, das hier mit dieser "Extension" - grundsätzlich - daran gedacht ist, eine Lösung (vorab nur EU Länder (hoffentlich haben die nur Farben und keine "Grafiken (wie in CH mit "Kreuz", oder der Union Jack (den sollte man hinbekommen) anzubieten, zumindest als DonateWare, monetarisieren ist Meins.

-> daher soll heb als OpinionLeader hier die maßgeblichen Bedingungen kundtun -> nur für diese "Extension"

Daher sollten wir uns - schon - auf eine halbwegs homogene Vorgehensweise von Konventionen einigen.
zB: wie sprechen wir Arbeitsmappen an (ich nutze - grundsätzlich - nur CodeNames (wie sieht das dann beim verteilen aus? ) -> Heb weiß, das ich ein Framwork habe, das rundherum einiges abfängt, wie: CodeNameExists, GetSheetNameBasedOnCodeName, GetWorkbookName, SetSessionData, Bootstrap etc.) und ich habe immer "sprechende Variablen", arbeie gerne mit Enums, mit Dictionaries (geht nicht bei Mac)

-> nur ihr seid die Profis! Ich kommen mit meinem Gedöns aus einer ganz anderen Ecke daher..., also freue ich mich auf eure Instruktionen

So, genug der Einleitung

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -

Ich denke mir, wir sollten beides anbieten. Sowohl ineinem Range, als auch als Shape. Mitgebe ich, mein Credo: "offen" mit der Extension zu bleiben. Gerne möchte ich rundherum eine, ich nenne das so static_table_info also (Flag, Tax, Language etc.) bauen.

Wo kann das verwendet werden? in Dashboards, Templates, UserForms (da wird im Spätsommer noch was kommen von mir).... -> eure Ideen?

Was meines Erachtens - unbedingt - als Kriterium mitkommen soll, ist das Seitenverhältnis (ratio)
Wir sollten auch alles Quellen (Sources) dokumenteiren, wo wir die Farbwerte, und weitere Kriterien haben
Wir sollten uns anfänglich auf Nationalflaggen (ohne Grafien wie in CH) konzentriern.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -

Heb du merkst schon, wir gehen doch mehr in Richtungs LösungInfoPlatform (statt ProblemForum), das ist definitiv für dich ein Alleinstellungsmerkmal!

cu thowe
Benutzeravatar
d'r Bastler
Beiträge: 683
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 177 Mal
Danksagung erhalten: 91 Mal

Re: Nationalflaggen

#7

Beitrag von d'r Bastler »

Holla die Waldfee!!

hier geht's ja richtig rund! Schön! Und jetzt muss natürlich eine ABER kommen:
  • ...itiv für dich ein Allei...
    Nee, nee, lieber thowe. Das ist nicht mein Alleinstellungsmerkmal, sondern UNSERES! Denn ohne das Zutun aller hier, selbst der VBAnfagenden Fragesteller, die immer wieder lustige Herausforderungen liefern, wäre das alles bestenfalls eine Spickzettelsammlung.
  • und entsprechend bin ich hier auch kein OpinionLeader, (wasndasnfürntier?) sondern bleibe immer noch d'r gerne täglich lernende Bastler.
So - das mit dem monetarisieren überlasse ich gerne thowe, darf aber stolz und dankbar verkünden, dass Mithilfe der ein oder anderen Unterstützung per PayPal schon knapp 65% der jährlichen Kosten für 2024 gedeckt sind! Die VBAsteleien.de bleiben damit sicher werbefrei.

Und nun zu den Wimpeln. Also ohne Trikolor-überschreitende Grafiken klappt da auch auf Europa beschränkt schon mal nix. Unvollständig von West nach Ost: Portugal, Spanien, Andorra, San Marino, Liechtenstein, das braucht's dann schon ziselierte Krönchen, Großkätzchen und Eichenlaub. Nur die Großmächte kommen ohne solche Ornamente aus

Daher ist xlKing's und mein Ansatz - gehen wir uns die Bildchen doch irgendwo holen - sicher der effizienteste. Den Spaniern ihre monarchistischen Herrschaftssymbole als Shape nachzubauen, wird mir sicher nicht einfallen. Und die Liste der von der UNO anerkannten Staaten enthält derzeit 194 solcher bunten Bildchen, übrigens in durchaus variierender Ratio: 1:2, 2:3, 5:7, 9:14. Da wären wir selbst mit Unterstützung aus Billiglohnländern vermutlich bis Ende des Jahres beschäftigt.

Also ändert sich das Thema m.E. in folgendes: Wie bekomme ich es hin, mithilfe z.B. von IrfanView konvertierte Grafiken aus dem Internet in ein XL-Zelle zu bugsieren? Und das möglichst ohne dazu manuell irgendwelche Benennungen zu erstellen.

Ich fange dann mal an zu basteln ...

lg - und Danke für die Blumen!!
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
thowe
Beiträge: 209
Registriert: 12. Sep 2022, 16:57
Hat sich bedankt: 79 Mal
Danksagung erhalten: 67 Mal
Kontaktdaten:

Re: Nationalflaggen

#8

Beitrag von thowe »

Hallo Heb
Wie bekomme ich es hin, mithilfe z.B. von IrfanView konvertierte Grafiken aus dem Internet in ein XL-Zelle zu bugsieren? Und das möglichst ohne dazu manuell irgendwelche Benennungen zu erstellen.
na, da haben meine 2 morschen Holzräder im Oberstübchen schon richtig gedreht... -> zu dieser Erkenntnis bin ich schon gekommen!

Was ist, was kann IrfanView? -> dem Namen nach ein Bildbetrachter -> wie kann dieses Toll behilflich sein?

Der Ansatz von xlKing gefällt mir. Ich würde auch auf svg setzen. es gibt auf den von xlKing genannten Quelle (fontawsomicon.com) 194 -flag(s)....

Ich habe mir mal ein paar .svg Dateien runtergeladen und via Visual Studio Code die XML Struktur betrachtet.
Die Schemat ist dem Grunde nach immer gleich aufgebaut (nona, sonst wäre es doch keine Auszeichnungssprache)
Dh eindenkbarer Ansatz wäre, die Dateien von einer Quelle runterladen, und sich die notwendigen Elemente herauskitzeln, pro Wimpel.

Was ich noch behirnen muss, welche Teile der gesamten XML Struktur für die Koordinaten als Parameter nötig sind.
Hier gibt es zumindest zur Canada-flag schon ein sehr gutte Orientierungs-Blaupause.

Die Flaggen mit dem nationalen Gedöns, Adler etc in der Mitte, würde ich mal hintanstellen. rot weiß rot ist doch immer Österreich (Mist wenn es nicht die Letvia-flag gäbe...

Eure Gedanken?
Benutzeravatar
d'r Bastler
Beiträge: 683
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 177 Mal
Danksagung erhalten: 91 Mal

Re: Nationalflaggen

#9

Beitrag von d'r Bastler »

'n Abend thowe,

IV = IrfanView ist nicht nur ein Bildbetrachter, sondern ein bewährtes Tool, mit dem man aus dem Internet geklaute (oder auch eigene, soll gelegentlich vorkommen ...) Bilder u.A. per Batch zielführend bearbeiten/zuschneiden/konvertieren u.v.m. kann. Ich kann es nur empfehlen! Für mich ein echtes Essential. Außerdem lässt es sich gut über die Kommando-Zeile steuern, was die Einsatzmöglichkeiten erheblich erweitert.

Noch nicht als Code, aber als Idee für einen PAP:
XL: Hole alle *.svg aus der Webseite Schnulliwurz,
IV: konvertiere sie in *gif/jpg/whatever und purzle sie in das lokale Verzeichnis Bärwurz (z.B. unterhalb des Master-Workbooks.)

Und ab jetzt kann XL sie sich von dort in bester Auflösung und korrekten Ratios abholen. Keine Shape-Basteleien, sondern echte Bilder.

lg

p.s.: Letvia = Latvia? 1.) anderes rot und 2.) andere Proportionen. Aber mit einem Import aus renommierten Quellen kümmert das nicht mehr ;)
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
xlKing
Beiträge: 37
Registriert: 30. Mai 2024, 19:42
Hat sich bedankt: 2 Mal
Danksagung erhalten: 35 Mal
Kontaktdaten:

Re: Nationalflaggen

#10

Beitrag von xlKing »

nAbend ihr Beiden,

also das Umwandeln in JPG etc. würde ich lassen. Das hätte wieder den Nachteil, dass es beim Vergrößern unscharf wird. Wir wollen es aber scharf haben. SVG ist ein Format wo jede Größe ein scharfes Ergebnis liefert. Ähnlich ist es auch mit den Shapes. Insofern lässt sich SVG auch ganz normal als Bild einfügen und man erhält das gleiche Ergebnis, als wie wenn man das selbst zusammenbastelt.

Was viele nicht wissen. Excel ist auch ein XML-Basiertes Format und kann daher mit SVG umgehen. Soweit hatte ich letzte Nacht nicht mehr gedacht. Man kann das eingefügte SVG-Bild über Gruppierung aufheben auch wieder in seine Bestandteile auflösen, wenn man das will. Insofern stimme ich zu, dass das Coden solcher Flags doch recht aufwendig ist. Warum soll jemand Geld ausgeben, für eine Flag, die er kostenlos aus dem Internet importieren kann? Den Nutzen sehe ich noch nicht.

Gruß Mr. K.
Folgende Benutzer bedankten sich beim Autor xlKing für den Beitrag:
d'r Bastler
Antworten

Wer ist online?

Mitglieder in diesem Forum: Semrush [Bot] und 0 Gäste