Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Ausgabe eines Excel VBA-Makros in eine .txt-Datei umleiten

Frage Microsoft Microsoft Office

Mitglied: jschikora

jschikora (Level 1) - Jetzt verbinden

04.08.2011 um 15:25 Uhr, 4209 Aufrufe, 2 Kommentare

Hallo zusammen,

ich habe folgendes Problem und hoffe ihr könnt mir weiterhelfen. Ich habe in einer Excel-Tabelle mehrere Spalten mit Parametern und brauche von diesen Parametern alle Kombinationen. Ein VBA-Skript das mir diese Kombinationen erzeugt habe ich schon geschrieben. Das Problem ist jetzt, dass Excel 2003 "nur" 65536 Zeilen hat, ich aber mittlerweile mehr Kombinationen brauche. Das Makro funktioniert also nicht mehr.

Gibt es eine Möglichkeit die Ausgabe des Makros direkt in eine Textdatei, zum Beispiel auf dem Desktop, umzuleiten, damit ich das Platzproblem umgehe. Der Code für das bisherige Kombinations-Makro sieht so aus:

01.
Sub combinations() 
02.
 
03.
Dim c1() As Variant 
04.
Dim c2() As Variant 
05.
Dim c3() As Variant 
06.
Dim c4() As Variant 
07.
Dim c5() As Variant 
08.
Dim c6() As Variant 
09.
Dim out() As Variant 
10.
Dim j, k, l, m, n, o, p As Long 
11.
 
12.
 
13.
Dim col1 As Range 
14.
Dim col2 As Range 
15.
Dim col3 As Range 
16.
Dim col4 As Range 
17.
Dim col5 As Range 
18.
Dim col6 As Range 
19.
Dim out1 As Range 
20.
 
21.
 
22.
Set col1 = Range("A2", Range("A2").End(xlDown)) 
23.
Set col2 = Range("B2", Range("B2").End(xlDown)) 
24.
Set col3 = Range("C2", Range("C2").End(xlDown)) 
25.
Set col4 = Range("D2", Range("D2").End(xlDown)) 
26.
Set col5 = Range("E2", Range("E2").End(xlDown)) 
27.
Set col6 = Range("F2", Range("F2").End(xlDown)) 
28.
 
29.
c1 = col1 
30.
c2 = col2 
31.
c3 = col3 
32.
c4 = col4 
33.
c5 = col5 
34.
c6 = col6 
35.
 
36.
Set out1 = Range("H2", Range("M2").Offset(UBound(c1) * UBound(c2) * UBound(c3) * UBound(c4) * UBound(c5) * UBound(c6))) 
37.
out = out1 
38.
 
39.
j = 1 
40.
k = 1 
41.
l = 1 
42.
m = 1 
43.
n = 1 
44.
o = 1 
45.
p = 1 
46.
 
47.
Do While p <= UBound(c6) 
48.
    Do While o <= UBound(c5) 
49.
        Do While n <= UBound(c4) 
50.
            Do While j <= UBound(c3) 
51.
                Do While k <= UBound(c2) 
52.
                    Do While l <= UBound(c1) 
53.
                        out(m, 1) = c1(l, 1) 
54.
                        out(m, 2) = c2(k, 1) 
55.
                        out(m, 3) = c3(j, 1) 
56.
                        out(m, 4) = c4(n, 1) 
57.
                        out(m, 5) = c5(o, 1) 
58.
                        out(m, 6) = c6(p, 1) 
59.
                        m = m + 1 
60.
                        l = l + 1 
61.
                    Loop 
62.
                    l = 1 
63.
                    k = k + 1 
64.
                Loop 
65.
                k = 1 
66.
                j = j + 1 
67.
            Loop 
68.
            j = 1 
69.
            n = n + 1 
70.
        Loop 
71.
        n = 1 
72.
        o = o + 1 
73.
    Loop 
74.
    o = 1 
75.
    p = p + 1 
76.
Loop 
77.
 
78.
out1.Value = out 
79.
End Sub 
80.
 
Mitglied: bastla
04.08.2011 um 15:52 Uhr
Hallo jschikora!

Du könntest vor Zeile 46 das Trennzeichen zwischen den einzelnen Werten festlegen sowie die Zieldatei erstellen mit
01.
Delim = vbTab 'Trennzeichen zwischen den Spalten 
02.
 
03.
Set fso = CreateObject("Scripting.FileSystemObject") 
04.
Set Datei = fso.CreateTextFile(CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Ausgabe.txt")
und dann die Zeilen 53 bis 58 durch
Datei.WriteLine c1(l, 1) & Delim & c2(k, 1) & Delim & c3(j, 1) & Delim & c4(n, 1) & Delim & c5(o, 1) & Delim & c6(p, 1)
ersetzen.

Das Testen überlasse ich Dir ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
05.08.2011 um 11:32 Uhr
Hallo jschikora!

Den Anfangsteil könnte man etwas vereinfachen:
01.
    Set col1 = Range("A2", Range("A2").End(xlDown)) 
02.
    Set col2 = Range("B2", Range("B2").End(xlDown)) 
03.
    Set col3 = Range("C2", Range("C2").End(xlDown)) 
04.
    Set col4 = Range("D2", Range("D2").End(xlDown)) 
05.
    Set col5 = Range("E2", Range("E2").End(xlDown)) 
06.
    Set col6 = Range("F2", Range("F2").End(xlDown)) 
07.
     
08.
    Set cols = Union(col1, col2, col3, col4, col5, col6) 
09.
     
10.
    For Each cell In cols.Cells 
11.
       'durläuft alle Zellen von col1 - col6 
12.
    Next 
13.
     
14.
    Set out1 = Range("H2", Range("M2").Offset(cols.Cells.Count - 1))
Gruß Dieter
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
gelöst Excel VBA - Inhalte und Dateiname von txt-Dateien automatisch in Excel importieren (2)

Frage von Booster07 zum Thema Microsoft Office ...

VB for Applications
VBA Excel Dateien zusammenfassen (3)

Frage von cberndt zum Thema VB for Applications ...

Linux
gelöst Find Ausgabe in formatierte text Datei umleiten (5)

Frage von MadM4x zum Thema Linux ...

Microsoft Office
Excel 2010 Doc Properties ohne Makros (1)

Frage von arduino zum Thema Microsoft Office ...

Neue Wissensbeiträge
Multimedia

Raspberry Pi als Digital-Signage-Computer

(1)

Information von BassFishFox zum Thema Multimedia ...

Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(15)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (31)

Frage von McLion zum Thema Router & Routing ...

Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail (24)

Frage von ahstax zum Thema Visual Studio ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Windows Netzwerk
Netzwerk Neustrukturierung (15)

Frage von IT-Dreamer zum Thema Windows Netzwerk ...