- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでパス名(2バイト文字)のエラーを改善)
VBAでパス名(2バイト文字)のエラーを改善
このQ&Aのポイント
- エクセルVBAでPDFを作成したい<http://okwave.jp/qa/q8318460.html > の派生質問になります。
- エクセル2000 Windows7の環境下でCubePDFというアプリケーションをVBAで操作しています。出力ファイルに保存したいファイル名をいれるのですが、ひらがなカタカナ漢字などの2バイト文字がパス名にあるとうまくコピペできません。
- VBAはA1セルにあるパス名(ファイル名)でPDFを作成保存するVBAです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
CubePDFは使っていないので動作検証はしていませんが、 これでいかがでしょうか? With CreateObject("Wscript.Shell") '保存先の所まで移動して名前をつける .SendKeys "{TAB}" .SendKeys "{TAB}" .SendKeys "{TAB}" .SendKeys "{TAB}" .SendKeys "{TAB}" .Run "%COMSPEC% /c echo " & Fname & "| clip", 0, True 'クリップボードにFnameをコピー .SendKeys "^v" '貼り付け .SendKeys "{ENTER}" End With
その他の回答 (1)
- Picosoft
- ベストアンサー率70% (274/391)
回答No.1
SendKeysで日本語は送れません。 クリップボードを経由して貼り付ける方法を試してみてください。
質問者
お礼
ありがとうございます^^ すみません。。。Copyすればいいと思うのですが、 どの部分でcopy等々すればいいのでしょうか?><; CUBEが立ち上がるとクリップボードが消えてしまったりして 切り替えがうまいこといきませんTT 恐らくこのあたりの内容じゃないかとは思っているのですが。。。 http://oshiete.goo.ne.jp/qa/4639824.html お教えいただけないでしょうか><
お礼
ありがとうございます!!!解決いたしました!^^ これで作業時間が圧倒的に短縮されますっ! 細かくお教えいただきまして、本当にありがとうございました! ~最終的な記述~ Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Declare Function SetForegroundWindow Lib "user32" _ (ByVal hwnd As Long) As Long Sub PDF作成() ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, ActivePrinter:="CubePDF on Ne05:" '↑ActivePrinter:="ここを変える" マクロの記録などで確認 <プリンタの設定> Do cuHw = FindWindow(vbNullString, "CubePDF 1.0.0RC4 (x86)") Loop While cuHw = 0 '↑CubeBDFのウインドーが開いたかどうかを確認(この段階ではまだアクティブになるまで若干間がある) SetForegroundWindow cuHw '↑CubeBDFのウィンドーをアクティブ化 Dim Fname As String Fname = Range("A1") 'ファイル名を取得 PresentPrinter = Application.ActivePrinter With CreateObject("Wscript.Shell") '保存先の所まで移動して名前をつける .SendKeys "{TAB}" .SendKeys "{TAB}" .SendKeys "{TAB}" .SendKeys "{TAB}" .SendKeys "{TAB}" .Run "%COMSPEC% /c echo " & Fname & "| clip", 0, True 'クリップボードにFnameをコピー .SendKeys "^v" '貼り付け .SendKeys "{ENTER}" End With Application.ActivePrinter = PresentPrinter End Sub