Makro in Excel - personal.xlsb wird teilw. ignoriert
Hallo,
leider ist mit der Titel des Thread nicht so gut gelungen. Das Problem ist auch etwas seltsam zu beschreiben.
mein System ist ein Win 10 mit einem Office 2016.
Was ich realisieren will ist eigentlich ganz einfach: Wenn in Spalte J ein "x" steht soll in Spalte A eine Grafik eingefügt werden. Das ganze soll als Makro in der Personal.xlsb gespeichert sein damit es auf jede Datei Anwendbar ist.
Verwendet habe ich den VBA Code
Das funktioniert auch, allerdings nur wenn ich das auf eine spezifische Datei anwende. Ich öffne also Beispiel.xlsx führe das Makro im VBA Editor oder einfach über den Klick über den Makros Button aus. Im Modul1 des VBA Projekt "Beispiel.xlsx" steht also der code und wird ausgeführt.
Wenn ich den Code aber in ein Modul des VBA Projekts "Personal.xlsb" kopiere und dort abspeichere wird das Makro zwar über den Makro Button angezeigt und scheinbar auch fehlerfrei ausgeführt aber die Grafik wird einfach nicht ausgeführt. Ich habe schon den Pfad zur Grafik aus dem Makro kopiert und in den Explorer eingegeben - das klappt, daran liegt es nicht.
Ich habe die Zeile im Verdacht weiss aber nicht wie es richtig sein sollte, falls das wirklich falsch ist.
Ich hoffe ihr könnt mein Problem nachvollziehen und mit weiterhelfen.
Grundsätzlich funktioniert das ganze. Ich habe andere Makros in der Personal.xlsb die auch in der Beispiel.xlsx funktionieren und über Tastenkombination abrufbar sind, egal wie die xlsx Datei heißt.
Vielen Dank für eure Mühe
leider ist mit der Titel des Thread nicht so gut gelungen. Das Problem ist auch etwas seltsam zu beschreiben.
mein System ist ein Win 10 mit einem Office 2016.
Was ich realisieren will ist eigentlich ganz einfach: Wenn in Spalte J ein "x" steht soll in Spalte A eine Grafik eingefügt werden. Das ganze soll als Makro in der Personal.xlsb gespeichert sein damit es auf jede Datei Anwendbar ist.
Verwendet habe ich den VBA Code
Sub BildEinfügen()
Dim ws As Worksheet
Dim Zelle As Range
Dim imgPfad As String
Dim img As Picture
' Legen Sie das Arbeitsblatt fest, auf dem Sie diese Operation durchführen möchten
Set ws = ThisWorkbook.Worksheets("Tabelle1") ' Ändern Sie "Tabelle1" in den Namen Ihres Blatts
' Geben Sie den Pfad zum Bild an, das Sie einfügen möchten
imgPfad = "C:\Pfad\Zu\Ihrem\Bild.png" ' Ändern Sie dies in den tatsächlichen Pfad Ihres Bildes
' Schleife durch jede Zelle in Spalte J
For Each Zelle In ws.Range("J1:J" & ws.Cells(ws.Rows.Count, "J").End(xlUp).Row)
' Überprüfen Sie, ob die Zelle "x" enthält
If Zelle.Value = "x" Then
' Fügen Sie das Bild in die entsprechende Zelle in Spalte A ein
Set img = ws.Pictures.Insert(imgPfad)
img.Top = Zelle.Offset(0, -9).Top ' Passen Sie den Offset an, um das Bild richtig zu positionieren
img.Left = Zelle.Offset(0, -9).Left
End If
Next Zelle
End Sub
Das funktioniert auch, allerdings nur wenn ich das auf eine spezifische Datei anwende. Ich öffne also Beispiel.xlsx führe das Makro im VBA Editor oder einfach über den Klick über den Makros Button aus. Im Modul1 des VBA Projekt "Beispiel.xlsx" steht also der code und wird ausgeführt.
Wenn ich den Code aber in ein Modul des VBA Projekts "Personal.xlsb" kopiere und dort abspeichere wird das Makro zwar über den Makro Button angezeigt und scheinbar auch fehlerfrei ausgeführt aber die Grafik wird einfach nicht ausgeführt. Ich habe schon den Pfad zur Grafik aus dem Makro kopiert und in den Explorer eingegeben - das klappt, daran liegt es nicht.
Ich habe die Zeile
Set ws = ThisWorkbook.Worksheets("Tabelle1")
Ich hoffe ihr könnt mein Problem nachvollziehen und mit weiterhelfen.
Grundsätzlich funktioniert das ganze. Ich habe andere Makros in der Personal.xlsb die auch in der Beispiel.xlsx funktionieren und über Tastenkombination abrufbar sind, egal wie die xlsx Datei heißt.
Vielen Dank für eure Mühe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 9473198402
Url: https://administrator.de/contentid/9473198402
Ausgedruckt am: 17.11.2024 um 03:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo,
Die ganze Spalte J?
Excel (je nach Version) kann 1,048,576 rows by 16,384 columns haben.
https://support.microsoft.com/en-gb/office/excel-specifications-and-limi ...
https://analystcave.com/excel-working-with-large-excel-files-the-xlsb-fo ...
https://docs.fileformat.com/spreadsheet/xlsb/
https://www.adobe.com/de/acrobat/resources/document-files/spreadsheet-fi ...
https://www.spreadsheet1.com/how-to-save-as-binary-excel-workbook.html
https://doneex.com/excel-binary-workbook/
https://excelchamps.com/workbook/binary/#Then_Should_I_Use_XLSB
https://excelbaby.com/learn/when-should-i-use-xlsx-or-xlsb-format/
Gruß,
Peter
Die ganze Spalte J?
Spalte A
Die ganze Spalte A?Excel (je nach Version) kann 1,048,576 rows by 16,384 columns haben.
https://support.microsoft.com/en-gb/office/excel-specifications-and-limi ...
Grundsätzlich funktioniert das ganze. Ich habe andere Makros in der Personal.xlsb die auch in der Beispiel.xlsx funktionieren und über Tastenkombination abrufbar sind, egal wie die xlsx Datei heißt.
Warum willst du .xlsb nutzen? Du weisst über die nachteile der Binären Speicherung mittels .xlsb bescheid?https://analystcave.com/excel-working-with-large-excel-files-the-xlsb-fo ...
https://docs.fileformat.com/spreadsheet/xlsb/
https://www.adobe.com/de/acrobat/resources/document-files/spreadsheet-fi ...
https://www.spreadsheet1.com/how-to-save-as-binary-excel-workbook.html
https://doneex.com/excel-binary-workbook/
https://excelchamps.com/workbook/binary/#Then_Should_I_Use_XLSB
https://excelbaby.com/learn/when-should-i-use-xlsx-or-xlsb-format/
Gruß,
Peter
ThisWorkbook bezieht sich auf das Workbook in dem das Makro selbst steht, wohingegen ActiveWorkbook das gerade aktiv angezeigte WB darstellt.
Sid.
Set ws = ActiveWorkbook.Worksheets(1)