Autor
|
Thema: Grafik mit VBA absolut positionieren (12514 mal gelesen)
|
MatthiasB Mitglied Technische Berechnung
Beiträge: 145 Registriert: 15.10.2003 Ansys 16, CATIA V5 R21 Dell Precision T3600
|
erstellt am: 23. Sep. 2010 15:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe noch n'Problem, zu dem ich mit der Suche nicht die passende Lösung finde: Ich öffne per VBA eine Grafik aus einer Datei (das krieg ich ja noch hin). Diese möchte ich jetzt nach Möglichkeit absolut Positionieren, am liebsten über Angabe der Seitennummer, wenn das nicht geht über Zellen oder über den Abstand. Vielen Dank im Voraus Matthias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 23. Sep. 2010 16:16 <-- editieren / zitieren --> Unities abgeben: Nur für MatthiasB
Hallo MatthiasB, hm - habe auch keine passende Lösung, nur ein paar Gegenfragen: (Bitte nicht falsch auffassen, ich möchte lediglich die Fragestellung richtig verstehen.) 1. Was genau hast Du vor? 2. Warum soll die Grafik auf einer bestimmten Seite stehen? 3. Bist Du sicher, das Excel das richtige Werkzeug ist? 4. Was tust Du, wenn sich Dein Druckbereich in Excel ändert oder jemand filtert oder Zeilen ausblendet oder was-weiß-ich-was-dem-User-einfällt? 5. Was kommt vor und nach der Grafik (im Ausdruck)? ------------------ DIN1055.de | Lastannahmen für Anwender NEU: Foren zu DIN 1055 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MatthiasB Mitglied Technische Berechnung
Beiträge: 145 Registriert: 15.10.2003
|
erstellt am: 23. Sep. 2010 16:40 <-- editieren / zitieren --> Unities abgeben:
Hallo Paulchen, Zu 1. Ich möchte eine automatisierte Auswertung erstellen lassen mit einer variablen Anzahl von Bildern aus einer Datei Zu 2. Ich denke es wäre für mich einfacher die Bilder über die Seitennummer zu positionieren, das ist aber nicht zwingend. Zu 3. Ja ich bin sicher, denn im Hintergrund, also auf andern Mappen möchte ich noch diverse Tabellen und Diagramme erstellen. Zu 4. In dieser Auswertung wird niemand etwas ändern dürfen. Nach der Fertigstellung werde ich ein PDF erzeugen. Von daher ist das kein Problem. Zu 5. Vor und nach der Grafik kommen noch eine paar Zeilen Text, oder ggf. ein Diagramm. Aber auch das lege ich fest (ich bin quasi der Masterchief und kein anderer hat da was zu ändern ) Vielen Dank für Deine Antwort. Bin gespannt was du mir empfehelen kannst. Gruß Matthias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 24. Sep. 2010 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für MatthiasB
Zitat: Original erstellt von MatthiasB: Diese möchte ich jetzt nach Möglichkeit absolut Positionieren, am liebsten über Angabe der Seitennummer, wenn das nicht geht über Zellen oder über den Abstand.
Woher weiß Excel denn, auf welche Seite welches Bild eingefügt werden soll, da ja alles automatisch ablaufen soll? Ist die Seitenreinrichtung bei allen Seiten identisch? Gibt es unterschiedliche Zeilenhöhen auf den einzelnen Seiten? ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MatthiasB Mitglied Technische Berechnung
Beiträge: 145 Registriert: 15.10.2003 Ansys 16, CATIA V5 R21 Dell Precision T3600
|
erstellt am: 24. Sep. 2010 10:06 <-- editieren / zitieren --> Unities abgeben:
|
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 24. Sep. 2010 10:12 <-- editieren / zitieren --> Unities abgeben: Nur für MatthiasB
Hi Matthias, in VBA ist sehr vieles möglich , aber so lange niemand weiß, wie und wo festgelegt ist, welches Bild auf welche Seite eingefügt werden soll, kann auch niemand etwas zum OB und zum WIE sagen. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MatthiasB Mitglied Technische Berechnung
Beiträge: 145 Registriert: 15.10.2003 Ansys 16, CATIA V5 R21 Dell Precision T3600
|
erstellt am: 24. Sep. 2010 10:19 <-- editieren / zitieren --> Unities abgeben:
OK Sorry, meine Antwort vorher war etwas kurz. Ich habe eine Datei mit Abbildungen aus einem Berechungsprogramm. Nun will ich ein Bild nach dem anderen ins Excel übernehmen. Jedes Bild soll auf eine einzelne Seite. Je nach dem Dateinamen des Bildes wird die Reihenfolge festgelegt, d.h. ich möchte festlegen auf welche Seite das jeweilige Bild kommt. Ich kann das natürlich auch über die Zellennummern machen. Da es aber mehere Bilder sein könne (auch mal 50 und mehr) dachte ich hakt es ist einfacher die Sache über Seitennummern zu machen. Ich hoffe das klärt die offenen Punkte. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 24. Sep. 2010 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für MatthiasB
Hi Matthias, das ist zwar schon etwas ausführlicher, aber du musst bedenken, dass nur du allein deine genauen Bedingungen kennst. Wenn ich das richtig verstanden habe, befinden sich in der Datei nicht die Bilder selbst, sondern die Dateinamen der Bilder sind aufgelistet? Sind die Speicherordner der Bilder ebenfalls aufgelistet oder befinden sich die Bilder alle in dem selben Ordner? Angenommen die Bildnamen ohne Ordnernamen stehen in Spalte A, die Bilder liegen alle im Ordner C:\Test und sie sollen jeweils in Spalte B ganz oben am Seitenrand eingefügt werden, dann ginge das z.B. mit folgendem prinzipiellen Code:
Code: Sub BilderEinfuegen() Dim picBild As Picture Dim lngZeile As Long Dim lngZaehler As Long lngZaehler = 1 For lngZeile = 1 To IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count) Set picBild = ActiveSheet.Pictures.Insert("C:\Test\" & Cells(lngZeile, 1)) picBild.Top = Cells(lngZaehler, 2).Top lngZaehler = lngZaehler + 56 '<== Zahl an deinen Seitenumbruch anpassen Next lngZeile Set picBild = Nothing End Sub
------------------ Bis später, Karin [Diese Nachricht wurde von Beverly am 24. Sep. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MatthiasB Mitglied Technische Berechnung
Beiträge: 145 Registriert: 15.10.2003 Ansys 16, CATIA V5 R21 Dell Precision T3600
|
erstellt am: 24. Sep. 2010 11:24 <-- editieren / zitieren --> Unities abgeben:
Hi Karin, vielen Dank erstmal. Du hast mich fast richtig verstanden. Jedes Bild ist in einer einzelnen Datei, die Dateien sind alle in einem Ordner (und zwar immer im gleichen). Die Dateinamen der Bilder sind allerdings nicht immer gleich. Sie haben am Anfang eine Nummer und nach einem Underline kommen noch zwei Buchstaben, die festlegen um was für ein Bild es sich handelt (das steuert nacher die Bildüber- und die Bildunterschriften). Vieleicht kannst Du mir uch noch sagen wie ich am elegantesten die Dateinamen in eine Variable kriege. Das ist auch noch so ein Thema. Vielen Dank schonmal Matthias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 24. Sep. 2010 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für MatthiasB
|
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 24. Sep. 2010 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für MatthiasB
Hi Matthias, sorry, aber irgendwie habe ich Probleme, mit deinen Fragestellungen zurecht zu kommen, denn mit "fast richtig" kann ich nichts anfangen. Es wäre schon sehr hilfreich, wenn du auch für einen Außenstehenden verständlich und nachvollziehbar beschreiben würdest, was nicht richtig funktioniert und welche genauen Bedingungen bei dir vorliegen - ich lehne es nämlich ab, übers Internet auf fremde Rechner zu schauen. Also ist es so, dass die Bildnamen nicht im Tabellenblatt stehen sondern direkt aus dem Ordner ausgelesen werden sollen? Es sollen alle Bilder dieses Ordners eingefügt werden? ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MatthiasB Mitglied Technische Berechnung
Beiträge: 145 Registriert: 15.10.2003 Ansys 16, CATIA V5 R21 Dell Precision T3600
|
erstellt am: 27. Sep. 2010 08:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, @Paulchen: Ich habe die hilfe bemüht, aber zu meinem Problem leider nichts gefunden. @Karin: Genau so habe ich das gemeint. Die Dateien stehen alle in einem Ordner und sollen alle in meine Tabelle. Allerdings in einer speziellen Reihenfolge. Dazu möchte ich sie in ein Feld einlesen und sortieren, um sie dann alle in der richtigen Reihenfolge zu öffnen und einzufügen. Das sortieren soll über die Namen der Dateien laufen, da es spezielle Konventionen gibt für die Benennung der Bilder. Gruß Matthias
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 27. Sep. 2010 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für MatthiasB
Hi Matthias, mit folgendem Code werden alle JPG-Dateien eines definierten Verzeichnisses in das Tabellenblatt geschrieben:
Code: Sub DateienAuflisten() Dim strDateiname As String Dim lngZeile As Long Application.ScreenUpdating = False strDateiname = Dir("C:\Test\*.jpg") lngZeile = 1 With ThisWorkbook.Worksheets("Tabelle1") Do While strDateiname <> "" .Cells(lngZeile, 1) = strDateiname strDateiname = Dir lngZeile = lngZeile + 1 Loop End With Application.ScreenUpdating = True End Sub
Anschließend kannst du sie sortieren und danach mit dem bereits geposteten Code einfügen.------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MarkusK Mitglied
Beiträge: 130 Registriert: 09.08.2002 HP ZBook 15 G2 Intel i7-4810MQ 8-Core 32 GB Ram NVIDIA Quadro K2100M Win 7 Catia V5R24 SP4
|
erstellt am: 30. Sep. 2010 16:15 <-- editieren / zitieren --> Unities abgeben: Nur für MatthiasB
Hallo MatthiasB, man kann über die "Seitenumbrüche" sich die Anzahl der Seiten und die entsprechende Zelle ermitteln. Der Code von unten ermittelt wieviele Umbrüche Horizontal und Vertikal vorhanden sind. Danach wird die Anzahl Seiten ermittelt, und abgefragt auf welcher du das Bild haben möchtest Über die Anzahl der Ümbrüche (horizontal und Vertikal) kann dann die entsprechende Zelle ermittelt werden, in der dann das Bild eingefügt wird. Den Ordner- und Dateiname musst du noch anpassen. Sub Makro2() Dim anzH As Long, H As Long Dim AnzV As Long, V As Long Dim AnzSeiten As Long Dim Seite As Long Dim picBild As Picture Dim r As Range
anzH = ActiveSheet.HPageBreaks.Count AnzV = ActiveSheet.VPageBreaks.Count AnzSeiten = (anzH + 1) * (AnzV + 1) Seite = InputBox("bitte Seite eingeben (max. " & AnzSeiten & ")") If Int(Seite) > 0 And Int(Seite) <= AnzSeiten Then H = (Seite - 1) Mod (anzH + 1) V = Fix((Seite - 1) / (anzH + 1)) Set picBild = ActiveSheet.Pictures.Insert("C:\tmp\bilder\16WZ15.jpg") Set r = Cells(ActiveSheet.HPageBreaks(H).Location.Row, ActiveSheet.VPageBreaks(V).Location.Column) picBild.Top = r.Top picBild.Left = r.Left Set picBild = Nothing Set r = Nothing End If
End Sub ------------------ Gruss Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MatthiasB Mitglied Technische Berechnung
Beiträge: 145 Registriert: 15.10.2003
|
erstellt am: 01. Okt. 2010 08:02 <-- editieren / zitieren --> Unities abgeben:
|