Wie füge ich von meinem Computer Fotos zu bestimmten Zellen in meinem Excel-Arbeitsblatt hinzu?

1798
John Nash

Dies ist der Code, den ich verwendet habe:

Private Sub Image1_Click() Range("C1").Select Application.Dialogs(xlDialogInsertPicture).Show End Sub   Private Sub Image2_Click() Range("D1").Select Application.Dialogs(xlDialogInsertPicture).Show End Sub  Private Sub Image3_Click() Range("E1").Select Application.Dialogs(xlDialogInsertPicture).Show End Sub  Private Sub Image4_Click() Range("F1").Select Application.Dialogs(xlDialogInsertPicture).Show End Sub  Private Sub Image5_Click() Range("G1").Select Application.Dialogs(xlDialogInsertPicture).Show End Sub  Private Sub Image6_Click() Range("K1").Select Application.Dialogs(xlDialogInsertPicture).Show End Sub 

Ich möchte das genau machen:

  • Wenn ich in meinem Benutzerformular auf die Bildwerkzeuge klicke, wenn Sie ein Foto hinzufügen, wird es wie folgt aussehen: (1)
  • Wenn ich zwei Fotos hinzufüge, wird es automatisch aus zwei Teilen bestehen und die Größe ist wie folgt: (2)
  • Wenn ich drei Fotos hinzufüge, wird dies automatisch dreiteilig und die Größe ist wie folgt: (3)

Ich möchte Fotos hinzufügen, wenn ich auf die Bildwerkzeuge in meinem Benutzerformular klicke, sie erscheinen in meinen Excel-Arbeitsbereich-Zellen, die ich möchte (bestimmte Zellen, die ich möchte). Ich möchte vor allem Fotos zwischen 1-5 Zeilen und C-L-Spalten hinzufügen, und ihre Größe wird automatisch gleich sein.

Ich habe diesen Code nur verwendet, um hinzuzufügen, dass ich nicht tun kann, was ich gesagt habe:

Was ich machen will; was ich vorhabe zu tun Wenn ich diesen Code verwendet habe, sind Fotos in bestimmten Zellen nicht gleich, wenn ich will und nicht in einer bestimmten Größe sein soll, die ich möchte (links sind meine Benutzerform- und Bildwerkzeuge, auf die ich klicke. Rechts ist, wie das Skript Fotos zu Arbeitsblättern hinzufügt )

Was ich getan habe

Ich muss ihre Größe automatisch festlegen. Bei Katzs Skript kann ich sie zu bestimmten Zellen hinzufügen, aber wenn ich ein Foto hinzufüge, fülle es nicht die gewünschten Zellen oder Wenn ich zwei Fotos hinzufüge, füge ich die Zellen nicht automatisch hinzu. Als Ergebnis fügt dieses Skript der Zelle und der Größe Fotos hinzu, die ich zum Skript geschrieben habe. Beheben Sie sie nicht automatisch als gleichwertig in bestimmten Zellen. (Ich möchte gerne das erste Foto machen, aber ich kann bei diesem Skript das zweite Foto machen.)

