フォルダ、ファイルが存在しないとき、作成するスクリプトをVBSで作成していますが、疑問点があるのでご教示ください。 objFSO.CreateFolder、objFSO.CreateTextFileを実行が、正常に行われた場合、 Err.Numberに0がセットされると思っていましたが、実際は違っていました。 objFSO.CreateFolderでフォルダが作成される場合、Err.Numberに13が返されます。 objFSO.CreateTextFileでファイルが作成される場合、Err.Numberに438が返されます。 このスクリプトを実行後、フォルダ、ファイルが存在しない場合、作成されることも確認しています。 フォルダ作成後、作成されたフォルダに対して、ファイルの作成/データの書き込みのアクセス権を拒否にすると返されるErr.numberに70がセットされることも確認しています。 なぜ、フォルダ、ファイルが作成された場合、0が返されないのかご存知の方がいらっしゃいましたらご教示ください。 また、その情報が記載されている書籍およびサイトがあれば、お教えいただければ、幸いです。 Option Explicit Dim objFSO Dim objFile Const strFolderName = "C:\VBS" Const strFileName = "C:\VBS\test.txt" On Error Resume Next Set objFSO = CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then WScript.Echo "FSOオブジェクトを作成しました" Else WScript.Echo "FSOオブジェクトを作成できませんでした" WScript.Quit(1) End If If objFSO.FolderExists(strFolderName) Then WScript.Echo "フォルダが見つかりました" Else WScript.Echo "フォルダが見つかりませんでした" If objFSO.CreateFolder(strFolderName) Then If Err.Number = 13 Then WScript.Echo "フォルダを作成しました" Else WScript.Echo "フォルダを作成できませんでした" WScript.Quit(1) End If End If End If If objFSO.FileExists(strFileName) Then WScript.Echo "ファイルが見つかりました" Else Script.Echo "ファイルが見つかりませんでした" If objFSO.CreateTextFile(strFileName) Then If Err.number = 438 Then WScript.Echo "ファイルを作成しました" Else WScript.Echo "ファイルを作成できませんでした" WScript.Quit(1) End If End If End If
↧
VBSでフォルダ、ファイル作成時のエラーコード
↧
SQLサーバの論理ファイル名の変更
VS2013Comm+SQLサーバ2014EXPで開発しています。 いま、AというデータベースのバックアップをBというデータベースにリストアしようとしています。この時Microsoft.SqlServer.Management.Smoを利用してVBでのリストアは成功するのですが、論理名が変わらなくて困っています。ManagementStudioでの論理名の変更はわかるのですがエンドユーザにManagementStudioを使わせるわけにもいかないのでVBのリストア機能の一環にしたいと思っています。 よろしくお願いします。
↧
↧
エクセルVBA ブック間のコピー
選択したテキストファイルをエクセルで開いたコピーし、 もう一つ開いたエクセルファイルにペーストするというマクロをVBAで 作成していますが、つまずいてしまいました。 ----------------------------------- Dim wb1 As String Dim wb2 As String Sub Opentxt() wb1 = Application.GetOpenFilename("テキストファイル,*.txt") If wb1 <> "False" Then Workbooks.OpenText Filename:=wb1, DataType:=xlDelimited, comma:=True End If End Sub Sub Copy() Dim LastRow As Long wb2 = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") If wb2 <> "False" Then Workbooks.Open wb2 LastRow = wb2.Sheets("一覧表").Range("A" & Rows.Count). End(xlUp).Row wb2.Sheets("一覧表").Range("A5:A" & lastRow).Copy _ wb1.Sheets("Sheet1).Range("B33") End If End Sub ----------------------------------- Opentxtの方は問題ないですが、Copyの方を実行すると wb1とwb2で引っかかって「コンパイルエラー/ 修飾子が不正です」と 表示されて、エラーになってしまいます。 この場合変数の型などがおかしいのでしょうか? excel2007を使用しています。 よろしくお願いします。
↧
VBSでファイル作成後、書き込みできない
ファイルが存在している場合は、ファイルをオープンして書き込み、ファイルが存在していない場合は、ファイルを作成後、オープンして書き込みを行わせたいと考えています。 しかし、ファイルが存在していないとき、ファイルは作成されるのですが、『エラー:800A0046 書き込みできません。VBScript実行時エラー』が出て、書き込みができません。モードをWritingにしても同じでした。 お手数をおかけしますが、ご教示いただけますようお願いいたします。 Option Explicit '■ オブジェクトの宣言 Dim objFSO Dim objFile '■ 定数の宣言 Const strFileName = "C:\VBS\TEST.TXT" '■ 定数の宣言 '// ファイル入出力モード(8:追加書き込み) Const ForAppending = 8 Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FileExists(strFileName) Then WScript.Echo "ファイルが見つかりました" Else WScript.Echo "ファイルが見つかりませんでした" Set objFile = objFSO.CreateTextFile(strFileName) If IsObject(objFile) Then WScript.Echo "ファイルを作成しました" Else WScript.Echo "ファイルを作成できませんでした" WScript.Quit(1) End If End If '// ファイルのオープン Set objFile = objFSO.OpenTextFile(strFileName,ForAppending) objFile.WriteLine "2012/12/21,100,ブレーキパッド,35000"
↧
エクセルVBAで教えて下さい。
エクセルVBAで以下の方法のマクロが分からず、教えて頂きたいです。 まず、ブックAのシートAがあり、シートAのセルD3には号機No.を入力します(999などの数値のみ) 次にブックBのシートBがあり、このシートのD列にも号機No.が入力されています。 やりたい事はブックAのシートAのD3に号機No.を入力したら、ブックBのシートBのD列から同じ号機No.を 探し、当てはまる号機の行のI列、J列、K列、L列、M列をコピーし ブックAのシートAのF13、F14、F15、F16、F17、に貼り付けたいです。 それぞれの貼り付け先は K列⇒F13 L列⇒F14 M列⇒F15 I列⇒F16 J列⇒F17のようになります。 それとブックBのシートBのD列に入力されている号機No.は同じ数値が入力されている時があります。 この場合は必ず下にある号機No.のが最新ですので、そちらを読み取るようにしたいです。 例えば、4行目と8行目に同じ号機No.がある場合は8行目の方を読み取る。 現在は GYOU = Application.InputBox でターゲットの行番号を入力して その行の列をコピー・ペーストしている感じです。 Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Dim tmp() As String If Intersect(Target, Range("D3")) Is Nothing Then Exit Sub Else End If Dim buf As String Dim j As Integer Dim GYOU As String Set xCur = Selection Dim OpenFileName As String Workbooks.Open Filename:="業務都合の為載せれません" GYOU = Application.InputBox("行を選択してください", "行指定") '<キャンセルの場合、処理を終わりにします。> If GYOU = "False" Then Exit Sub For j = 11 To 11 ActiveSheet.Cells(GYOU, j).Copy ThisWorkbook.ActiveSheet.Cells(13, 6).PasteSpecial Paste:=xlPasteValues Next j For j = 12 To 12 ActiveSheet.Cells(GYOU, j).Copy ThisWorkbook.ActiveSheet.Cells(14, 6).PasteSpecial Paste:=xlPasteValues Next j For j = 13 To 13 ActiveSheet.Cells(GYOU, j).Copy ThisWorkbook.ActiveSheet.Cells(15, 6).PasteSpecial Paste:=xlPasteValues Next j For j = 9 To 9 ActiveSheet.Cells(GYOU, j).Copy ThisWorkbook.ActiveSheet.Cells(16, 6).PasteSpecial Paste:=xlPasteValues Next j For j = 10 To 10 ActiveSheet.Cells(GYOU, j).Copy ThisWorkbook.ActiveSheet.Cells(17, 6).PasteSpecial Paste:=xlPasteValues Next j ActiveWorkbook.Close SaveChanges:=False With xCur .Parent.Parent.Activate '元のブックへもどる .Parent.Activate '元のシートへもどる End With End Sub ど素人の為、めちゃくちゃな並びだとは思いますが一応現在の状態のマクロを載せておきます。 御指導の程、宜しくお願いします。
↧
↧
Excel VBAでのテキスト出力について
excel vbaでの文字列出力について エクセルからテキスト(メモ帳とか)に出力したいのですが 下記のように出力できなくて困っております。 どなたか教えてほしいです。 ●入力エクセル AAA BBB CCC DDD EEE セル(1,1)~(1,5)にそれぞれ文字列が入っている状況です。 これを下記のように出力したいのです。 ●テキスト出力 "AAA","BBB",CCC,"DDD",EEE CCCとEEEをダブルクォーテーションを付けないで出力したいのです。 出力の方法でwriteとprintがありますが writeで Write #1, Cells(1,1),Cells(1,2),Cells(1,3),Cells(1,4),Cells(1,5) やると、自動で全ての文字がダブルクォーテーションで囲まれて、カンマが自動でつき "AAA","BBB","CCC","DDD","EEE" のようになってしまします。CCCとEEEのダブルクォーテーションが不要です。 printで Print #1, CStr(Cells(1,1)), & "," CStr(Cells(1,2)), & "," Cells(1,3), & "," CStr(Cells(1,4)), & "," Cells(1,5) とすると "AAA", "BBB", CCC, "DDD", EEE となり、カンマの後ろに空白が何個か入った状態になります。 (ブラウザでは空白が分かりづらいですが、テキストですと入っております。) Trim関数でTrim(",")とか色々試しましたが上手くいきません。 どうしたら望み通りの出力ができるでしょうか。 ぜひ教えて頂きたいです。 よろしくお願いします。
↧
C# DataGridViewのループ処理
DataGridViewの特定列の値を1行ずつ取得し 入力データが全角文字か入力チェックを行いたいと考えています。 DataGridViewの特定列を1行ずつ確認するループ方法を ご教示頂ければと思います。
↧
WindowsCEからPC上のAccessへの接続
WindowsCE7.0を社内WLANに接続し、PC上のMicrosoft Accessデータベース(mdb又はaccdb)に接続し、操作するプログラムが開発できるかどうか調査しています。 開発環境はVisual Studio 2008(.NET Compact Framework 3.5)で、VBです。 .NET Compact Frameworkで、SQL Serverに接続することはできそうですが、Accessデータベースに接続することは不可能でしょうか。
↧
vbaでのoutlook2010予定表作成について
いつも頼りにさせてもらっています。 OKWaveでのQAを参考に、 vba(excel)でメールを自動編集、送信は いろいろ業務で使用していますが、 出来れば、同様に予定表(イベント)も作成出来ないものかなと思い、 みなさんのお知恵をお借りしたいです。 社内業務で定例のいくつかの会議の事務局をしており、 定期的に事前調整の上でイベントメールを送っています。 EXCELの表の中に入力されている各データを利用して、 日付、日時、場所や送付先を既定値で表示させておいて、 変更、追加分だけをいれて、 Outlookの予定表として、 本文も必要に応じて生成、送信出来ればと考えています。 どこか、VBAでoutlookの予定表を編集するコードが書かれている インターネットの情報はないでしょうか? MS社のそもそもの仕様上で出来ないことなのかもわかりませんが、 インターネットのどこかに情報があれば教えてください。 よろしくお願いいたします。
↧
↧
【VB6.】10進数を16進数に変換(符号つき)
お世話になります。 どうしてもわからないので教えてください。 やりたいことは以下です。 ●DecをHexの符号ありに(1byte)変換 ●結果としてDec「-02」を変換してHex「FE」が欲しい。 -128~127(変換後は80~7F)まで200通り以上あるので自動変換したいです。 使用しているインターネットのサイトだとできますが、VB6のプログラムで書くとうまくいきません。 ネットに繋がらない環境で変換しなくてはいけなくなったので、どなたか助けてください! お願いします。
↧
datagridviewでたまに例外・・
モジュールからフォームの関数を呼び出し時にたまに以下の例外が発生しており、 なぜ例外が発生するのか原因がわからず困っています。 オブジェクト参照がオブジェクト インスタンスに設定されていません。 場所 System.Windows.Forms.DataGridViewIntLinkedList.Remove(Int32 integer) 場所 System.Windows.Forms.DataGridView.SetSelectedRowCore(Int32 rowIndex, Boolean selected) 場所 System.Windows.Forms.DataGridView.ClearSelection() 場所 System.Windows.Forms.DataGridView.set_SelectionMode(DataGridViewSelectionMode value) 以下のようなフォームがありgridset()はタイマーで動いているモジュールの関数より呼び出されます。 Public Class frmTest Private Sub frmTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load gFrmTest = Me End Sub Public Function gridset() dataGridView1.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect ☆例外発生箇所 ・ ・ End Function End Class Module Modtest //以下はタイマーで何回も呼ばれる関数 Public Function aaa() As Integer gfrmTest.gridset() End Function End Module 環境はvb.net 2008です。 ご教示いただけますと助かります。 よろしくお願いします。
↧
エクセルVBAのユーザーフォームにセルデータを
Excel2007を使っています。 VBA初心者ですがユーザーフォームのテキストフォームにエクセル内のセルデータを表示させたいと考えています。 以下のコードをユーザーフォームのコードに書いてユーザーフォームを走らせましたがユーザーフォームは表示するのですがデータがまったく表示されません。 どなたかご教授いただけませんでしょうか。 Sub Farst() Dim Data1 As String Dim Data2 As String Dim Data3 As String Dim Data4 As String Dim Data5 As String Dim Data6 As String Dim Data7 As String Dim Data8 As String Dim Data9 As String Dim Data10 As String Dim ActiveRow As String ActiveRow = 4 With Worksheets("MDH,MDO") Data1 = .Cells(ActiveRow, 1) Data2 = .Cells(ActiveRow, 2) Data3 = .Cells(ActiveRow, 3) Data4 = .Cells(ActiveRow, 4) Me.TextBox1連番.Text = Data1 Me.TextBox2品番.Text = Data2 Me.TextBox3品番2.Text = Data3 Me.TextBox4品番3.Text = Data4 End With End Sub
↧
ActiveRowをコントロール
エクセル2007を使用しています。 ユーザーフォームのコードに以下のコードを書いてシートのセル情報をユーザーフォームに表示したいと考えています。 以下のコードでは「ActiveRow」の指定が固定になってしまうので、ユーザーフォームに「NEXT」ボタンを追加して、NEXTボタンが押されたら「AcviveRow」を一つづつ増やして表示させるという方法を教えていただけないでしょう。 VBA素人です。 よろしくお願いします。 尚、ActiveRowの初期値は「4」になります。 Private Sub UserForm_Initialize() Call Farst End Sub Sub Farst() Dim Data1 As String Dim Data2 As String Dim Data3 As String Dim Data4 As String Dim Data5 As String Dim Data6 As String Dim Data7 As String Dim Data8 As String Dim Data9 As String Dim Data10 As String ActiveRow = 4 With Worksheets("MDH,MDO") Data1 = .Cells(ActiveRow, 1) Data2 = .Cells(ActiveRow, 2) Data3 = .Cells(ActiveRow, 3) Data4 = .Cells(ActiveRow, 4) Data5 = .Cells(ActiveRow, 5) Data6 = .Cells(ActiveRow, 6) Data7 = .Cells(ActiveRow, 7) Data8 = .Cells(ActiveRow, 8) Data9 = .Cells(ActiveRow, 9) Data10 = .Cells(ActiveRow, 10) Me.TextBox1連番.Text = Data1 Me.TextBox2品番.Text = Data2 Me.TextBox3品番2.Text = Data3 Me.TextBox4品番3.Text = Data4 Me.TextBox5単価.Text = Data5 Me.TextBox6PO_NO.Text = Data6 Me.TextBox7発注日.Text = Data7 Me.TextBox8数量.Text = Data8 Me.TextBox9層.Text = Data9 Me.TextBox10備考.Text = Data10 End With End Sub
↧
↧
VBA Macフォルダへの書き込み
Windows7pro(Excel2010,2013)複数台 MacMini(OSX:Yosemite)1台 Windows側にてExcelVBAよりcsvファイルをUTF-8コードへ変換し Mac側へ書き込む作業(下記コード)を行っておりました。 今回、MacOSをSnowLeopard(10.6.8)からYosemite(10.10)へ バージョンアップを行ったのですが、今まで出来ていた書き込みが 「実行時エラー3004:ファイルへ書き込みできませんでした」と エラーが発生し、作業が出来なくなってしまいました。。 Macの共有設定及びWindowsのローカルセキュリティーポリシーなど 変更し、Windows側からMacの該当ファイルが開けるようにはしましたが、 エラーが改善しません。 改善策を教えて頂けないでしょうか? ※コード内の[ ]は、別名を付けています。 ※コードは下記サイトに記載のものを加工して作成しました。 http://amano41.hateblo.jp/entry/2014/04/25/145637 Option Explicit Sub CSV() '============================== ' 使用しているデータ範囲の取得 '============================== Dim maxRow As Long Dim maxCol As Long Dim waitTime As Variant With ActiveSheet.UsedRange maxRow = .Row + .Rows.Count - 1 maxCol = .Column + .Columns.Count - 1 End With '============================== ' ストリームの準備 '============================== Dim outStream As ADODB.Stream Set outStream = New ADODB.Stream Dim myPath As String Dim Obj As Object myPath = "\\192.168.10.1\Documents" Set Obj = CreateObject("Wscript.Shell") Obj.Run ("NET USE \\192.168.10.1 [pass] /user:[username]") 'エンコーディングを指定 With outStream .Type = adTypeText .Charset = "UTF-8" .LineSeparator = adLF End With outStream.Open '============================== ' ストリームにデータを流し込む '============================== Dim r As Long Dim c As Long Dim line As String '1 行ずつ処理 For r = 1 To maxRow '1 列目はカンマなし line = ActiveSheet.Cells(r, 1) '2 列目以降 For c = 2 To maxCol line = line & "," & ActiveSheet.Cells(r, c) Next 'r 行目のデータを Stream に出力 outStream.WriteText line, adWriteLine Next '============================== ' 先頭の BOM を削除 '============================== 'BOM の分 3 バイトをスキップ outStream.Position = 0 outStream.Type = adTypeBinary outStream.Position = 3 'コピー用のストリーム Dim csvStream As ADODB.Stream Set csvStream = New ADODB.Stream 'バイナリモードで開く csvStream.Type = adTypeBinary csvStream.Open 'BOM の後からデータをコピー outStream.CopyTo csvStream '============================== ' ストリームのデータを書き出す '============================== 'ファイルに保存 csvStream.SaveToFile (myPath & "\[failname].csv"), adSaveCreateOverWrite 'ストリームの後始末 csvStream.Close outStream.Close End Sub
↧
マクロ 各シートからシート1に戻るボタンを設置する
各シートの同じ位置に「シート1に戻る」ボタンを付けるマクロを実行したいです。 前回教えていただいたことから、ボタンを設置するマクロはわかったのですが、 『2枚目以降のシートから、シートが終わるまで、各シートにボタンを設置する』マクロがわかりません。 1枚目は目次?的なページですので、 2枚目以降から、シートが終わるまで、決められた位置に「戻る」ボタンをつける。 という作業をマクロに記憶させたいと考えています。 ※下記は、こちらで教えていただいたものを参考にしたマクロです。 「戻る」という言葉をどこに入れてよいかもわからりません。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ Sub 戻るボタン設置() With ActiveSheet For i = 1 '幅140、高さ20のボタンを追加 .Buttons.Add(145 * i, 120, 140, 20).Text = i Next i End With End Sub
↧
VBAでIE操作メニュー選択完了まで待機したい
VBAでIE操作メニュー選択完了まで待機したい ●経緯: VBAを利用し、IEを操作するマクロを組んでいますが、下記の部分で処理が終わるまで待つ方法がわかりません。 IEで、あるWebサイト内にある複数のプルダウンメニューを順に選択して行きますが、このプルダウンメニューはそれぞれ順番に入力していかないと入力できないタイプの物です。 説明がわかりにくいかもしれませんが、下記のような3つのメニューがあり、MenuName1は最初から選択可能な状態。 MenuName2と3はグレーアウトしており選択できないが、MenuName1を選択するとMenuName2が選択可能になり、MenuName2を選択するとMenuName3がそれぞれ選択可能になります。 MenuName1 → 選択可能 MenuName2 → グレーアウト MenuName3 → グレーアウト 該当のプルダウンメニュー部分のWebソースは後述しますが、上記各メニューを選択後、 fireEvent ("onchange") を実行し、そのまますぐに次のメニューを選択しようとすると、Web側の処理が追いつかずにエラーになってしまいます。 現状、下記のように無理やり一定時間待機させてから次のメニュー選択に移っていますが、他にメニューのグレーアウトが終わるまで待つ方法はありませんでしょうか? While Now < DateAdd("s", second, Now) DoEvents Wend ●HTMLソース: それぞれ、該当メニュー部分のコードは下記のとおりです。 ・アクティブになっているプルダウンメニュー <select name="MenuName1" onchange="javascript:setTimeout('__doPostBack(\'MenuName1\' ,\'\')', 0)" id="MenuName1" style="width:110px;"> ・非アクティブのプルダウンメニュー <select name="MenuName2" onchange="javascript:setTimeout('__doPostBack(\'MenuName2\' ,\'\')', 0)" id="MenuName2" disabled="disabled" style="width:110px;"> ●試したこと: 1) Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop で、一番最初のWebページ読み込み完了まで待つことはできますが、該当 プルダウンメニューの選択完了を待つことはできませんでした。 2) Do ~~~ DoEvents Loop 上記コードをMenuName2、3の実行直前にいろいろ試してみましたが、どうにもうまくいきません。 それぞれ下記のような条件文で記載しましたが、記載のとおりの失敗でした。 2-1) Do While InStr(objIE.Document.getElementById("MenuName2").outerHTML, "disabled") > 0 →「書き込みできません」 2-2) Do Until IsNull(objIE.Document.getElementById("MenuName2").disabled) →無限ループ?ここで止まる 2-3) Do While objIE.Document.getElementById("MenuName2").disabled = True →「オブジェクト変数またはwithブロック変数が設定されていません」 2-4) Obj1 = objIE.Document.getElementById("MenuName2").disabled Do Until Obj1 Is Nothing →「オブジェクトが必要です」 ※Obj1はVariant型で宣言 しかも上記、それぞれ何度も繰り返しているうちに、タイミングの問題なのかたまに成功したりします。 さらに、Debug.Print等で各条件文入れてみると、ちゃんと条件結果の値が出てくるので、ますますうまくいかない理由がわかりません。 本件、各プルダウンメニューのグレーアウトが解除されるまで待つ方法を教えてください。 ※書き込みには上記(↑)に対する回答を含めてください。 ※該当WebサイトのHTMLソース、マクロの全文は長いので抜粋にて記載しています。 不足がある場合は該当部分を探してきますので、どの部分が必要か補足してください。 ※該当Webサイトは関係者専用のため、URLは公開できません。 ※該当Webサイトは委託先に発注しているもので、Web側の改変は不可能です。 ※「検索したけど解決法はありませんでした」と言う旨の回答はご遠慮願います。 ※書き込みは他のユーザーの迷惑にならないようにお願いいたします。
↧
VB.NETの良書(特にクラス)
VisualBasic.NETに関して、今まで何冊か本を購入し、勉強したのですが、クラス関係(メソッド、プロパティ、継承、インターフェイス)などが難しくなかなか理解出来ないので、そのあたりに詳しく書かれているお勧めの書籍、もしくはWebサイトがあれば教えて下さい。出来ればヴァージョンはVB2008か、VB2010でよろしくお願いします。
↧
↧
visual studio 2013のエラー
#include <stdio.h> int main(void) { int n1, n2; int wa; puts("二つの整数を入力してください。"); printf("整数1:"); scanf_s("%d", &n1); printf("整数2:"); scanf_s("%d , &n2") wa = n1 + n2; printf("それらの和は%dです。\n", wa); return 0; } エラー 1error C2146: 構文エラー : ';' が、識別子 'wa' の前に必要です。c:\users\伸之\documents\visual studio 2013\projects\training\source.cpp101training 2IntelliSense: ';' が必要ですc:\Users\伸之\Documents\Visual Studio 2013\Projects\training\Source.cpp92training のエラーが出たなんですけど、原因がわかりません。 よろしくお願いします。
↧
バイナリデータを文字に変換して圧縮もしたい
あるバイナリデータのバックアップを印刷したいと考えています。 元のバイナリデータが2MBぐらいあるのでそれをZIP圧縮して1MBでそれをbase64で文字列に変換すると 2MBぐらいの文字列になってしまい 印刷すると150ページでした。 金庫にしまうにしても150ページでは多いのでなんとか10ページぐらいに抑えたいです。 そこで考えたのですがbase64の要領で日本語の文字列に変換することができれば印刷枚数を減らせるかと思うのですが そういった圧縮を行うライブラリってないものでしょうか? 容量は減らなくてもいいので 印刷のページ数を減らしたいです。 base64が64文字に対し日本語の文字列は5万文字?あるので大幅に減らせそうですし 小学生で習う漢字レベルだけでも1文字の情報量が100倍以上になるのでうまくいくのかなぁ?っと。 ちなみにバックアップするものは秘密鍵のような物で もちろん暗号化してクラウド等オンラインでもバックアップをしていますが 非常に重要な物のため万が一に備えて紙でも印刷して残しておき いざというときに復元できるようにしたいです。 復元する際はOCR使って さらに目視でデータ確認で数時間とか数日かかるとしても 復元したいと思うレベルのデータです。 環境はVisualStudioでC#で組もうかと思っていますが 変換と復元作業ができれば環境は問いません。 いいライブラリやアルゴリズムがあれば教えてください。 あるいは日本語文字でなくても QRコードのように印刷した紙から一定のアルゴリズムでデコードできればなんでもいいのでよろしくお願いいたします。
↧
32bit化したEXEが64bitOSで動かない
VB.NETで作成しているシステムがあり、当システムが64bitOS上では動かないことが判明したため、プラットフォームを「Any CPU」から「x86」に変更し、各端末のEXEを差し替える対応を行いました。 これによりほぼ全ての端末でシステムが動くようになったのですが、一台だけ「Any CPU」では動いていたのに、「x86」に差し替えると動かなくなった端末がありました。 その端末はWindows7の64bitOSなので、普通であれば「Any CPU」では動かず、「x86」で動くはずなのですが、まったく逆の現象が発生し、原因がわかりません。 この現象の要因としてどのようなことが考えられるでしょうか?
↧