2021년 7월 13일 화요일

vba로 새창 띄우기

 일반적으로 vba에서 새창을 띄우는 명령어를 사용하면, 


workbook.add 


계속 vba 창이 떠있는 경우, 새로 열린 창에서 내용 수정이 되지 않는다 (락이 걸린상태처럼)


그래서 vba 창을 계속 켜놓은 상태로 새창을 실행하고 거기서 문서 편집을 해야할 경우, 아예 새창을 여는 코드를 사용해야하는데 그때 아래 코드를 사용하면 새창이 뜬다. 


Dim xlAdd As Object
 Set xlAdd = CreateObject("Excel.Application")
 Filename = ThisWorkbook.Name
Total = Workbooks(Filename).Worksheets.Count
xlAdd.Visible = True
xlAdd.Workbooks.Add


문제는 새창에 현재 vba 내 변수들을 저장할 때인데, 새창을 열고 activesheet를 선택한 후에 붙여넣어도, 현재 vba창이 속한 엑셀에 붙여넣어진다. 

vba 창은 계속 실행중이며, 새창은 vba가 속한 엑셀과는 완전히 다른 창이기 때문에 호환이 되지 않는다. 

그렇다면, vba창을 계속 실행하면서, 새창을 띄워 계산결과를 붙여넣으려면 어떻게 해야할까!! 

해결이 되면 추가하겠다. 

해결함. 해결방식은

1) 엑셀 시트를 만들어서 복사 (새창 ㄴㄴ)하고 저장하고 닫기.

2) 새창을 띄움.

3) 새창에서 저장된 파일 열기. 

Public Sub print_callExcel()
Dim Newfilename As String
Dim xlAdd As Object
Set xlAdd = CreateObject("Excel.Application")
Dim c As Integer

ThisFilename = ThisWorkbook.Name
fileloc = ThisWorkbook.FullName
Newfilename = FileSequence(ThisWorkbook.Path & "\case.xlsx")

Workbooks.Add
Workbooks(ThisFilename).Worksheets.Copy before:=ActiveWorkbook.Sheets(1)
Workbooks(Workbooks.Count).SaveAs Newfilename
ActiveWorkbook.Close

xlAdd.Visible = True
xlAdd.Workbooks.Open Newfilename
End Sub


그리고 1)번 과정에서 임의의 이름으로 저장하기 때문에 자동으로 저장되게 하기 위해 filesequence라는 함수를 사용했다. 코드는 아래에 있음. 그대로 붙여넣으면 같이 사용됨. 

[출처 : 오빠두엑셀 블로그] 


Private Function FileSequence(FilePath As String, Optional Sequence As Long = 1, Optional Delimiter As String = "-") As String
 
Dim Ext As String: Dim Path As String: Dim newPath As String
Dim Pnt As Long
 Pnt = InStrRev(FilePath, ".")
Path = Left(FilePath, Pnt - 1)
Ext = Right(FilePath, Len(FilePath) - Pnt + 1)
 newPath = Path & Delimiter & Sequence & Ext
 Do Until FileExists(newPath) = False
    Sequence = Sequence + 1
    newPath = Path & Delimiter & Sequence & Ext
Loop
 FileSequence = newPath
 End Function

Public Function FileExists(ByVal path_ As String) As Boolean
 '########################################################
'입력한 파일경로에 파일 존재여부를 확인합니다.
'https://www.oppadu.com/vba-fileexists-함수/
'########################################################
     FileExists = (Dir(path_, vbDirectory) <> "")
 End Function


이렇게 하면 매번 파일이 된다는 단점이 있지만, 그래도 복사된 파일을 바로바로 확인하고 수정할 수 있다! 

2021년 7월 12일 월요일

엑셀 켤 때마다 새창으로 열기

엑셀을 이용할 때 한창에서 여러개의 파일을 봐야할때 매우 불편하다. 
특히, 듀얼 모니터 사용할때 하나를 보면서 다른 파일을 수정할때!

가장 간단한 방법은 엑셀을 켤때 shift를 누르고 더블클릭하면 새창으로 뜬다. 

하지만, 레지스트리 수정을 해서 아예 매번 새창으로 뜨게 할수 있음. 

Win + R 키 (시작-실행) 을 눌러 실행 창을 띄운 후 


'regedit' 을 입력하여 레지스트리를 열어준다.


레지스트리 편집기가 뜨는데 외쪽에서 "HKEY_CLASSES_ROOT"에 


xlsx 확장자는 "Excel.Sheet.12"
xls 확장자는 "Excel.Sheet.8"
xlsm확장자는 "Excel.SheetMacroEnabled.12" 폴더의




