CSV 파일을 생성하는 C# 프로그램이 있고 Excel에서 XLSM 파일을 엽니 다 (ProcessStartInfo
및 Process.Start
사용). XLSM의 매크로는 CSV 파일을로드하고 그 파일을 특정 셀에 배포합니다. 결국 이것은 어떤 Office 제품군에도로드 할 수있는 매크로없이 스프레드 시트를 생성하는 C# 일 것이며 CSV는 사라질 것입니다.일괄 처리에서 Excel VBA 매크로로 값을 전달하는 방법은 무엇입니까?
제 문제는이 시스템이 현재 어디서든 디스크에서 XLSM을 실행할 수 있어야한다는 것입니다. 사용자 지정 위치에서 작동하지 않는 하드 코드 된 상대 경로를 통해 CSV를 찾습니다. 상수를 정의하기 위해 컴파일러 매개 변수를 전달하는 것과 비슷한 작업을하고 싶습니다.
편집 1 : 내가 생각하고 거절
대체 방법 :
복사하여 CSV 근처 표준 위치에 XLSM하고 거기에서 실행합니다.
파일을 원래 위치로 다시 복사해야하지만 Excel이 닫히는 시점을 알지 못합니다 ... Excel에서는 제외하고 원래 위치를 모르는 경우가 있으므로 문제.
사용자 지정 XLSM 위치 옆에 CSV 파일을 만듭니다.
CSV 파일의 위치는 NLOG 구성 파일에 지정되어 있으며 하드 코드 된 경로를 사용하도록 주변 구현을 변경하면 비용이 많이 듭니다. 이것이 내가 할 수 있었던 유일한 생각이지만, 다치게 될 것입니다.
표준 위치에서 사용자 지정 위치에 대한 Windows 기반 하드 링크를 만듭니다.
NTFS 파일 시스템에서 실행되고 있다고 가정 할 수 없습니다. 당신이 할 수있는 사용자 컴퓨터로 CSV 생성 프로그램을 포팅
는'싸다는()'합리적으로 가까운 내 이상적인 솔루션. Ew, 레지스트리; 나는 그것이 가까운 초를 만들었다는 것을 믿을 수 없다. 많은 감사합니다. 컴파일러 플래그를보고 환경 변수를 생각조차하지 않았습니다. – Grault
SaveSetting/GetSetting()은 환경 변수보다 최종 사용자로부터 약간 더 나은 것을 숨길 수 있습니다 (요구 사항 인 경우).키 (예 : 'HKEY_CURRENT_USER \ Software \ VB 및 VBA 프로그램 설정 \ [YourGroup] \ Settings \ [YourParam]')를 알고 있으면 regedit.exe를 통해 직접 패치 할 수 있으며 그렇지 않은 경우 해를 끼치 지 않습니다. – MikeD