질문
내공100
비주얼 베이직 2017 질문

간단한 음악나오는 exe파일을 하나만들엇는데요


리소스 폴더 가서 폴더 전체 열기하니까


디자인 수정하고싶어서 다시연건데


디자인이 프로그래밍언어로 나오더라고요


ui로 나오는게 아니라;;


어떻게 ui로 나오게해서 수정하죠?



====================================================================================

토슈이 님 답변

 
지존채택답변수 415베이직27위, C#39위
VisualStudio2017에서 작업을 하셨다면,
솔류션 익스플로러에서 폼을 더블클릭 하시면 디자인 수정 가능합니다.
첨부 이미지



VB, VBA

사진처럼 해당날짜의 조건에 맞는통계를 구하는 매크로를 넣고싶은데요

버튼을 누르면 통계부분에
< 일자, 주/야,이름 >이렇게 세조건이 맞는 셀의 개수가 들어갔으면 합니다

김-1
박-1 
이것도 김, 박에 같이 포함됩니다

도와주세요~!

첨부 이미지





일본어판 윈도우라서... 한글로 인식을 못하므로 보기를 조금 바꿔서 했습니다.

첨부 이미지




소스는 아래와 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Sub ボタン1_Click()
 
For i = 2 To 10000 Step 1
 
    key1 = ActiveSheet.Cells(i, 1).Value
    Key2 = ActiveSheet.Cells(i, 2).Value
    key3 = ActiveSheet.Cells(i, 3).Value
    
    If key1 = "" Then
        Exit For
    Else
        If key1 = "2018/01/18" Then
            If Key2 = "A" Then
                If InStr(key3, "kim"> 0 Then
                    ActiveSheet.Cells(28).Value = ActiveSheet.Cells(28).Value + 1
                Else
                    ActiveSheet.Cells(38).Value = ActiveSheet.Cells(38).Value + 1
                End If
            Else
                If InStr(key3, "kim"> 0 Then
                    ActiveSheet.Cells(48).Value = ActiveSheet.Cells(48).Value + 1
                Else
                    ActiveSheet.Cells(58).Value = ActiveSheet.Cells(58).Value + 1
                End If
            End If
        End If
    End If
Next i
 
End Sub
 
cs




안녕하세요.

OpenFileDialog 를 이용해서 파일을 선택하고, 복사하는 방법을 간단하게 설명합니다.

Validation 은 따로 설정하기 않기때문에

파일이 선택되어지지 않은 상황에서의 에러 혹은 경고 메세지에 대해서는 양해 부탁드립니다.


먼저 기동하고난 후의 화면입니다.

복사할 대상 폴더로 이미 C: 의 test 폴더를 지정해둔 상황입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Public Class Form1
 
    ''' <summary>
    ''' 파일을 선택합니다.
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    Private Sub btnFileSelect_Click(sender As Object, e As EventArgs) Handles btnFileSelect.Click
 
        Dim OpenFileDialog1 As New OpenFileDialog()
        OpenFileDialog1.Title = "파일선택 타이틀입니다."
 
        ' 초기 디렉토리를 설정합니다.
        OpenFileDialog1.InitialDirectory = "C:\"
        ' 초기 선택파일명을 선택합니다.
        OpenFileDialog1.FileName = "초기파일명"
        ' 파일의 필터를 설정합니다.
        OpenFileDialog1.Filter = "텍스트파일|*.txt;*.log|전체파일|*.*"
        ' 필터의 초기설정입니다. 
        OpenFileDialog1.FilterIndex = 1
        ' 다이얼로그를 닫을때 마지막 설정을 유효로 하겠다는 설정입니다.
        OpenFileDialog1.RestoreDirectory = True
        ' 복수파일을 선택가능하게 합니다.
        OpenFileDialog1.Multiselect = False
        ' HELP 버튼을 표시합니다.
        OpenFileDialog1.ShowHelp = True
        ' 읽기전용으로 표시합니다.
        OpenFileDialog1.ShowReadOnly = True
        ' 체크박스를 표시합니다.
        OpenFileDialog1.ReadOnlyChecked = True
        ' 존재하지않는 파일을 선택했을때 경고를 표시합니다.
        'OpenFileDialog1.CheckFileExists = True
        ' 존재하지않는 경로를 지정했을때 경고를 표시합니다.
        'OpenFileDialog1.CheckPathExists = True
        ' 확장자가 존재하지 않는경우에는 확장자를 자동으로 붙여줍니다.
        'OpenFileDialog1.AddExtension = True
        ' 유효한 Win32 파일명만을 입력받게합니다.
        'OpenFileDialog1.ValidateNames = True
        ' 다이얼로그를 표시하고 OK 선택시에만 선택한 파일을 표시합니다.
        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
            TextBox1.Text = OpenFileDialog1.FileName
            ' 파일이 복수선택 되었을때는 아래의 로직이 돌아가며 뿌려줍니다.
            'For Each nFileName As String In OpenFileDialog1.FileNames
            '    MessageBox.Show(nFileName)
            'Next nFileName
        End If
        ' 처리가 끝났으므로 파기합니다.
        OpenFileDialog1.Dispose()
    End Sub
    ''' <summary>
    ''' 파일을 지정된곳으로 복사합니다.
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    Private Sub btnFileCopy_Click(sender As Object, e As EventArgs) Handles btnFileCopy.Click
        ' 파일명을 취득합니다.
        Dim fileName As String = System.IO.Path.GetFileName(TextBox1.Text)
        ' 파일을 복사합니다.
        System.IO.File.Copy(TextBox1.Text, TextBox2.Text & fileName, True)
        ' 파일을 이동합니다.
        'System.IO.File.Move("C:\test\1.txt", "C:\test\3.txt")
    End Sub
End Class
cs



btnFileSelect_Click 이벤트에서는

파일 선택창을 열어서 파일을 지정하도록 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
        Dim OpenFileDialog1 As New OpenFileDialog()
        OpenFileDialog1.Title = "파일선택 타이틀입니다."
 
        ' 초기 디렉토리를 설정합니다.
        OpenFileDialog1.InitialDirectory = "C:\"
        ' 초기 선택파일명을 선택합니다.
        OpenFileDialog1.FileName = "초기파일명"
        ' 파일의 필터를 설정합니다.
        OpenFileDialog1.Filter = "텍스트파일|*.txt;*.log|전체파일|*.*"
        ' 필터의 초기설정입니다. 
        OpenFileDialog1.FilterIndex = 1
        ' 다이얼로그를 닫을때 마지막 설정을 유효로 하겠다는 설정입니다.
        OpenFileDialog1.RestoreDirectory = True
        ' 복수파일을 선택가능하게 합니다.
        OpenFileDialog1.Multiselect = False
        ' HELP 버튼을 표시합니다.
        OpenFileDialog1.ShowHelp = True
        ' 읽기전용으로 표시합니다.
        OpenFileDialog1.ShowReadOnly = True
        ' 체크박스를 표시합니다.
        OpenFileDialog1.ReadOnlyChecked = True
        ' 존재하지않는 파일을 선택했을때 경고를 표시합니다.
        'OpenFileDialog1.CheckFileExists = True
        ' 존재하지않는 경로를 지정했을때 경고를 표시합니다.
        'OpenFileDialog1.CheckPathExists = True
        ' 확장자가 존재하지 않는경우에는 확장자를 자동으로 붙여줍니다.
        'OpenFileDialog1.AddExtension = True
        ' 유효한 Win32 파일명만을 입력받게합니다.
        'OpenFileDialog1.ValidateNames = True
        ' 다이얼로그를 표시하고 OK 선택시에만 선택한 파일을 표시합니다.
        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
            TextBox1.Text = OpenFileDialog1.FileName
            ' 파일이 복수선택 되었을때는 아래의 로직이 돌아가며 뿌려줍니다.
            'For Each nFileName As String In OpenFileDialog1.FileNames
            '    MessageBox.Show(nFileName)
            'Next nFileName
        End If
        ' 처리가 끝났으므로 파기합니다.
        OpenFileDialog1.Dispose()
cs


btnFileCopy_Click 이벤트에서는 지정된 파일을 지정해둔 폴더로 복사 혹은 이동하는 역활을 합니다.

1
2
3
4
5
6
7
        ' 파일명을 취득합니다.
        Dim fileName As String = System.IO.Path.GetFileName(TextBox1.Text)
 
        ' 파일을 복사합니다.
        System.IO.File.Copy(TextBox1.Text, TextBox2.Text & fileName, True)
 
        ' 파일을 이동합니다.
cs


전체 소스는 아래 첨부파일을 참고하세요.

FileDialog.zip


첨부 이미지

첨부 이미지

이렇게 어떻게 만드나요?






샘플을 만들어봤습니다.

첨부 이미지

첨부 이미지

첨부 이미지

이런결과가 만들어집니다.

소스는 아래와 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Label1.Text = TextBox1.Text
    End Sub
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        TextBox1.Text = String.Empty
        Label1.Text = String.Empty
    End Sub
 
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        MessageBox.Show(Label1.Text)
    End Sub
End Class
 
cs



전체소스는 첨부파일 참고하세요.


WindowsApplication1.zip


질문

비주얼 베이직 파일 복사 +붙여넣기 내공100

프로필이미지비공개
질문13건
질문마감률87.5%
질문채택률25%
2018.01.05. 17:25
조회수14

프로그램이 있는 폴더에 오징어.jpg 를 D드라이브 에 있는 밥 이라는 폴더로 붙여넣기 하게 하는 코드좀 알려주세요




아래와같이 하시면 됩니다.


1
2
3
        Dim fileName As String = "\오징어.jpg"
        Dim fi As New System.IO.FileInfo(Application.StartupPath + fileName)
        Dim copyFile As System.IO.FileInfo = fi.CopyTo("d:\밥" + fileName)
cs


기동폴더에 있는 오징어.jpg 파일정보를 읽어와서

D: 의 밥이라는 지정된폴더에 파일을 복사해주는 기능을 수행합니다.

파일을 move 하시고 싶은경우에는

1
fi.MoveTo("C:\test\오징어.jpg")
cs

와 같은 방법으로 move 하실수가 있습니다.


질문

visual basic 질문 내공50

limh****
질문4건
질문마감률0%
질문채택률0%
2018.01.07. 22:27
조회수22
질문 1 : 매년 수능 날짜에서 오늘 날짜를 빼서 몇일남았는지 레이블에 띄우는 방법
(d-day 형식)

매년 수능 날짜에서 빼는 것이 어렵다면 올해 수능 날짜에서 오늘 날짜 빼는걸로라도 부탁드려요

질문 2 : 폼n 이 실행 되었을때 그 폼n 이 실행된지 얼마나 지났는지 시간 뜨위는 방법 
(00:00:00 로 시간 분 초 단위까지)





안녕하세요.
이번에는 Timer 를 이용한 시간차계산 방법과 특정일에 대해서 오늘까지 몇일이 남아있는지 D-Day 계산하는 방법에 대해서 간단하게 남겨보자합니다.

일단 구동화면은 아래와 같습니다.


오늘날짜는 2018/01/10 입니다.
수능이 2018/11/20 에 있다는 가정하에 남은일수가 313일 이네요.

우선 소스의 전체는 아래와 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Public Class Form1
 
    Dim finalDay As String = "2018/11/20 09:00:00"
    Dim startTime As String = Date.Now.ToString()
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        Timer1.Interval = 1000
        Timer1.Start()
 
    End Sub
 
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim nowTime As String = Date.Now.ToString()
 
        Dim total, duration1, duration2 As TimeSpan
        duration1 = DateTime.Parse(nowTime).Subtract(DateTime.Parse(startTime))
        total = duration1.Add(duration2)
 
        lblTimer.Text = total.ToString()
 
        If lblDay.Text = String.Empty Then
            lblDay.Text = DateDiff(DateInterval.Day, DateTime.Now(), DateTime.Parse(finalDay)).ToString()
        End If
 
    End Sub
 
End Class
 
cs


프로젝트가 실행될때에 가장먼저 선언되는 부분이 맨위에 있는 선언문

1
2
    Dim finalDay As String = "2018/11/20 09:00:00"
    Dim startTime As String = Date.Now.ToString()
cs

입니다.

startTime 변수에 프로그램이 시작된 시간을 저장해두고 있습니다.


그리고, 이벤트 Form1_Load 는 다들 아시다시피 폼로드 이벤트 입니다.

폼이 로드될때에 가장먼저 실행이 되지요.


1
2
3
4
5
6
7
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        Timer1.Interval = 1000
        Timer1.Start()
 
    End Sub
cs


폼이 로드될때에 타이머의 Interval 을 1000 으로 1초 단위로 Tick 이 이루어지도록 선언해두고 타이머를 동작시킵니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim nowTime As String = Date.Now.ToString()
 
        Dim total, duration1, duration2 As TimeSpan
        duration1 = DateTime.Parse(nowTime).Subtract(DateTime.Parse(startTime))
        total = duration1.Add(duration2)
 
        lblTimer.Text = total.ToString()
 
        If lblDay.Text = String.Empty Then
            lblDay.Text = DateDiff(DateInterval.Day, DateTime.Now(), DateTime.Parse(finalDay)).ToString()
        End If
 
    End Sub
 
cs


그리고 1초가 흐를때마다 위의 Tick 메소드가 실행되어집니다.


1초당 동작시간을 기록해두고, 프로그램 실행시간과의 시간차를 계산하여

폼의 맨 아랫쪽에 보여줍니다. (1초당 한번 갱신)


그리고, 날짜가 기록되어있지 않은경우 (초기 기동시에만) 는

현재날짜와 수능일로 지정해둔 날짜의 차이를 계산해서 화면에 보여줍니다.


전체 소스는 아래에 첨부해두겠습니다.

즐프하세요~~


timerControl.zip


질문

엑셀 두개 이상의 조건에 부합하는 셀의 합 구하기는 어느함수를 써야하나요?

비공개
질문9건
질문마감률100%
질문채택률88.9%
2018.01.06. 03:07
조회수21
첫번째 조건은 과일을 1, 과자를 2, 생필품은3으로 구분된 열,
두번째 조건은 과일 이름(사과,배,귤등..), 과자이름(치토스, 새우깡, 양파링)...등 TEXT+숫자가 혼합으로 이루어진 열에서


1     사과12    100
1     사과12      5
1     사과12     500
2     치토스     100
2     치토스      50
1     배           30

표가 대략 이럴때, 저는 1과 사과12를 충족시키는 수량의 합을 구하고 싶은건데 어떤 함수를 써야하나요?




엑셀이 아래와같이 위치해있다고 가정하였을때


C9 에서 합산을 구해보았습니다.
해당 코드는 아래와 같습니다.

1
=SUMIFS(C2:C7,A2:A7,"1",B2:B7,"사과12")
cs

도움되시길 바랍니다.




질문

엑셀 두개 이상의 조건에 부합하는 셀의 합 구하기는 어느함수를 써야하나요?

비공개
질문9건
질문마감률100%
질문채택률88.9%
2018.01.06. 03:07
조회수21
첫번째 조건은 과일을 1, 과자를 2, 생필품은3으로 구분된 열,
두번째 조건은 과일 이름(사과,배,귤등..), 과자이름(치토스, 새우깡, 양파링)...등 TEXT+숫자가 혼합으로 이루어진 열에서


1     사과12    100
1     사과12      5
1     사과12     500
2     치토스     100
2     치토스      50
1     배           30

표가 대략 이럴때, 저는 1과 사과12를 충족시키는 수량의 합을 구하고 싶은건데 어떤 함수를 써야하나요?




엑셀이 아래와같이 위치해있다고 가정하였을때


C9 에서 합산을 구해보았습니다.
해당 코드는 아래와 같습니다.

1
=SUMIFS(C2:C7,A2:A7,"1",B2:B7,"사과12")
cs

도움되시길 바랍니다.




질문

VB.NET PerformClick관련해서 문의 드립니다. 내공100

visi****
질문22건
질문마감률85.7%
질문채택률85.7%
2018.01.09. 09:31
조회수7

VS 2017을 다운 받아서 사용해보고 있습니다.

 

If Input0 = True Then
     fTest.btnStart.PerformClick()
End If


If Input1 = True Then
     fTest.btnStop.PerformClick()
End If


If Input2 = True Then
     fTest.btnOrg.PerformClick()
End If

 

이런 식으로 입력을 받으면 각 버튼이 클릭 될 수 있도록 만들어봤습니다.

 

그런데 Input0, Input2는 정상적으로 되는데 Input1은 동작이 안됩니다.

fTest.btnStop.PerformClick()은 실행이 되는데

btnStop_Click쪽으로 넘어가지 않습니다.

어떤 이유에서 안넘어가는지 궁금합니다. 아시는 분 계시면 도움 부탁드립니다.





유사한 코드로 만들어서 아래와같이 테스트 해보았는데,

실제로 클릭이 잘 이루어집니다.
아마도 btnStop 이라는 버튼이 생각하신 버튼이 아닌, 다른버튼의 이름으로 지정되어있지 않은가? 생각됩니다.
혹은 버튼클릭 이벤트가 두가지로 복제되어 있는경우일수도 있습니다.

제가 테스트해본 내용은 아래와 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Public Class Form1
    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        If TextBox1.Text = "Input0" Then
            btnStart.PerformClick()
        End If
 
 
        If TextBox1.Text = "Input1" Then
            btnStop.PerformClick()
        End If
 
        If TextBox1.Text = "Input2" Then
            btnOrg.PerformClick()
        End If
    End Sub
 
    Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
        MessageBox.Show("btnStart")
    End Sub
 
    Private Sub btnStop_Click(sender As Object, e As EventArgs) Handles btnStop.Click
        MessageBox.Show("btnStop")
    End Sub
 
    Private Sub btnOrg_Click(sender As Object, e As EventArgs) Handles btnOrg.Click
        MessageBox.Show("btnOrg")
    End Sub
End Class
cs


해당화면 이미지는 아래와 같습니다.
텍스트박스에 Input0  를 넣고 Button4 를 클릭하면 
btnStart.PerformClick()
이 작동하는 형식으로 만들어봤습니다.
첨부 이미지


[Q]

안녕하세요. 질문좀 드립니다.

 

fpSepread 7을 사용하고 있는데 vb.net 2013에서 실행파일 만들어서

 

win7 64비트에서  잘작동합니다.

 

 

그런데 윈도우10 64 비트에서 실행하면 다른 메뉴에서는 작동이 잘되는데  spread7을 사용한

 

플에서만 아래 스샷과 같은 에러가 납니다.

 

컴파일 플랫폼을  any cpu 로 했구요..

(x64로 해서 빌드하면  com  구성요소의 비트가 잘못되었다며 오류가 떠서 any cpu 로 했습니다.)

 

비트상의 문제라면 win7 64비트에서도 작동이 안되야 되는데 실상은 잘되거든요.

 

win10에서만 안됩니다.

 

그리고 실행파일과 같은폴더에 당연히 dll 파일들 함께 뒀구요...

 

이것때문에 며칠동안 연구중인데 원인을 못찾겠네요...

 

 

 

 

그리고 한가지더요..   fpspread를 대체할만한 스프레드가 있을까요? 기능이 제법 많은걸루요... treeview 나 grid 는

 

좀 허접해서요..ㅠ

 



[A]

spread7 을 인스톨한 PC에서의 레지스트리 값이 참조설정 루트로 지정된것 같습니다.

솔류션에서 참조설정을 눌러서

spread7 을 사용하기 위해서 추가한 컴포넌트의 설정경로를 bin 이하의 dll 로 직접설정 해보세요.

그리고 빌드하신후에 배포하시면 타 PC 에서도 동작하지 않을까 싶네요.

배포판에서 별도의 설정이 필요한 경우에는 컴포넌트 제작사에 문의를 하실 필요가 있어보입니다.

첨부하신 에러는 해당 컨트롤을 실행하기위한 모듈을 읽어내지 못하여 발생한것 같습니다.

+ Recent posts