"ddeexec"폴더를 삭제하고

"command"폴더를 클릭




command 파일을 삭제하고 (기본값)파일을 우클릭하여 "수정" 클릭

기존에 다음과 같이 되어있는 것을 

/dde 부분을 /en "%1" 로 수정한다.














2021년 4월 1일 목요일

keras 버전으로 인한 오류

문제는 언제 발생했냐!

잘~ 쓰고있다가 leakyRelu를 사용한 모델을 불러왔는데 

 leaky relu keras, unexpected keyword argument passed to optimizer: learning_rate

요게 떴다.

케라스 버전이 낮아서 그렇다고 해서 anaconda prompt 관리자 모드로 들어가서

pip install keras --upgrade를 해주었지

하지만여기서 tensorflow 버전 오류 문제 1.3.1 사용중이었고 2.2 이상의 버전이 필요함.

pip install tensorflow --upgrade를 아무리 해도 1.3.1 버전이 유지됨.

이때 다시 케라스 버전 낮춤


그후 다음 오류 발생 (tensorflow 버전오류인듯)

could not find the dll(s) 'msvcp140_1.dll'. tensorflow requires that these dlls be installed in a directory



C++ 계열 프로그램을 재설치하라고 해서 설치하면 위의창이 뜸

나는 설치 실패뜸 

어쩌다가 해결했는데 참조한 링크를 못찾겠음.찾으면 추가하겠음

암튼 해결하고 저걸 설치했음.



그후 다음문제 발생 

module 'tensorflow.python.framework.ops' has no attribute '_tensorlike'


anaconda prompt 관리자 창에서 pip install keras==2.4.3

해줬음.



결론은 케라스 버전 2.4.3, 텐서플로우 버전 2.2 이상만 만들어주면 되는거같음.

버전문제엿다


발생하는 거의 모든 문제가 버전문제인듯 짱낭

2020년 4월 13일 월요일

python refprop 사용

https://github.com/usnistgov/REFPROP-wrappers

여기 사이트 안에
https://github.com/usnistgov/REFPROP-wrappers/tree/master/wrappers/python

요 사이트 참고하면

pip install ctREFPROP
이명령어로 설치
(아나콘다 사용하면, 아나콘다 prompt에서 명령어 수행
그냥 python이면 cmd 창에서 명령어 수행)
단 refprop이 깔려있어야함!!



TP를 사용해서 나머지 프로퍼티 구할때
PS를 사용해서 나머지 프로퍼티 구할때


프로퍼티들 순서가 있음

def TPFLSHdll(self,T,P,z):
D,Dl,Dv,x,y,q,e,h,s,Cv,Cp,w,ierr,herr = TPFLSHdll(T,P,z)


def PSFLSHdll(self,P,s,z):
T,D,Dl,Dv,x,y,q,e,h,Cv,Cp,w,ierr,herr = PSFLSHdll(P,s,z)




여기서 함수 찾아보면됨
https://github.com/usnistgov/REFPROP-wrappers/blob/282d6b318adcbf5fc9cb1ee116e983a1208d268f/wrappers/python/ctypes/ctREFPROP/ctREFPROP.py#L3344

2019년 10월 27일 일요일

Graphviz 설치, ''dot" not found in path 해결

보통 해결방법
1. https://graphviz.gitlab.io/_pages/Download/Download_windows.html

여기서 msi 파일 설치후,

2. 환경변수에 경로 추가

Program Files (x86)/Graphviz2.38/bin/
Program Files (x86)/Graphviz2.38/bin/dot.exe
를 시스템 환경변수에 추가하라고 한다.

3. 코드에 경로 추가
import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'

하지만 나는 되지 않았다

그래서
1.  Anaconda prompt를 관리자로 실행

2. conda install graphviz

3. 2번을 하면 설치 경로가 "C:\ProgramData\Anaconda3\Library\bin"
여기에 graphviz 폴더가 생성되는데 이것을

4. "C:\ProgramData\Anaconda3\Lib\site-packages"
여기에 복사하니까 해결됨


둘다 해보시길!

2019년 10월 4일 금요일

hyperparameter optimization using bayesian

설치
pip install bayesian-optimization

노트북에 불러오기
from bayes_opt import BayesianOptimization




vba로 새창 띄우기

 일반적으로 vba에서 새창을 띄우는 명령어를 사용하면,  workbook.add  계속 vba 창이 떠있는 경우, 새로 열린 창에서 내용 수정이 되지 않는다 (락이 걸린상태처럼) 그래서 vba 창을 계속 켜놓은 상태로 새창을 실행하고 거기서 문서 편...