[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『動いていたマクロが動かなくなった』(矢嶋)
Mac OSX 10.9.5 Excel2011
先日まで動いていたマクロが急に動かなくなってしまいました。特に関連するアプリをアップデートなどはしていないのですが...。アンインストール、各更新プログラムを順番にアップデート、別名で保存で新しいファイルとして読み込み、、、など色々試したのですがお手上げ状態で困り果てています。何か原因はわかりますでしょうか?
shhet1のセルC1の値をファイル名にしてPDFを指定のフォルダ(デスクトップ)に書き出すマクロで、以前こちらの掲示板で教えて頂いたマクロです。
分かる方いらっしゃいましたらご教授お願い致します。
―――
Sub 見積書をPDFでデスクトップに保存()
'Ron de Bruin, 1-June-2012
FN = Range(“sheet!C1")
Dim TempPDFFolder As String Dim PDFfolder As String Dim PDFfileName As String
'Path to folder where we save the pdf's temporary. The code will create 'the folder named "PDFTempFolder" in your Documents folder for you 'Note: this will not be used when you create a pdf of one sheet but not remove this line TempPDFFolder = "Users:hogehoge:Desktop:"
'Folder where you want to save the PDF file, Documents folder in this example PDFfolder = "Users:hogehoge:Desktop:" & FN
'Enter the file name that you want to use for the PDF, do not add the extension. 'なぜか効かない↓ PDFfileName = "korekana" & Format(Now, "dd-mmm-yy h-mm-ss")
Application.ScreenUpdating = False
'You can also use this for the activesheet : ActiveSheet.Copy Worksheets("見積書").Copy
'Do not change the macro call below, you see that we only have one macro call 'if we create a PDF of one sheet because we not have a problem with the bug that 'create a pdf of each worksheet in the workbook because there is only one sheet. Call MakePDF(TempPDFFolder, PDFfolder, PDFfileName, True)
'Close temporary file ActiveWorkbook.Close SaveChanges:=False
Application.ScreenUpdating = True End Sub '*********Functions used by the macros to create pdf files and create mails with the the pdf attached, do not change them**********
Function MakePDF(TempPDFLocation As String, YourPDFfolder As String, YourPDFName As String, Finish As Boolean)
'Ron de Bruin, Version 2, 13-March-2012
'Function to create a PDF of the ActiveWorkbook in Excel 2011
'Note: The code will not work correct if not all sheets are the same type
'For example it will not work if there is one chart sheet in the workbook
'If the sheets not all use landscape or portrait it is also not working correct
Dim I As Long Dim SheetName As String Dim scriptToRun As String Dim ScriptToMakeDir As String
If ActiveWorkbook.Sheets.Count > 1 Then 'Script to create the Temporary PDF folder if it not exist ScriptToMakeDir = "tell application " & Chr(34) & _ "Finder" & Chr(34) & Chr(13) ScriptToMakeDir = ScriptToMakeDir & _ "do shell script ""mkdir -p "" & quoted form of posix path of " & _ Chr(34) & TempPDFLocation & Chr(34) & Chr(13) ScriptToMakeDir = ScriptToMakeDir & "end tell"
On Error Resume Next MacScript (ScriptToMakeDir) On Error GoTo 0 Else TempPDFLocation = YourPDFfolder End If
'look for the first sheet name in the workbook 'We need this name so we can remove it from the file name For I = 1 To ActiveWorkbook.Sheets.Count If Sheets(I).Visible = True Then SheetName = Sheets(I).Name Exit For End If Next I
'Save the workbook as PDF, remove the sheet name from the file name(bug) and 'move the PDF to YourPDFfolder if the workbook have more then one worksheet. scriptToRun = scriptToRun & "tell application " & Chr(34) & _ "Microsoft Excel" & Chr(34) & Chr(13) scriptToRun = scriptToRun & "save active workbook in (" & _ Chr(34) & TempPDFLocation & ".pdf" & _ Chr(34) & ") as PDF file format" & Chr(13) scriptToRun = scriptToRun & "end tell" & Chr(13)
If Finish = True Then scriptToRun = scriptToRun & "tell application " & Chr(34) & _ "Finder" & Chr(34) & Chr(13) scriptToRun = scriptToRun & "set name of file " & Chr(34) & _ TempPDFLocation & SheetName & ".pdf" & Chr(34) & _ " to " & Chr(34) & YourPDFName & ".pdf" & Chr(34) & Chr(13)
If ActiveWorkbook.Sheets.Count > 1 Then scriptToRun = scriptToRun & "move " & Chr(34) & TempPDFLocation _ & YourPDFName & ".pdf" & Chr(34) & " to " & Chr(34) & YourPDFfolder & Chr(34) & Chr(13) End If scriptToRun = scriptToRun & "end tell" & Chr(13) End If
On Error Resume Next MacScript (scriptToRun) On Error GoTo 0 End Function
< 使用 アプリ:Excel2011、使用 OS:MacOSX >
また、どんなエラーメッセージが表示されるかを書いてください。それとも、全然動かないのですか? 現象の説明は正確にお願いします。
ちなみに、Macではファイル名やフォルダ名に、濁点の入った文字を使うと文字化けして、正しく動かなくなるようですが、心当たりはありませんか?
(???) 2014/12/10(水) 15:36
???さん ありがとうございます。
ステップ実行していくと、以下の箇所でなぜか新しいウィンドウで見積書がブックとして開きます。sheet1はそのままの状態です。
sheet1と見積書は同じブックに収まっているので、本来はせいぜいシート移動くらいの動作かと思いますが、以前動いていた時もたまにこの症状が出ていました。
以前症状が出ていたのは、プリントアウトするマクロの次に間髪入れずにPDF保存マクロを押した時によくなっていました。
この症状は
Call MakePDF(TempPDFFolder, PDFfolder, PDFfileName, True)
次にそのウィンドウを保存してくれれば良いのですが、そのままステップ実行していくと、そのまま最後までいって見積書のウィンドウは閉じてマクロ自体が最後までいきました。
エラーメッセージは何も出ていません。
現在問題のマクロを押すと、ウィンドウがチラッとひかり?ます。何か実行している感がある挙動です。これは動いていた時からありましたが、やや挙動のちらっと光る感じが短いようです。以前はそれでちゃんとPDFが保存されていましたが、今はチラッとひかるだけでエラーメッセージも何も起こりません。
ファイル名、フォルダ名に関しては本当に何も変更していないので、心当たりはありません。
今までは以下の様にファイル名を付けていました。
201412100003_氏名様/御中 領収証.pdf
よろしくおねがいします。
(矢嶋) 2014/12/10(水) 19:26
If Finish = True Thenの前後と、If ActiveWorkbook.Sheets.Count > 1 Then の前後で、
scriptToRun という変数にセットされた文字列を確認してみてください。
一度セットした内容を上書き更新し、別なファイル名に変えている点が気になります。
(シート数が1つか複数かでスクリプト文字列が全然別物になりますが、間違えてシート追加した、とかは?)
(???) 2014/12/11(木) 09:42
???さん すみません、マクロやapplescriptについては、知識がなくさっぱり読めないのです。。
コピペしてなんとか作成しました。
シートの追加はしていません。
ブックの構成としましては、sheet1(データ入力用。他のシートに反映させる)、見積書、納品書、請求書、領収証です。
昨日プリントアウトするマクロと、手動でPDFを保存、という作業を交互に行っていたところ、何度か繰り返したら途中からプリントアウトするマクロが動かなくなりました。エクセルが落ちたりはしていないのにです。ブックを再度開くとその症状は治りました。ちなみにそのプリントアウトするマクロは以下のものです。
もしかするとMac OS X側(applescript)側の問題でしょうか。
Sub 請求書()
Sheets("請求書").PrintOut
End Sub
uparrowさん ありがとうございます。
Parallelsでwin7を入れていたので、全て更新してみましたが、マクロの挙動は特に変わりませんでした。
なおエクセルはMac Excel 2011のみ使用しており、win版は使用していません。。
(矢嶋) 2014/12/11(木) 15:39
C1セルと同じ名前のフォルダを、予めデスクトップに作成しておくとどうなりますか?
スクリプトに渡す文字列と、フォルダの実体を見比べれば、問題点が判りそう…。
最後の On Error をコメントアウトしてみる、とかも、試してみてください。
(???) 2014/12/11(木) 17:13
???さん ・そのフォルダがデスクトップに存在しないせいで、出力できていないとかないですかね?
・C1セルと同じ名前のフォルダを、予めデスクトップに作成しておくとどうなりますか?
どちらも試してみましたが駄目でした。
他のPC(Mac OSX 10.7.5)、Excel2011で試してみたところ普通に動きました。。
(矢嶋) 2014/12/11(木) 20:37
他のPCでは動くということは、あとは環境の違いを調べてもらうしか…。MacScriptのバージョンとか。
ほかには、例えばユーザー名に日本語を使っていて、それを先日変えた、とかありませんか?
(???) 2014/12/12(金) 08:48
???さん ユーザー名も変えてはいないです。
ディスクユーティリティやウィルススキャンなど思いつく限り試してみましたが、やはり駄目みたいです。とりあえずエクセルではなくMac側が悪そうですね。
長々とありがとうございました。今回の事は諦めます。
(矢嶋) 2014/12/12(金) 14:55
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.