Net Framework, Office 365, C#, WPF, ASP.Net, Visual Studio, Programmiersprachen PC, C# Programmieren, vba, SQL Server, free source code snippets Antivirus free
#

Download:

Datei 1: Word_Template_Photos_into_Table_Size6_Title_Text.dotm

Word Template: Einfügen von Fotos in mehrspaltige Tabelle
 
Funktion:
Die Vorlage fügt automatisch ausgewählte Fotos oder Bilder in eine Tabelle und passt die maximale Länge eines Bildes auf 6 cm an.
Die Tabelle ist formatierbar in der Vorlage.
Der Button: Insert Photos löscht sich selbst nach dem Ausführen.
Die maximale Kantenlänge kann in der Code-Seite (Alt-F11) eingestellt werden.
 
Name: Word_Template_Photos_into_Table_Size6_Title_Text.dotm
 
Bedienung:
Man startet die Vorlage im Dateiexplorer per Doppelklick. Dadurch wird ein neues Word-Dokument erstellt, welches wie hier dargestellt einen Button: Insert Photos und eine formatierte Tabelle hat.
Durch klicken auf den Button öffnet man den Dateidialog, mit welchem man die Fotos auswählen kann.

 
Im Dateidialog wählt man die Bilder aus, welche importiert werden sollen und startet den Import mit ->Import Images

 
Danach füllt sich das Word Dokument selber mit den Fotos aus.
Die Fotos werden auf 6 cm angepasst und über dem Bild ist eine Zeile für den Titel und unterhalb des Bildes ist eine leere Zeile  für Text

 
 
Die Datei ist hier im Anhang zum Download (rechts oben auf der Webseite)
Die Vorlage wurde getestet unter Windows 10 und mit Microsoft Word 2016 / Office 365
Sie sollte auch unter Office 2010, 2013, 2015 laufen.
 
 
Folgende der vba Code (mit Alt-F11)

Option Explicit On
 
'----< Setup Parameters >----
Const const_Path_Photos_Default = "B:\2017"
Const const_int_maxLength_Photos = 6
 
'----</ Setup Parameters >----
 
Private Sub CommandButton1_Click()
'-----------------< btnBilder_einfuegen_Click() >-----------------
Button_delete()
Insert_Photos()
'-----------------</ btnBilder_einfuegen_Click() >-----------------
End Sub
 
 
 
Private Sub Button_delete()
'-----------------< Button_loeschen() >-----------------
'*Delete Word Button, Option... ActiveX Controls
'< init >
Dim doc As Document
Set doc = Application.ActiveDocument
Selection.MoveStart
'</ init >
 
'----< @Loop: Controls >----
'*loop all InlineShapes
Dim objShape As inlineShape
For Each objShape In doc.InlineShapes
If objShape.Type = wdInlineShapeOLEControlObject Then
'< Is_Control >
If objShape.OLEFormat.ClassType Like "*Button*" Then
Dim objControl As Object
Set objControl = objShape.OLEFormat.Object
If objControl.Caption Like "*Insert*" Then
'*delete Control
objShape.Delete
End If
End If
'< Is_Control >
End If
Next
'----</ @Loop: Controls >----
'-----------------</ Button_loeschen() >-----------------
End Sub
 
 
Sub Insert_Photos()
'-----------------< Fotos_einfuegen() >-----------------
'*Description:
'*This macro inserts photos in a table at column 3 and creates for each picture one row
'*The selection is by a folder dialog and imports the entire folder
'*Table: it searchs for the first table, which has the text: "foto" in the table-header
 
'< get Document >
Dim doc As Document
Set doc = Application.ActiveDocument
'</ get Document >
 
Dim tblPictures As Table
Set tblPictures = doc.Tables(1)


'*Reference Microsoft scripting Runtime http://www.microsoft-programmierer.de/Details?d=1076
 
'------< Insert Pictures From Folder >------
'--< Import-Dialog >--
Dim objFiledialog As FileDialog
Set objFiledialog = Application.FileDialog(msoFileDialogFilePicker)
objFiledialog.AllowMultiSelect = True
objFiledialog.ButtonName = "Import Images"
objFiledialog.Filters.Add "Images Photos", "*.jpg;*.png;*.tiff;*.gif"
objFiledialog.Title = "Select the photos.."
objFiledialog.InitialView = msoFileDialogViewTiles
objFiledialog.InitialFileName = const_Path_Photos_Default
objFiledialog.AllowMultiSelect = True
If Not objFiledialog.Show() = True Then
Exit Sub
End If
'--< Import-Dialog >--
 
 
'-< check >-
'</ Ordner ist leer >
If objFiledialog.SelectedItems().Count = 0 Then
Exit Sub
End If
'</ Ordner ist leer >
'-</ check >-
 
