Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Problém s macrom VBA

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Problém s macrom VBA

Autor: luboš

15:23:26 17.04.2011

Dim Xmax As Double
Dim Ymax As Double
Dim Xmin As Double
Dim Ymin As Double

Private Sub MinMax()
Xmin = 9999999
Ymin = 9999999
Xmax = -9999999
Ymax = -999999
Dim xy() As String
Dim str As String
If Dir("D:\gov.txt") = "" Then Exit Sub
Open "D:\gov.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, str
If str <> "" Then
xy = Split(str, " ")
If Val(xy(0)) > Xmax Then Xmax = Val(xy(0))
If Val(xy(0)) < Xmin Then Xmin = Val(xy(0))
If Val(xy(1)) > Ymax Then Ymax = Val(xy(1))
If Val(xy(1)) < Ymin Then Ymin = Val(xy(1))
End If
Loop
MsgBox (Xmax)
MsgBox (Ymax)
MsgBox (Xmin)
MsgBox (Ymin)
Close #1
End Sub

Citovat příspěvek

 

Re: Problém s macrom VBA

Autor: honyk

20:01:07 16.04.2011

Z toho popisu jsem trochu zmateny. Co je vstup a co ma byt vystup?

Pokud jde o to vyzobnout cisla z toho bloku 'alebo', asi bych vsechny ty hocjake symboly nahradil mezerami (Replace) a nasledne orezal mezery z obou koncu (Trim). Teoreticky by mela zbyt dve cisla oddelena mezerou, ktera lze pak nacist pres Split (s mezerou jako oddelovacem).

Citovat příspěvek

 

Problém s macrom VBA

Autor: PeterP88

10:52:54 16.04.2011

Takto ked je vstupny subor, tak to funguje
Vstupny subor :
573277 1279999,573275 1280021,573296 1280022,573296 1280020,

Program(makro) :
Dim pole As Variant
Dim Xmax As Double
Dim Ymax As Double
Dim Xmin As Double
Dim Ymin As Double
Dim x As Double
Dim y As Double
Dim xy As Variant

Sub MinMax()
Xmin = 9999999
Ymin = 9999999
Xmax = -9999999
Ymax = -9999999
Set fso = CreateObject("Scripting.FileSystemObject")
Set txt = fso.OpenTextFile("D:\gov.txt")
soubor = txt.ReadAll
txt.Close
pole = Split(soubor, ",") 'Vytvorí jednorozmerné pole o dažke poetu riadkov podľa čiarky
For i = 0 To UBound(pole) - 1 'Cyklus od prvku y indexom 0 ay po posledný prvok
'Funkcia Ubund vráti hodnotu posledného indexu, kedze 1.prvok má index 0 tak, n-1 je pocet prvkov v poli
xy = Split(pole(i), " ") 'Rozdelí si každý prvok na x a y a tie ďalej porovnáva
If (xy(0) > Xmax) Then
Xmax = xy(0)
End If
If (xy(0) < Xmin) Then
Xmin = xy(0)
End If
If (xy(1) > Ymax) Then
Ymax = xy(1)
End If
If (xy(1) < Ymin) Then
Ymin = xy(1)
End If
Next i
MsgBox (Xmax)
MsgBox (Ymax)
MsgBox (Xmin)
MsgBox (Ymin)
End Sub


Takyto vstupny subor ale mam ja,je to export súradníc CAD programu. Pokial je to v dole uvedenom tvare,
program nevie dobre brať údaje, lebo sa nevie vysporiadať z novym riadkom(CRLF) na koni riadku, a vypisuje predef. hodnoty pretože do podmienky načíta hodnotu prázdneho riadku a potom číslo.

Rozmyslal som na tym ze by som napisal nejako , aby importovaný txt súbor prepísalo do riadku a teda vytvorilo gov2.txt , prípadne ak by to šlo jedoduchšie, že to najskôr rozdelí podla enteru (CRLF) a potom podľa medzery.

Vstupné súbory exortu CAD programu
573261.7084 1279950.8907
573295.1744 1279921.7847
573326.8874 1279944.7907

alebo
573261.7084,1279950.8907
573295.1744,1279921.7847
573326.8874,1279944.7907

alebo
573261.7084,1279950.8907,,
573295.1744,1279921.7847,,
573326.8874,1279944.7907,,

alebo
573261.7084 1279950.8907 ,
573295.1744 1279921.7847 ,
573326.8874 1279944.7907 ,

alebo
, 573261.7084 1279950.8907
, 573295.1744 1279921.7847
, 573326.8874 1279944.7907

alebo
,,573261.7084,1279950.8907
,,573295.1744,1279921.7847
,,573326.8874,1279944.7907

predpony alebo predpony môžu byť hocjaké symboly, ale medzi X a Y moze byt jedine medzera alebo čiarka,ak je medzera.

Vždy však páry súradníc ukladá pod seba.

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: