Announcement

Collapse
No announcement yet.

Visual Studio 2010 (VB) und Excel-Zellen lesen/schreiben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Visual Studio 2010 (VB) und Excel-Zellen lesen/schreiben

    Hallo Forumler,
    ich hoffe, ich bin richtig hier...
    Ich möchte von Visual Studio (VB) aus auf eine bestimmte Zelle in einem geöffneten Excel-WB auf einem bestimmten Excel-Sheet zugreifen.
    In VBA kann ich das mit "Cells(1,1)". In Visual Studio habe ich bislang nur "Range("A1")" gefunden.
    Gibt es in VB keine Möglichkeit mit der 1,1-Schreibweise statt mit der A1-Schreibweise auf Zellen zuzugreifen? Oder war ich bloß zu doof es zu finden (ich such' mir schon seit zwei Tagen einen Wolf).
    Ich hoffe, Ihr könnt mir helfen..
    Danke und Grüße
    Regulator

  • #2
    Also hier hat das worksheet auch eine Cells Property. Hat die Dein Worksheet Objekt nicht?

    Comment


    • #3
      Das Worksheet-Objekt hab' ich, aber Cell gibt es nicht und Cells gibt ein Range-Objekt zurück, das das gesamte Blatt enthält...
      Wenn Du auf Deinen Link klickst, dann gibt's die Erklärungen, dass VB diese Property nicht unterstützt ;-)

      Comment


      • #4
        Hier isses aber in VB.NET. 99,99% der Sachen die in C# gehen, gehen auch in VB, das würde ich nicht als Kriterium gelten lassen.

        Comment


        • #5
          In der Überschrift des Links ist VS2010 aber leider nicht aufgeführt.
          In VS2008 hab' ich's auch noch so hingekriegt. Mein neuer ArbGeber hat aber "nur" VS2010... Und da hab' ich's halt nicht gefunden. Und das Portieren der VS2008-Anwendung nach VS2010 hat genau an der Stelle halt den Fehler verursacht (und auch keinen Vorschlag für eine Änderung des Zugriffs gemacht - außer "Range").
          Gibt's denn ein Code-Snippet, das die 1,1-Schreibweise in eine A1-Schreibweise umwandelt?

          Comment


          • #6
            dann gibt's die Erklärungen, dass VB diese Property nicht unterstützt ;-)
            ... oder das es einfach kein entsprechendes Codebeispiel gibt. Du musst den Satz schon ganz lesen Und wenn man merkt das der Link ins C# Programmierhandbuch führt kann man sich denken das die 2.te Möglichkeit wahrscheinlicher ist.

            In VS2008 hab' ich's auch noch so hingekriegt. Mein neuer ArbGeber hat aber "nur" VS2010... Und da hab' ich's halt nicht gefunden. Und das Portieren der VS2008-Anwendung nach VS2010
            Ich habe VS2010 und die Beispiele mit Cells funktionieren. Wenn du ein Projektimport von VS2008 nach VS2010 gemacht hast welche Office Interop Assembly benutzt du denn jetzt. Noch die von VS2008 oder die von VS2010 oder eine selbstgemachte oder was gekauftes? Und für welche Officeversion war diese Interop Assembly ursprünglich gedacht?

            Comment


            • #7
              Ich hab' für Excel2010 (auch beim neuen AG installiert) importiert. Kannst Du mir mal ein Stück überführten Code posten, das ich dann versuche morgen ins Projekt zu implementieren?!

              Comment


              • #8
                [Highlight=VB.Net]Public Class Programm
                Public Shared Sub Main(ByVal args As String())
                Dim excelApp As New Microsoft.Office.Interop.Excel.Application()
                excelApp.Visible = True
                excelApp.Workbooks.Add()

                Dim workSheet As Microsoft.Office.Interop.Excel._Worksheet = excelApp.ActiveSheet
                workSheet.Cells(1, "A") = "Hallo"
                workSheet.Cells(1, "B") = "Welt"
                End Sub
                End Class[/Highlight]

                Habe nur die die Referenz auf die bei VS2010 beiliegende 'Microsoft.Office.Interop.Excel' Assembly hinzugefügt und mich an die Hilfe gehalten.

                Comment


                • #9
                  Danke für den Code...
                  Aber sehe ich das richtig, dass auch hier mit Cells(1, "B") = "Welt" die A1-Schreibweise genutzt wird?!
                  Ich berechne mit Hilfe von Formeln im VB-Code den Zellbezug
                  (z.B. cells(i+1,3*k+3))...
                  Das ist mit der von Dir geposteten Zeile nicht wirklich zu machen... oder?

                  Comment


                  • #10
                    Du brauchst mehr Mut zum ausprobieren. Ehrlich kannst nix kaputt machen

                    [Highlight=VB.Net]Public Class Programm
                    Public Shared Sub Main(ByVal args As String())
                    Dim excelApp As New Microsoft.Office.Interop.Excel.Application()
                    excelApp.Visible = True
                    excelApp.Workbooks.Add()

                    Dim x As Integer = 1
                    Dim y As Integer = 2

                    Dim workSheet As Microsoft.Office.Interop.Excel._Worksheet = excelApp.ActiveSheet
                    workSheet.Cells(x, y - 1) = "Hallo"
                    workSheet.Cells(x, y) = "Welt"
                    End Sub
                    End Class[/Highlight]

                    Geht genauso.

                    Comment


                    • #11
                      Geil... Ich werd's morgen sofort ausprobieren.
                      Wenn das klappt, dann werde ich Dich in meine Nachtgebete einschließen
                      Wenn nicht, liest Du mich morgen wieder im Forum
                      Auf jeden Fall: Vielen Dank!!!

                      Comment


                      • #12
                        Und was ich noch sagen wollte:
                        Danke dafür, dass nicht einer geantwortet hat mit: "Warum machst Du das so? Mach's doch ganz anders."
                        Das finde ich ausgesprochen klasse (bin ich aus Foren zu anderen Themen leider so nicht gewohnt)!

                        Comment


                        • #13
                          Eigentlich sind wir ab und zu auch so (zumindest ich ). Aber das war wirklich einfach zu beantworten und die Frage war so gewählt dass man nicht anders antworten konnte. Oft ist aber auch so, dass man an der Fragestellung schon merkt dass sich der OP in eine Lösung verrennt die einfach viel viel einfacher gelöst werden kann oder die Lösung für das Problem an einer ganz anderen Stelle zu suchen ist.
                          Ich bin immer dafür den Leuten was beizubringen und nicht nur irgendwelche Symptome zu fixen, nur damit er 2 Tage später über das nächste Problem fällt.

                          Comment


                          • #14
                            Ich hab's ausprobiert und es geht. Meine Fehler:
                            Erstens:
                            [highlight=vbnet]Public xlsapp As Excel.Application
                            Public xlswb As Excel.Workbook
                            Public xlssheet As Excel.Worksheet
                            Public xlsrange As Excel.Range
                            xlsapp = New Excel.Application
                            xlswb = xlsapp.Workbooks.Open(Pfad & "\Datei.xlsx")[/Highlight]
                            hatte ich deklariert.
                            Danach im Lauf des Codes
                            [highlight=vbnet]xlssheet = xlswb.Worksheets("Daten")
                            xlssheet.Activate()[/highlight]
                            Da ich dachte, dass "Worksheet" ein Member von "Workbook" ist...
                            Falsch gedacht... Ist ein Member von "Application", so dass es heißen muss:
                            [highlight=vbnet]xlssheet = xlsapp.Worksheets("Daten")
                            xlssheet.Activate()[/highlight]
                            Zweitens:
                            Wenn man in der Entwicklungsumgebung schreibt
                            [highlight=vbnet]Variable = xlssheet.Cells(1, i * 5 + 2).[/highlight]
                            bietet einem die Hilfe (komm nich auf das richtige Wort) nach dem Punkt nur "Equals, GetHashCode, GetType, ReferenceEquals und ToString" an.
                            "Value" ist nicht im Angebot, funktioniert aber...
                            Nochmals vielen Dank für die Hilfe und mein Nachtgebet wird erweitert

                            Comment

                            Working...
                            X