Discussion:
[Win 8, Exc.2007] Makro aus XP Excel 97 für Exc 2007 ändern.
(zu alt für eine Antwort)
E.Wöger
2014-09-16 00:17:30 UTC
Permalink
Hallo NG,
Jetzt brauch ich wieder mal Euere Hilfe.
Ein Makro, das in Excel 97 mit XP erstellt wurde und gut funktioniert soll auf Excel 2007 mit Win 8 transponiert werden.
Leider kann ich auf diesen Win 8-PC nur über TeamViewer zugreifen.

Bis zur Variablen-Wertzuweisung für Re geht's gut. Hier soll die Variable Re den jeweiligen Wert aus Zelle F16 als dreistellige Zahl ( 001 bis 009 , 010 bis 099, 100 bis 999 ) übernehmen. In der jetzigen Schreibweise kommt jedoch die Fehlermeldung: Fehler beim Kompilieren. Projekt oder Bibliothek nicht auffindbar

Die letzte Anweisung " Save As. . ." verlangt ein definiertes Fileformat für eine Excel-Tabelle mit Makro und ".xls".
Ich hab zwar gelesen, daß da ev. FileFormatNum = 56 stehen könnte, aber da bin ich am Ende meiner Kenntnisse und bitte um einen Vorschlag für diesen letzten Abschnitt
Die entsprechenden Dateien werden aus einem Ordner "Rechnungen2" auf dem Desktop aufgerufen und werden bei XP auch ohne definitive Pfadangabe wieder dorthin gespeichert.

Hier mein ganzes Makro :
---
Option Explicit

Sub DatenHolen()
'
' DatenHolen Makro
' Makro am 03.09.2014 von a aufgezeichnet
'

'
Dim Re As String
Dim Jhr As String
Dim ReNr As String
Dim Na As String

Windows("001_RechnNummern.xls").Activate ' hier sind die betreffenden Zellen vorher schon manuell markiert
Selection.Copy

Windows("003_Formular Massagetherapie.xls").Activate
Range("A1").Select
ActiveSheet.Paste

Range("A1").Select
Selection.Copy

Range("F16").Select
ActiveSheet.Paste

Range("B1:E1").Select
Application.CutCopyMode = False
Selection.Copy
Range("A10").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True

Range("A20").Select
Application.CutCopyMode = False

'Re = Range("F16").NumberFormat = "###" ' für exc 2007 andere Schreibweise erforderich
'Re = Format(Range("F16").Value, "000") ' Fehlermeldung

Jhr = Range("G16").Value

Na = Range("C1").Value

ReNr = "0" & Re & "-" & Jhr & "-" & Na & ".xls" ' Wenn Re dreistellig wäre, könnte hier die vorlaufende "0" entfallen

ActiveWorkbook.SaveAs FileName:= _
ReNr & ".xls", FileFormat:= _
xlExcel9795, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _ ' richtiges Fileformat erforderlich
False, CreateBackup:=False

End Sub
---

Für Hilfe im Voraus vielen Dank.

Erich Wöger
Claus Busch
2014-09-16 06:21:00 UTC
Permalink
Hallo Erich,
Post by E.Wöger
Bis zur Variablen-Wertzuweisung für Re geht's gut. Hier soll die Variable Re den jeweiligen Wert aus Zelle F16 als dreistellige Zahl ( 001 bis 009 , 010 bis 099, 100 bis 999 ) übernehmen. In der jetzigen Schreibweise kommt jedoch die Fehlermeldung: Fehler beim Kompilieren. Projekt oder Bibliothek nicht auffindbar
Die letzte Anweisung " Save As. . ." verlangt ein definiertes Fileformat für eine Excel-Tabelle mit Makro und ".xls".
Ich hab zwar gelesen, daß da ev. FileFormatNum = 56 stehen könnte, aber da bin ich am Ende meiner Kenntnisse und bitte um einen Vorschlag für diesen letzten Abschnitt
Die entsprechenden Dateien werden aus einem Ordner "Rechnungen2" auf dem Desktop aufgerufen und werden bei XP auch ohne definitive Pfadangabe wieder dorthin gespeichert.
du überlässt hier vieles dem Zufall. Du solltest ordentlich
referenzieren und dafür das Activate, Select und Selection weg lassen.
Einer Variablen kannst du kein NumberFormat zuweisen. Weise F16 dieses
Format zu und hole dann Re als Range("F16").Text
Das Fileformat wird nicht benötigt.
Passe folgenden Code auf deine Verhältnisse hin an:

Sub DatenHolen()

Dim Re As String
Dim Jhr As String
Dim ReNr As String
Dim Na As String

With Workbooks("003_Formular Massagetherapie.xls")


Workbooks("001_RechnNummern.xls").Sheets("Tabelle1").Range("A4:C4").Copy
_
Destination:=.Sheets("Tabelle1").Range("A1")

With Sheets("Tabelle1")
.Range("A1").Copy .Range("F16")
.Range("F16").NumberFormat = "000"

.Range("B1:E1").Copy
.Range("A10").PasteSpecial Paste:=xlAll, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True

Re = .Range("F16").Text
Jhr = .Range("G16")
Na = .Range("C1").Value
End With

ReNr = Re & "-" & Jhr & "-" & Na
.SaveAs Filename:=ReNr & ".xls"

End With
End Sub


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Claus Busch
2014-09-16 07:52:45 UTC
Permalink
Hallo Erich,
bzw. wenn alle Daten aus Workbook 001_Rechnungsnummern geholt werden:

Sub DatenHolen()

Dim Re As String
Dim Jhr As String
Dim ReNr As String
Dim Na As String

With Workbooks("003_Formular Massagetherapie.xls")
With .Sheets("Tabelle1")

Workbooks("001_RechnNummern.xls").Sheets("Tabelle1") _
.Range("A1:D10").Copy .Range("A1")

Workbooks("001_RechnNummern.xls").Sheets("Tabelle1") _
.Range("A1").Copy .Range("F16")
.Range("F16").NumberFormat = "000"

Workbooks("001_RechnNummern.xls").Sheets("Tabelle1") _
.Range("B1:E1").Copy
.Range("A10").PasteSpecial Paste:=xlAll, Transpose:=True

Re = .Range("F16").Text
Jhr = workbooks("001_RechnNummern.xls").Sheets("Tabelle1").Range("G16")
Na = Workbooks("001_RechnNummern.xls").Sheets("Tabelle1").Range("C1")
End With

ReNr = Re & "-" & Jhr & "-" & Na
.SaveAs Filename:=ReNr & ".xls"

End With
End Sub



Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Lesen Sie weiter auf narkive:
Loading...