Private Sub Image1_Click() Dim fileName1 As Variant fileName1 = Application.GetOpenFilename(filefilter:="Tiff Files(*.tif;*.tiff),*.tif;*.tiff,JPEG Files (*.jpg;*.jpeg;*.jfif;*.jpe),*.jpg;*.jpeg;*.jfif;*.jpe,Bitmap Files(*.bmp),*.bmp", FilterIndex:=2, Title:="Choose picture", MultiSelect:=False) If fileName1 = False Then 'if cancel pressed Exit Sub Else ActiveWorkbook.Sheets("Coursebooking").Select Range("A4").Select 'choose your start range Dim picture1 As Object Set picture1 = ActiveWorkbook.Sheets("Coursebooking").Pictures.Insert(fileName1) With picture1 .Top = Range("A4").Top 'set as needed .Left = Range("A4").Left 'set as needed .Width = 600 'set as needed .Height = .Width * 3 / 4 'set as needed End With End If End Sub 
1
Ich habe einen Screenshot, aber es ist 10 Ruf, um ihn hier hinzuzufügen John Nash vor 9 Jahren 0
Dies ist auch keine Seite "Bitte schreibe mir ein Skript". Wenn Sie Probleme mit Ihrem Skript haben, die sich nicht so verhalten, wie es sollte, und Sie nicht herausfinden können, warum? Derzeit gibt es kein Skript. Können Sie Ihre Frage bearbeiten und das VBA-Skript posten, das Sie geschrieben haben? LPChip vor 9 Jahren 0
Ich füge jetzt zum Code @LPChip hinzu John Nash vor 9 Jahren 0
Bitte posten Sie den gesamten Code, nicht nur den Code, von dem Sie glauben, dass er den Fehler verursacht. LPChip vor 9 Jahren 0
Mit diesem Code füge ich einfach Fotos hinzu. Aber ich kann nicht reparieren, welche Zellen ich hinzufügen werde, und ich kann ihre Größe auch nicht festlegen. Ich glaube, ich habe das klar gesagt und ich zeige auch, was ich in Link gemeint habe. @LPChip John Nash vor 9 Jahren 0
Ich bin neu bei SuperUser, aber ist es falsch von mir, Antworten zu "Schreib mir ein Skript" zu posten, weil ich es mag, sie zu rätseln? Sollte ich aufhören, weil es schlechte Fragen fördert? Engineer Toast vor 9 Jahren 1

1 Antwort auf die Frage

2
Engineer Toast

Soweit ich Ihre Frage verstehe, fehlt Ihnen ein Schlüsselelement: Bereiche haben Eigenschaften wie "Links", "Oben", "Rechts" und "Breite", genau wie Bilder. Hier ist eine Funktion, die ein RangeObjekt als Parameter übernimmt, den Benutzer zur Auswahl von Bildern auffordert und die Bilder dann in diesen Bereich einfügt. Schlüsselpunkt: Basierend auf Ihrer Anfrage wird es so geschrieben, dass das Seitenverhältnis nicht beibehalten wird, sodass Bilder gestaucht oder gestreckt wirken können.

Option Explicit Sub testImportPicturesToRange() ImportPicturesToRange Range("B3:H10") End Sub Function ImportPicturesToRange(rngTarget As Range)  'Declaration Dim picFormats As String, picPaths, picPath, pic Dim i As Long, numPics As Long, picWidth As Long  'Select the pictures to import picFormats = "*.gif; *.jpg; *.bmp; *.png; *.tif" picPaths = Application.GetOpenFilename("Pictures (" & picFormats & ")," & picFormats,, "Select Picture to Import",, True)  'Exit if user clicked Cancel If TypeName(picPaths) = "Boolean" Then Exit Function  'Initialize i = 0 numPics = 0 For Each picPath In picPaths If picPath <> False Then numPics = numPics + 1 Next picWidth = rngTarget.Width / numPics  'Import the pictures On Error Resume Next For Each picPath In picPaths If picPath <> False Then Set pic = ActiveSheet.Pictures.Insert(picPath) pic.ShapeRange.LockAspectRatio = msoFalse pic.Top = rngTarget.Top pic.Left = rngTarget.Left + (i * picWidth) pic.Height = rngTarget.Height pic.Width = picWidth i = i + 1 End If Next  'Cleanup Set pic = Nothing Set picPath = Nothing Set picPaths = Nothing  End Function 



UPDATE: Von dem, was ich in Ihrer Frage sehen kann, denke ich , dass Sie dies so implementieren möchten.

Private Sub Image1_Click() ImportPicturesToRange Range("C1") End Sub 
Wie füge ich dem Skript Bild-Klick-Tools hinzu? @Engineer Toast John Nash vor 9 Jahren 0
Ich habe meine Antwort aktualisiert, um ein Beispiel basierend auf dem Beispielcode in Ihrer Frage anzuzeigen. Engineer Toast vor 9 Jahren 0