On Error Resume Next
 
'-------< @Loop: Insert all Images >--------
Dim objInlineShape As inlineShape
Dim sFilename As String
Dim iPicture As Integer
iPicture = 0
Dim iCol As Integer
iCol = 0
Dim iFile As Integer
For iFile = 1 To objFiledialog.SelectedItems.Count Step 1
'------< Loop.Item >------
DoEvents
 
'< get selection >
sFilename = objFiledialog.SelectedItems(iFile)
'</ get selection >
 
'< get Extension >
Dim sExtension As String
Dim intLen_Extension As Integer
intLen_Extension = InStrRev(sFilename, ".", -1, vbBinaryCompare)
sExtension = Mid(LCase(sFilename), intLen_Extension)
'</ get Extension >
 
If InStr(1, "*.jpg;*.png;*.tiff;*.gif", sExtension) > 0 Then 'JPG-Datei
'----< IsPhoto >----
iPicture = iPicture + 1
iCol = iCol + 1
 
'-< new Row >-
If iPicture > (tblPictures.Columns.Count * (tblPictures.Rows.Count - 1)) Then
Dim new_Row As Row
Set new_Row = tblPictures.Rows.Add()
iCol = 1
End If
'-</ new Row >-
 
'< set Cell >
Dim cell_Range As Range
Set cell_Range = tblPictures.Cell(iPicture + 1, iCol).Range
cell_Range.Select
Selection.EndKey
'</ set Cell >
 
'< Title Row >
Selection.TypeText Text:=Chr(11)
'</ Title Row >
 
 
DoEvents
 
'refresh Style
tblPictures.Style = tblPictures.Style
 
'< insert Photo after Bookmark >
'*SaveWithDocument:= True to save the linked picture with the document. The default value is False.
'*LinkToFile: True to link the picture to the file from which it was created. False to make the picture an independent copy of the file. The default value is False.
Set objInlineShape = doc.InlineShapes.AddPicture(FileName:=sFilename, LinkToFile:=False, SaveWithDocument:=True)
'</ insert Photo after Bookmark >
 
'< scale >
objInlineShape.LockAspectRatio = msoTrue
If objInlineShape.Width > objInlineShape.Height Then
objInlineShape.Width = CentimetersToPoints(const_int_maxLength_Photos) 'in Centimeters
Else
objInlineShape.Height = CentimetersToPoints(const_int_maxLength_Photos) 'in Centimeters
End If
'</ scale >
 
'--< replace as png >--
'*reduce memory 1 MB to 1kb
'< cut >
objInlineShape.Select
Selection.Cut
'</ cut >
 
'*pasteBitmap is much smaller
Selection.PasteSpecial Link:=False, DataType:=wdPasteBitmap, Placement:=wdInLine, DisplayAsIcon:=False, IconLabel:="Imported Photo"
'--</ replace as png >--
 
'< Text Row >
Selection.TypeText Text:=Chr(11)
'</ Text Row >
 
DoEvents
 
If Err.Number <> 0 Then
MsgBox Err.Description
Err.Clear
End If
'----</ Insert Image >----
 
'----</ IsPhoto >----
End If
Next
'----</ @Loop: all Files >----
'------</ Insert Pictures From Folder >------
 
 
 
 
'-----------------< Fotos_einfuegen() >-----------------
End Sub
 
 

 
 
Mobile
»
Word Automatische Foto Dokumentation Vorlage 1 Spaltig 2 Fotos sortiert mit BildNamen
»
Foto Vorlage 4-Spaltig
»
Word Foto Vorlage für Fotodokumentationen
»
Word Makro: Alle Fotos einfügen von Eingabe-Ordner mit Makro
»
Word Vorlage: Kompletten Foto Ordner einlesen nach Basispfad und Ordnername
»
Word Vorlage: Foto-Dokumentation als Foto-Verzeichnis einlesen
»
Word Vorlage: Foto-Dokumentation
»
Word Vorlage: Foto Verzeichnis in ein Word Dokument einlesen
»
Word Vorlage: Einfügen von Fotos in mehrspaltige Tabelle
»
Word Makro: Fotos einfügen mit Auswahl Dialog mit Word Download-Datei

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Raimund.Popp@Microsoft-Programmierer.de