14 Messages
Digest #4384
Messages
Thu Dec 21, 2017 9:59 pm (PST) . Posted by:
"Heru Safrudin" heru.safrudin
Terima kash Pak Hendrik,
Saya khawatir data yang saya kirim ke beberapa orang tidak kenal macro, sehingga jika macro tidak aktif maka perubahan yg dilakukan tidak akan kelihatan.
Adakah cara lain yang tidak memakai macro ?
Wassalam
Heru Safrudin
From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
Sent: 20 Desember 2017 14:22
To: 'Heru Safrudin' fcprocessing.bisikediri@bisi.co.id [belajar-excel]
Subject: Re: [belajar-excel] Merubah warna cell yang diupdate
Hai Heru,
Ini adalah Macro warisan mbak Siti.
Option Explicit
Dim otx As String
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
otx = Target(1, 1).Value
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not otx = "" Then
If Not Target(1, 1).Text = otx Then
Target(1, 1).Interior.Color = vbYellow
End If
End If
End Sub
Pada saat Workbook sdh siap untuk diubah copas Macro di atas ke "This Workbook" pada sisi sebelah kiri VBE Sheet. Perubahan berlaku hanya untuk sel yang ada isinya (termasuk spasi) dan hanya berlaku sekali saja.
Begitu isi sel diubah maka warna interiornya akan berubah menjadi kuning (vbYellow).
Salam,
HK
On Wednesday, 20 December 2017, 11:39:30 AM GMT+7, 'Heru Safrudin' fcprocessing.bisikediri@bisi.co.id [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
Dear All,
اَلسَّــــلَامُ عَلًيْــــكُمْ وَرَحْمَةُ اللـــهِ وَبَرَكَاتُـــهُ
Maaf Langsung pada pertanyaan, Bagaimana cara mendeteksi cell pada worksheet yang terupdate (datanya dirubah) ?
Misal saya ingin isi cell yg terupdate berubah warna interiornya
Mohon pencerahannya
Terima kasih
وَالسَّـــلَامُ عَلَيْـــكُمْ وَرَحْمَةُ اللـــهِ وَبَرَكَاتُـــهُ
Heru Safrudin
Saya khawatir data yang saya kirim ke beberapa orang tidak kenal macro, sehingga jika macro tidak aktif maka perubahan yg dilakukan tidak akan kelihatan.
Adakah cara lain yang tidak memakai macro ?
Wassalam
Heru Safrudin
From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
Sent: 20 Desember 2017 14:22
To: 'Heru Safrudin' fcprocessing.bisikediri@bisi.co.id [belajar-excel]
Subject: Re: [belajar-excel] Merubah warna cell yang diupdate
Hai Heru,
Ini adalah Macro warisan mbak Siti.
Option Explicit
Dim otx As String
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
otx = Target(1, 1).Value
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not otx = "" Then
If Not Target(1, 1).Text = otx Then
Target(1, 1).Interior.Color = vbYellow
End If
End If
End Sub
Pada saat Workbook sdh siap untuk diubah copas Macro di atas ke "This Workbook" pada sisi sebelah kiri VBE Sheet. Perubahan berlaku hanya untuk sel yang ada isinya (termasuk spasi) dan hanya berlaku sekali saja.
Begitu isi sel diubah maka warna interiornya akan berubah menjadi kuning (vbYellow).
Salam,
HK
On Wednesday, 20 December 2017, 11:39:30 AM GMT+7, 'Heru Safrudin' fcprocessing.bisikediri@bisi.co.id [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
Dear All,
اَلسَّــــلَامُ عَلًيْــــكُمْ وَرَحْمَةُ اللـــهِ وَبَرَكَاتُـــهُ
Maaf Langsung pada pertanyaan, Bagaimana cara mendeteksi cell pada worksheet yang terupdate (datanya dirubah) ?
Misal saya ingin isi cell yg terupdate berubah warna interiornya
Mohon pencerahannya
Terima kasih
وَالسَّـــلَامُ عَلَيْـــكُمْ وَرَحْمَةُ اللـــهِ وَبَرَكَاتُـــهُ
Heru Safrudin
Thu Dec 21, 2017 10:01 pm (PST) . Posted by:
"Fatania Latifa"
Dear Master excel,
Mohon info, bagaimana rumus untuk memecah alamat menjadi 2 kolom, dengan
syarat per kolom maksimal 40 karakter, tatpi pemenggalannya bagus, tidak
terpotong suku katanya? terlampir contohnya
Mohon info, bagaimana rumus untuk memecah alamat menjadi 2 kolom, dengan
syarat per kolom maksimal 40 karakter, tatpi pemenggalannya bagus, tidak
terpotong suku katanya? terlampir contohnya
Fri Dec 22, 2017 3:28 am (PST) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Hai Fatania,
Contoh salah satu formula yang dapat digunakan seperti dalam file terlampir..
Regards,
Kid
2017-12-22 11:36 GMT+07:00 Fatania Latifa fatania.latifa@gmail.com
[belajar-excel] <belajar-excel@yahoogroups.com>:
>
>
> Dear Master excel,
>
> Mohon info, bagaimana rumus untuk memecah alamat menjadi 2 kolom, dengan
> syarat per kolom maksimal 40 karakter, tatpi pemenggalannya bagus, tidak
> terpotong suku katanya? terlampir contohnya
>
>
>
Contoh salah satu formula yang dapat digunakan seperti dalam file terlampir..
Regards,
Kid
2017-12-22 11:36 GMT+07:00 Fatania Latifa fatania.latifa@gmail.com
[belajar-excel] <belajar-excel@yahoogroups.com>:
>
>
> Dear Master excel,
>
> Mohon info, bagaimana rumus untuk memecah alamat menjadi 2 kolom, dengan
> syarat per kolom maksimal 40 karakter, tatpi pemenggalannya bagus, tidak
> terpotong suku katanya? terlampir contohnya
>
>
>
Thu Dec 21, 2017 11:57 pm (PST) . Posted by:
"Rachmat Hidayat"
Dear Master Excel,
Semoga dalam keadaan sehat wal'afiat, mohon bantuan nya bagaimana cara menghilangkan tanda (-) yang berada di belakang angka contoh 009- dan tanda (-) nya dipindahkan kedepan angka tersebut Untuk detail mohon dilihat file excel nya
Sent from Mail for Windows 10
Semoga dalam keadaan sehat wal'afiat, mohon bantuan nya bagaimana cara menghilangkan tanda (-) yang berada di belakang angka contoh 009- dan tanda (-) nya dipindahkan kedepan angka tersebut Untuk detail mohon dilihat file excel nya
Sent from Mail for Windows 10
Fri Dec 22, 2017 1:04 am (PST) . Posted by:
"salman faeroez" salman.faeroez
Dear Rachmat,
seperti inikah yang dimaksud?
[image: Gambar sisip 2]
Terlampir ya dan semoga sesuai harapan.
:)
Mungkin ada master-master lain yang lebih sederhana lagi proses nya.
mohon maaf kalo tidak sesuai.
Regards
salman
Pada 21 Desember 2017 23.52, Rachmat Hidayat my.android03@gmail.com
[belajar-excel] <belajar-excel@yahoogroups.com> menulis:
>
>
> Dear Master Excel,
>
>
>
> Semoga dalam keadaan sehat wal'afiat, mohon bantuan nya bagaimana cara
> menghilangkan tanda (-) yang berada di belakang angka contoh *009- *dan
> tanda (-) nya dipindahkan kedepan angka tersebut Untuk detail mohon dilihat
> file excel nya
>
>
>
>
>
>
>
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for
> Windows 10
>
>
>
>
>
seperti inikah yang dimaksud?
[image: Gambar sisip 2]
Terlampir ya dan semoga sesuai harapan.
:)
Mungkin ada master-master lain yang lebih sederhana lagi proses nya.
mohon maaf kalo tidak sesuai.
Regards
salman
Pada 21 Desember 2017 23.52, Rachmat Hidayat my.android03@gmail.com
[belajar-excel] <belajar-excel@yahoogroups.com> menulis:
>
>
> Dear Master Excel,
>
>
>
> Semoga dalam keadaan sehat wal'afiat, mohon bantuan nya bagaimana cara
> menghilangkan tanda (-) yang berada di belakang angka contoh *009- *dan
> tanda (-) nya dipindahkan kedepan angka tersebut Untuk detail mohon dilihat
> file excel nya
>
>
>
>
>
>
>
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for
> Windows 10
>
>
>
>
>
Fri Dec 22, 2017 1:09 am (PST) . Posted by:
"Zainul Ulum" zainul_ulum
Pak Rachmat,
coba rumus ini:
=IF(ISERR(FIND("-",[@ORI])),[@ORI],-1*(SUBSTITUTE([@ORI],"-",REPT(" ",99))))
Thanks,
-zainul
#dikirim_pakai_mail.yahoo.com_tanpa_pulsa#
--------------------------------------------
On Fri, 22/12/17, Rachmat Hidayat my.android03@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
Subject: [belajar-excel] #ask#formula 22122017
To: belajar-excel@yahoogroups.com
Date: Friday, 22 December, 2017, 2:52 PM
Dear Master Excel, Semoga dalam keadaan sehat
wal'afiat, mohon bantuan nya bagaimana cara menghilangkan
tanda (-) yang berada di belakang angka contoh 009-
dan tanda (-) nya dipindahkan kedepan angka tersebut
Untuk detail mohon dilihat file excel nya Sent from Mail
for Windows 10
#yiv4479021898 #yiv4479021898 --
#yiv4479021898ygrp-mkp {
border:1px solid #d8d8d8;font-family:Arial;margin:10px
0;padding:0 10px;}
#yiv4479021898 #yiv4479021898ygrp-mkp hr {
border:1px solid #d8d8d8;}
#yiv4479021898 #yiv4479021898ygrp-mkp #yiv4479021898hd {
color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px
0;}
#yiv4479021898 #yiv4479021898ygrp-mkp #yiv4479021898ads {
margin-bottom:10px;}
#yiv4479021898 #yiv4479021898ygrp-mkp .yiv4479021898ad {
padding:0 0;}
#yiv4479021898 #yiv4479021898ygrp-mkp .yiv4479021898ad p {
margin:0;}
#yiv4479021898 #yiv4479021898ygrp-mkp .yiv4479021898ad a {
color:#0000ff;text-decoration:none;}
#yiv4479021898 #yiv4479021898ygrp-sponsor
#yiv4479021898ygrp-lc {
font-family:Arial;}
#yiv4479021898 #yiv4479021898ygrp-sponsor
#yiv4479021898ygrp-lc #yiv4479021898hd {
margin:10px
0px;font-weight:700;font-size:78%;line-height:122%;}
#yiv4479021898 #yiv4479021898ygrp-sponsor
#yiv4479021898ygrp-lc .yiv4479021898ad {
margin-bottom:10px;padding:0 0;}
#yiv4479021898 #yiv4479021898actions {
font-family:Verdana;font-size:11px;padding:10px 0;}
#yiv4479021898 #yiv4479021898activity {
background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}
#yiv4479021898 #yiv4479021898activity span {
font-weight:700;}
#yiv4479021898 #yiv4479021898activity span:first-child {
text-transform:uppercase;}
#yiv4479021898 #yiv4479021898activity span a {
color:#5085b6;text-decoration:none;}
#yiv4479021898 #yiv4479021898activity span span {
color:#ff7900;}
#yiv4479021898 #yiv4479021898activity span
.yiv4479021898underline {
text-decoration:underline;}
#yiv4479021898 .yiv4479021898attach {
clear:both;display:table;font-family:Arial;font-size:12px;padding:10px
0;width:400px;}
#yiv4479021898 .yiv4479021898attach div a {
text-decoration:none;}
#yiv4479021898 .yiv4479021898attach img {
border:none;padding-right:5px;}
#yiv4479021898 .yiv4479021898attach label {
display:block;margin-bottom:5px;}
#yiv4479021898 .yiv4479021898attach label a {
text-decoration:none;}
#yiv4479021898 blockquote {
margin:0 0 0 4px;}
#yiv4479021898 .yiv4479021898bold {
font-family:Arial;font-size:13px;font-weight:700;}
#yiv4479021898 .yiv4479021898bold a {
text-decoration:none;}
#yiv4479021898 dd.yiv4479021898last p a {
font-family:Verdana;font-weight:700;}
#yiv4479021898 dd.yiv4479021898last p span {
margin-right:10px;font-family:Verdana;font-weight:700;}
#yiv4479021898 dd.yiv4479021898last p
span.yiv4479021898yshortcuts {
margin-right:0;}
#yiv4479021898 div.yiv4479021898attach-table div div a {
text-decoration:none;}
#yiv4479021898 div.yiv4479021898attach-table {
width:400px;}
#yiv4479021898 div.yiv4479021898file-title a, #yiv4479021898
div.yiv4479021898file-title a:active, #yiv4479021898
div.yiv4479021898file-title a:hover, #yiv4479021898
div.yiv4479021898file-title a:visited {
text-decoration:none;}
#yiv4479021898 div.yiv4479021898photo-title a,
#yiv4479021898 div.yiv4479021898photo-title a:active,
#yiv4479021898 div.yiv4479021898photo-title a:hover,
#yiv4479021898 div.yiv4479021898photo-title a:visited {
text-decoration:none;}
#yiv4479021898 div#yiv4479021898ygrp-mlmsg
#yiv4479021898ygrp-msg p a span.yiv4479021898yshortcuts {
font-family:Verdana;font-size:10px;font-weight:normal;}
#yiv4479021898 .yiv4479021898green {
color:#628c2a;}
#yiv4479021898 .yiv4479021898MsoNormal {
margin:0 0 0 0;}
#yiv4479021898 o {
font-size:0;}
#yiv4479021898 #yiv4479021898photos div {
float:left;width:72px;}
#yiv4479021898 #yiv4479021898photos div div {
border:1px solid
#666666;min-height:62px;overflow:hidden;width:62px;}
#yiv4479021898 #yiv4479021898photos div label {
color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}
#yiv4479021898 #yiv4479021898reco-category {
font-size:77%;}
#yiv4479021898 #yiv4479021898reco-desc {
font-size:77%;}
#yiv4479021898 .yiv4479021898replbq {
margin:4px;}
#yiv4479021898 #yiv4479021898ygrp-actbar div a:first-child {
margin-right:2px;padding-right:5px;}
#yiv4479021898 #yiv4479021898ygrp-mlmsg {
font-size:13px;font-family:Arial, helvetica, clean,
sans-serif;}
#yiv4479021898 #yiv4479021898ygrp-mlmsg table {
font-size:inherit;font:100%;}
#yiv4479021898 #yiv4479021898ygrp-mlmsg select,
#yiv4479021898 input, #yiv4479021898 textarea {
font:99% Arial, Helvetica, clean, sans-serif;}
#yiv4479021898 #yiv4479021898ygrp-mlmsg pre, #yiv4479021898
code {
font:115% monospace;}
#yiv4479021898 #yiv4479021898ygrp-mlmsg * {
line-height:1.22em;}
#yiv4479021898 #yiv4479021898ygrp-mlmsg #yiv4479021898logo {
padding-bottom:10px;}
#yiv4479021898 #yiv4479021898ygrp-msg p a {
font-family:Verdana;}
#yiv4479021898 #yiv4479021898ygrp-msg
p#yiv4479021898attach-count span {
color:#1E66AE;font-weight:700;}
#yiv4479021898 #yiv4479021898ygrp-reco
#yiv4479021898reco-head {
color:#ff7900;font-weight:700;}
#yiv4479021898 #yiv4479021898ygrp-reco {
margin-bottom:20px;padding:0px;}
#yiv4479021898 #yiv4479021898ygrp-sponsor #yiv4479021898ov
li a {
font-size:130%;text-decoration:none;}
#yiv4479021898 #yiv4479021898ygrp-sponsor #yiv4479021898ov
li {
font-size:77%;list-style-type:square;padding:6px 0;}
#yiv4479021898 #yiv4479021898ygrp-sponsor #yiv4479021898ov
ul {
margin:0;padding:0 0 0 8px;}
#yiv4479021898 #yiv4479021898ygrp-text {
font-family:Georgia;}
#yiv4479021898 #yiv4479021898ygrp-text p {
margin:0 0 1em 0;}
#yiv4479021898 #yiv4479021898ygrp-text tt {
font-size:120%;}
#yiv4479021898 #yiv4479021898ygrp-vital ul li:last-child {
border-right:none !important;
}
#yiv4479021898
coba rumus ini:
=IF(ISERR(FIND("-",[@ORI])),[@ORI],-1*(SUBSTITUTE([@ORI],"-",REPT(" ",99))))
Thanks,
-zainul
#dikirim_pakai_mail.yahoo.com_tanpa_pulsa#
--------------------------------------------
On Fri, 22/12/17, Rachmat Hidayat my.android03@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
Subject: [belajar-excel] #ask#formula 22122017
To: belajar-excel@yahoogroups.com
Date: Friday, 22 December, 2017, 2:52 PM
Dear Master Excel, Semoga dalam keadaan sehat
wal'afiat, mohon bantuan nya bagaimana cara menghilangkan
tanda (-) yang berada di belakang angka contoh 009-
dan tanda (-) nya dipindahkan kedepan angka tersebut
Untuk detail mohon dilihat file excel nya Sent from Mail
for Windows 10
#yiv4479021898 #yiv4479021898 --
#yiv4479021898ygrp-
border:1px solid #d8d8d8;font-
0;padding:0 10px;}
#yiv4479021898 #yiv4479021898ygrp-
border:1px solid #d8d8d8;}
#yiv4479021898 #yiv4479021898ygrp-
color:#628c2a;
0;}
#yiv4479021898 #yiv4479021898ygrp-
margin-bottom:
#yiv4479021898 #yiv4479021898ygrp-
padding:0 0;}
#yiv4479021898 #yiv4479021898ygrp-
margin:0;}
#yiv4479021898 #yiv4479021898ygrp-
color:#0000ff;
#yiv4479021898 #yiv4479021898ygrp-
#yiv4479021898ygrp-
font-family:
#yiv4479021898 #yiv4479021898ygrp-
#yiv4479021898ygrp-
margin:10px
0px;font-weight:
#yiv4479021898 #yiv4479021898ygrp-
#yiv4479021898ygrp-
margin-bottom:
#yiv4479021898 #yiv4479021898actio
font-family:
#yiv4479021898 #yiv4479021898activ
background-color:
#yiv4479021898 #yiv4479021898activ
font-weight:
#yiv4479021898 #yiv4479021898activ
text-transform:
#yiv4479021898 #yiv4479021898activ
color:#5085b6;
#yiv4479021898 #yiv4479021898activ
color:#ff7900;
#yiv4479021898 #yiv4479021898activ
.yiv4479021898under
text-decoration:
#yiv4479021898 .yiv4479021898attac
clear:both;display:
0;width:400px;
#yiv4479021898 .yiv4479021898attac
text-decoration:
#yiv4479021898 .yiv4479021898attac
border:none;
#yiv4479021898 .yiv4479021898attac
display:block;
#yiv4479021898 .yiv4479021898attac
text-decoration:
#yiv4479021898 blockquote {
margin:0 0 0 4px;}
#yiv4479021898 .yiv4479021898bold {
font-family:
#yiv4479021898 .yiv4479021898bold a {
text-decoration:
#yiv4479021898 dd.yiv4479021898las
font-family:
#yiv4479021898 dd.yiv4479021898las
margin-right:
#yiv4479021898 dd.yiv4479021898las
span.yiv4479021898y
margin-right:
#yiv4479021898 div.yiv4479021898at
text-decoration:
#yiv4479021898 div.yiv4479021898at
width:400px;
#yiv4479021898 div.yiv4479021898fi
div.yiv4479021898fi
div.yiv4479021898fi
div.yiv4479021898fi
text-decoration:
#yiv4479021898 div.yiv4479021898ph
#yiv4479021898 div.yiv4479021898ph
#yiv4479021898 div.yiv4479021898ph
#yiv4479021898 div.yiv4479021898ph
text-decoration:
#yiv4479021898 div#yiv4479021898yg
#yiv4479021898ygrp-
font-family:
#yiv4479021898 .yiv4479021898green {
color:#628c2a;
#yiv4479021898 .yiv4479021898MsoNo
margin:0 0 0 0;}
#yiv4479021898 o {
font-size:0;
#yiv4479021898 #yiv4479021898photo
float:left;width:
#yiv4479021898 #yiv4479021898photo
border:1px solid
#666666;min-
#yiv4479021898 #yiv4479021898photo
color:#666666;
#yiv4479021898 #yiv4479021898reco-
font-size:77%
#yiv4479021898 #yiv4479021898reco-
font-size:77%
#yiv4479021898 .yiv4479021898replb
margin:4px;}
#yiv4479021898 #yiv4479021898ygrp-
margin-right:
#yiv4479021898 #yiv4479021898ygrp-
font-size:13px;
sans-serif;}
#yiv4479021898 #yiv4479021898ygrp-
font-size:inherit;
#yiv4479021898 #yiv4479021898ygrp-
#yiv4479021898 input, #yiv4479021898 textarea {
font:99% Arial, Helvetica, clean, sans-serif;}
#yiv4479021898 #yiv4479021898ygrp-
code {
font:115% monospace;}
#yiv4479021898 #yiv4479021898ygrp-
line-height:
#yiv4479021898 #yiv4479021898ygrp-
padding-bottom:
#yiv4479021898 #yiv4479021898ygrp-
font-family:
#yiv4479021898 #yiv4479021898ygrp-
p#yiv4479021898atta
color:#1E66AE;
#yiv4479021898 #yiv4479021898ygrp-
#yiv4479021898reco-
color:#ff7900;
#yiv4479021898 #yiv4479021898ygrp-
margin-bottom:
#yiv4479021898 #yiv4479021898ygrp-
li a {
font-size:130%
#yiv4479021898 #yiv4479021898ygrp-
li {
font-size:77%
#yiv4479021898 #yiv4479021898ygrp-
ul {
margin:0;padding:
#yiv4479021898 #yiv4479021898ygrp-
font-family:
#yiv4479021898 #yiv4479021898ygrp-
margin:0 0 1em 0;}
#yiv4479021898 #yiv4479021898ygrp-
font-size:120%
#yiv4479021898 #yiv4479021898ygrp-
border-right:
}
#yiv4479021898
Fri Dec 22, 2017 1:34 am (PST) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
ikutan ah...
Berhubung tidak tahu seperti apa varian datanya secara pasti, jadi asumsi
yang digunakan :
1. ada records diakhiri spasi
2. ada records yang diakhiri '-'
3. records yang punya '-' selalu diambil 3 char pertama
4. records bertipe teks tanpa '-' diambil apa adanya
5. records bertipe numerik positif diambil apa adanya tetap numerik positif
6. records bertipe numerik negatif menjadi berformat '-000' (dash 3 digit
angka dengan leading zero)
File terlampir.
Regards,
Kid
2017-12-22 14:52 GMT+07:00 Rachmat Hidayat my.android03@gmail.com
[belajar-excel] <belajar-excel@yahoogroups.com>:
>
>
> Dear Master Excel,
>
>
>
> Semoga dalam keadaan sehat wal'afiat, mohon bantuan nya bagaimana cara
> menghilangkan tanda (-) yang berada di belakang angka contoh *009- *dan
> tanda (-) nya dipindahkan kedepan angka tersebut Untuk detail mohon dilihat
> file excel nya
>
>
>
>
>
>
>
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for
> Windows 10
>
>
>
>
>
Berhubung tidak tahu seperti apa varian datanya secara pasti, jadi asumsi
yang digunakan :
1. ada records diakhiri spasi
2. ada records yang diakhiri '-'
3. records yang punya '-' selalu diambil 3 char pertama
4. records bertipe teks tanpa '-' diambil apa adanya
5. records bertipe numerik positif diambil apa adanya tetap numerik positif
6. records bertipe numerik negatif menjadi berformat '-000' (dash 3 digit
angka dengan leading zero)
File terlampir.
Regards,
Kid
2017-12-22 14:52 GMT+07:00 Rachmat Hidayat my.android03@gmail.com
[belajar-excel] <belajar-excel@yahoogroups.com>:
>
>
> Dear Master Excel,
>
>
>
> Semoga dalam keadaan sehat wal'afiat, mohon bantuan nya bagaimana cara
> menghilangkan tanda (-) yang berada di belakang angka contoh *009- *dan
> tanda (-) nya dipindahkan kedepan angka tersebut Untuk detail mohon dilihat
> file excel nya
>
>
>
>
>
>
>
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for
> Windows 10
>
>
>
>
>
Fri Dec 22, 2017 2:28 am (PST) . Posted by:
"Rachmat Hidayat"
Iya betul mas terima kasih ilmu nya
Sent from Mail for Windows 10
From: salman faeroez salman.faeroez@gmail.com [belajar-excel]
Sent: Friday, December 22, 2017 4:08 PM
To: belajar-excel@yahoogroups.com
Subject: Re: [belajar-excel] #ask#formula 22122017
Dear Rachmat,
seperti inikah yang dimaksud?
Terlampir ya dan semoga sesuai harapan.
:)
Mungkin ada master-master lain yang lebih sederhana lagi proses nya.
mohon maaf kalo tidak sesuai...
Regards
salman
Pada 21 Desember 2017 23.52, Rachmat Hidayat my.android03@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com> menulis:
Dear Master Excel,
Semoga dalam keadaan sehat wal'afiat, mohon bantuan nya bagaimana cara menghilangkan tanda (-) yang berada di belakang angka contoh 009- dan tanda (-) nya dipindahkan kedepan angka tersebut Untuk detail mohon dilihat file excel nya
Sent from Mail for Windows 10
Sent from Mail for Windows 10
From: salman faeroez salman.faeroez@gmail.com [belajar-excel]
Sent: Friday, December 22, 2017 4:08 PM
To: belajar-excel@yahoogroups.com
Subject: Re: [belajar-excel] #ask#formula 22122017
Dear Rachmat,
seperti inikah yang dimaksud?
Terlampir ya dan semoga sesuai harapan.
:)
Mungkin ada master-master lain yang lebih sederhana lagi proses nya.
mohon maaf kalo tidak sesuai...
Regards
salman
Pada 21 Desember 2017 23.52, Rachmat Hidayat my.android03@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com> menulis:
Dear Master Excel,
Semoga dalam keadaan sehat wal'afiat, mohon bantuan nya bagaimana cara menghilangkan tanda (-) yang berada di belakang angka contoh 009- dan tanda (-) nya dipindahkan kedepan angka tersebut Untuk detail mohon dilihat file excel nya
Sent from Mail for Windows 10
Fri Dec 22, 2017 4:43 am (PST) . Posted by:
"Rachmat Hidayat"
Terima kasih pak Zainul
Akan saya coba juga untuk formula nya
On Dec 22, 2017 4:09 PM, "Zainul Ulum zainul_ulum@yahoo.com
[belajar-excel]" <belajar-excel@yahoogroups.com> wrote:
>
>
> Pak Rachmat,
>
> coba rumus ini:
> =IF(ISERR(FIND("-",[@ORI])),[@ORI],-1*(SUBSTITUTE([@ORI],"-",REPT("
> ",99))))
>
> Thanks,
> -zainul
>
> #dikirim_pakai_mail.yahoo.com_tanpa_pulsa#
>
> --------------------------------------------
> On Fri, 22/12/17, Rachmat Hidayat my.android03@gmail.com [belajar-excel] <
> belajar-excel@yahoogroups..com> wrote:
>
> Subject: [belajar-excel] #ask#formula 22122017
> To: belajar-excel@yahoogroups.com
> Date: Friday, 22 December, 2017, 2:52 PM
>
>
>
>
>
>
>
>
>
>
>
>
> Dear Master Excel, Semoga dalam keadaan sehat
> wal'afiat, mohon bantuan nya bagaimana cara menghilangkan
> tanda (-) yang berada di belakang angka contoh 009-
> dan tanda (-) nya dipindahkan kedepan angka tersebut
> Untuk detail mohon dilihat file excel nya Sent from Mail
> for Windows 10
>
>
>
>
>
>
>
>
>
>
> #yiv4479021898 #yiv4479021898 --
> #yiv4479021898ygrp-mkp {
> border:1px solid #d8d8d8;font-family:Arial;margin:10px
> 0;padding:0 10px;}
>
> #yiv4479021898 #yiv4479021898ygrp-mkp hr {
> border:1px solid #d8d8d8;}
>
> #yiv4479021898 #yiv4479021898ygrp-mkp #yiv4479021898hd {
> color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px
> 0;}
>
> #yiv4479021898 #yiv4479021898ygrp-mkp #yiv4479021898ads {
> margin-bottom:10px;}
>
> #yiv4479021898 #yiv4479021898ygrp-mkp .yiv4479021898ad {
> padding:0 0;}
>
> #yiv4479021898 #yiv4479021898ygrp-mkp .yiv4479021898ad p {
> margin:0;}
>
> #yiv4479021898 #yiv4479021898ygrp-mkp .yiv4479021898ad a {
> color:#0000ff;text-decoration:none;}
> #yiv4479021898 #yiv4479021898ygrp-sponsor
> #yiv4479021898ygrp-lc {
> font-family:Arial;}
>
> #yiv4479021898 #yiv4479021898ygrp-sponsor
> #yiv4479021898ygrp-lc #yiv4479021898hd {
> margin:10px
> 0px;font-weight:700;font-size:78%;line-height:122%;}
>
> #yiv4479021898 #yiv4479021898ygrp-sponsor
> #yiv4479021898ygrp-lc .yiv4479021898ad {
> margin-bottom:10px;padding:0 0;}
>
> #yiv4479021898 #yiv4479021898actions {
> font-family:Verdana;font-size:11px;padding:10px 0;}
>
> #yiv4479021898 #yiv4479021898activity {
> background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;
> padding:10px;}
>
> #yiv4479021898 #yiv4479021898activity span {
> font-weight:700;}
>
> #yiv4479021898 #yiv4479021898activity span:first-child {
> text-transform:uppercase;}
>
> #yiv4479021898 #yiv4479021898activity span a {
> color:#5085b6;text-decoration:none;}
>
> #yiv4479021898 #yiv4479021898activity span span {
> color:#ff7900;}
>
> #yiv4479021898 #yiv4479021898activity span
> .yiv4479021898underline {
> text-decoration:underline;}
>
> #yiv4479021898 .yiv4479021898attach {
> clear:both;display:table;font-family:Arial;font-size:12px;padding:10px
> 0;width:400px;}
>
> #yiv4479021898 .yiv4479021898attach div a {
> text-decoration:none;}
>
> #yiv4479021898 .yiv4479021898attach img {
> border:none;padding-right:5px;}
>
> #yiv4479021898 .yiv4479021898attach label {
> display:block;margin-bottom:5px;}
>
> #yiv4479021898 .yiv4479021898attach label a {
> text-decoration:none;}
>
> #yiv4479021898 blockquote {
> margin:0 0 0 4px;}
>
> #yiv4479021898 .yiv4479021898bold {
> font-family:Arial;font-size:13px;font-weight:700;}
>
> #yiv4479021898 .yiv4479021898bold a {
> text-decoration:none;}
>
> #yiv4479021898 dd.yiv4479021898last p a {
> font-family:Verdana;font-weight:700;}
>
> #yiv4479021898 dd.yiv4479021898last p span {
> margin-right:10px;font-family:Verdana;font-weight:700;}
>
> #yiv4479021898 dd.yiv4479021898last p
> span.yiv4479021898yshortcuts {
> margin-right:0;}
>
> #yiv4479021898 div.yiv4479021898attach-table div div a {
> text-decoration:none;}
>
> #yiv4479021898 div.yiv4479021898attach-table {
> width:400px;}
>
> #yiv4479021898 div.yiv4479021898file-title a, #yiv4479021898
> div.yiv4479021898file-title a:active, #yiv4479021898
> div.yiv4479021898file-title a:hover, #yiv4479021898
> div.yiv4479021898file-title a:visited {
> text-decoration:none;}
>
> #yiv4479021898 div.yiv4479021898photo-title a,
> #yiv4479021898 div.yiv4479021898photo-title a:active,
> #yiv4479021898 div.yiv4479021898photo-title a:hover,
> #yiv4479021898 div.yiv4479021898photo-title a:visited {
> text-decoration:none;}
>
> #yiv4479021898 div#yiv4479021898ygrp-mlmsg
> #yiv4479021898ygrp-msg p a span.yiv4479021898yshortcuts {
> font-family:Verdana;font-size:10px;font-weight:normal;}
>
> #yiv4479021898 .yiv4479021898green {
> color:#628c2a;}
>
> #yiv4479021898 .yiv4479021898MsoNormal {
> margin:0 0 0 0;}
>
> #yiv4479021898 o {
> font-size:0;}
>
> #yiv4479021898 #yiv4479021898photos div {
> float:left;width:72px;}
>
> #yiv4479021898 #yiv4479021898photos div div {
> border:1px solid
> #666666;min-height:62px;overflow:hidden;width:62px;}
>
> #yiv4479021898 #yiv4479021898photos div label {
> color:#666666;font-size:10px;overflow:hidden;text-align:
> center;white-space:nowrap;width:64px;}
>
> #yiv4479021898 #yiv4479021898reco-category {
> font-size:77%;}
>
> #yiv4479021898 #yiv4479021898reco-desc {
> font-size:77%;}
>
> #yiv4479021898 .yiv4479021898replbq {
> margin:4px;}
>
> #yiv4479021898 #yiv4479021898ygrp-actbar div a:first-child {
> margin-right:2px;padding-right:5px;}
>
> #yiv4479021898 #yiv4479021898ygrp-mlmsg {
> font-size:13px;font-family:Arial, helvetica, clean,
> sans-serif;}
>
> #yiv4479021898 #yiv4479021898ygrp-mlmsg table {
> font-size:inherit;font:100%;}
>
> #yiv4479021898 #yiv4479021898ygrp-mlmsg select,
> #yiv4479021898 input, #yiv4479021898 textarea {
> font:99% Arial, Helvetica, clean, sans-serif;}
>
> #yiv4479021898 #yiv4479021898ygrp-mlmsg pre, #yiv4479021898
> code {
> font:115% monospace;}
>
> #yiv4479021898 #yiv4479021898ygrp-mlmsg * {
> line-height:1.22em;}
>
> #yiv4479021898 #yiv4479021898ygrp-mlmsg #yiv4479021898logo {
> padding-bottom:10px;}
>
>
> #yiv4479021898 #yiv4479021898ygrp-msg p a {
> font-family:Verdana;}
>
> #yiv4479021898 #yiv4479021898ygrp-msg
> p#yiv4479021898attach-count span {
> color:#1E66AE;font-weight:700;}
>
> #yiv4479021898 #yiv4479021898ygrp-reco
> #yiv4479021898reco-head {
> color:#ff7900;font-weight:700;}
>
> #yiv4479021898 #yiv4479021898ygrp-reco {
> margin-bottom:20px;padding:0px;}
>
> #yiv4479021898 #yiv4479021898ygrp-sponsor #yiv4479021898ov
> li a {
> font-size:130%;text-decoration:none;}
>
> #yiv4479021898 #yiv4479021898ygrp-sponsor #yiv4479021898ov
> li {
> font-size:77%;list-style-type:square;padding:6px 0;}
>
> #yiv4479021898 #yiv4479021898ygrp-sponsor #yiv4479021898ov
> ul {
> margin:0;padding:0 0 0 8px;}
>
> #yiv4479021898 #yiv4479021898ygrp-text {
> font-family:Georgia;}
>
> #yiv4479021898 #yiv4479021898ygrp-text p {
> margin:0 0 1em 0;}
>
> #yiv4479021898 #yiv4479021898ygrp-text tt {
> font-size:120%;}
>
> #yiv4479021898 #yiv4479021898ygrp-vital ul li:last-child {
> border-right:none !important;
> }
> #yiv4479021898
>
>
>
Akan saya coba juga untuk formula nya
On Dec 22, 2017 4:09 PM, "Zainul Ulum zainul_ulum@yahoo.com
[belajar-excel]" <belajar-excel@yahoogroups.com> wrote:
>
>
> Pak Rachmat,
>
> coba rumus ini:
> =IF(ISERR(FIND("-",[@ORI])),[@ORI],-1*(SUBSTITUTE([@ORI],"-",REPT("
> ",99))))
>
> Thanks,
> -zainul
>
> #dikirim_pakai_mail.yahoo.com_tanpa_pulsa#
>
> --------------------------------------------
> On Fri, 22/12/17, Rachmat Hidayat my.android03@gmail.com [belajar-excel] <
> belajar-excel@yahoogroups..com> wrote:
>
> Subject: [belajar-excel] #ask#formula 22122017
> To: belajar-excel@yahoogroups.com
> Date: Friday, 22 December, 2017, 2:52 PM
>
>
>
>
>
>
>
>
>
>
>
>
> Dear Master Excel, Semoga dalam keadaan sehat
> wal'afiat, mohon bantuan nya bagaimana cara menghilangkan
> tanda (-) yang berada di belakang angka contoh 009-
> dan tanda (-) nya dipindahkan kedepan angka tersebut
> Untuk detail mohon dilihat file excel nya Sent from Mail
> for Windows 10
>
>
>
>
>
>
>
>
>
>
> #yiv4479021898 #yiv4479021898 --
> #yiv4479021898ygrp-
> border:1px solid #d8d8d8;font-
> 0;padding:0 10px;}
>
> #yiv4479021898 #yiv4479021898ygrp-
> border:1px solid #d8d8d8;}
>
> #yiv4479021898 #yiv4479021898ygrp-
> color:#628c2a;
> 0;}
>
> #yiv4479021898 #yiv4479021898ygrp-
> margin-bottom:
>
> #yiv4479021898 #yiv4479021898ygrp-
> padding:0 0;}
>
> #yiv4479021898 #yiv4479021898ygrp-
> margin:0;}
>
> #yiv4479021898 #yiv4479021898ygrp-
> color:#0000ff;
> #yiv4479021898 #yiv4479021898ygrp-
> #yiv4479021898ygrp-
> font-family:
>
> #yiv4479021898 #yiv4479021898ygrp-
> #yiv4479021898ygrp-
> margin:10px
> 0px;font-weight:
>
> #yiv4479021898 #yiv4479021898ygrp-
> #yiv4479021898ygrp-
> margin-bottom:
>
> #yiv4479021898 #yiv4479021898actio
> font-family:
>
> #yiv4479021898 #yiv4479021898activ
> background-color:
> padding:10px;
>
> #yiv4479021898 #yiv4479021898activ
> font-weight:
>
> #yiv4479021898 #yiv4479021898activ
> text-transform:
>
> #yiv4479021898 #yiv4479021898activ
> color:#5085b6;
>
> #yiv4479021898 #yiv4479021898activ
> color:#ff7900;
>
> #yiv4479021898 #yiv4479021898activ
> .yiv4479021898under
> text-decoration:
>
> #yiv4479021898 .yiv4479021898attac
> clear:both;display:
> 0;width:400px;
>
> #yiv4479021898 .yiv4479021898attac
> text-decoration:
>
> #yiv4479021898 .yiv4479021898attac
> border:none;
>
> #yiv4479021898 .yiv4479021898attac
> display:block;
>
> #yiv4479021898 .yiv4479021898attac
> text-decoration:
>
> #yiv4479021898 blockquote {
> margin:0 0 0 4px;}
>
> #yiv4479021898 .yiv4479021898bold {
> font-family:
>
> #yiv4479021898 .yiv4479021898bold a {
> text-decoration:
>
> #yiv4479021898 dd.yiv4479021898las
> font-family:
>
> #yiv4479021898 dd.yiv4479021898las
> margin-right:
>
> #yiv4479021898 dd.yiv4479021898las
> span.yiv4479021898y
> margin-right:
>
> #yiv4479021898 div.yiv4479021898at
> text-decoration:
>
> #yiv4479021898 div.yiv4479021898at
> width:400px;
>
> #yiv4479021898 div.yiv4479021898fi
> div.yiv4479021898fi
> div.yiv4479021898fi
> div.yiv4479021898fi
> text-decoration:
>
> #yiv4479021898 div.yiv4479021898ph
> #yiv4479021898 div.yiv4479021898ph
> #yiv4479021898 div.yiv4479021898ph
> #yiv4479021898 div.yiv4479021898ph
> text-decoration:
>
> #yiv4479021898 div#yiv4479021898yg
> #yiv4479021898ygrp-
> font-family:
>
> #yiv4479021898 .yiv4479021898green {
> color:#628c2a;
>
> #yiv4479021898 .yiv4479021898MsoNo
> margin:0 0 0 0;}
>
> #yiv4479021898 o {
> font-size:0;
>
> #yiv4479021898 #yiv4479021898photo
> float:left;width:
>
> #yiv4479021898 #yiv4479021898photo
> border:1px solid
> #666666;min-
>
> #yiv4479021898 #yiv4479021898photo
> color:#666666;
> center;white-
>
> #yiv4479021898 #yiv4479021898reco-
> font-size:77%
>
> #yiv4479021898 #yiv4479021898reco-
> font-size:77%
>
> #yiv4479021898 .yiv4479021898replb
> margin:4px;}
>
> #yiv4479021898 #yiv4479021898ygrp-
> margin-right:
>
> #yiv4479021898 #yiv4479021898ygrp-
> font-size:13px;
> sans-serif;}
>
> #yiv4479021898 #yiv4479021898ygrp-
> font-size:inherit;
>
> #yiv4479021898 #yiv4479021898ygrp-
> #yiv4479021898 input, #yiv4479021898 textarea {
> font:99% Arial, Helvetica, clean, sans-serif;}
>
> #yiv4479021898 #yiv4479021898ygrp-
> code {
> font:115% monospace;}
>
> #yiv4479021898 #yiv4479021898ygrp-
> line-height:
>
> #yiv4479021898 #yiv4479021898ygrp-
> padding-bottom:
>
>
> #yiv4479021898 #yiv4479021898ygrp-
> font-family:
>
> #yiv4479021898 #yiv4479021898ygrp-
> p#yiv4479021898atta
> color:#1E66AE;
>
> #yiv4479021898 #yiv4479021898ygrp-
> #yiv4479021898reco-
> color:#ff7900;
>
> #yiv4479021898 #yiv4479021898ygrp-
> margin-bottom:
>
> #yiv4479021898 #yiv4479021898ygrp-
> li a {
> font-size:130%
>
> #yiv4479021898 #yiv4479021898ygrp-
> li {
> font-size:77%
>
> #yiv4479021898 #yiv4479021898ygrp-
> ul {
> margin:0;padding:
>
> #yiv4479021898 #yiv4479021898ygrp-
> font-family:
>
> #yiv4479021898 #yiv4479021898ygrp-
> margin:0 0 1em 0;}
>
> #yiv4479021898 #yiv4479021898ygrp-
> font-size:120%
>
> #yiv4479021898 #yiv4479021898ygrp-
> border-right:
> }
> #yiv4479021898
>
>
>
Fri Dec 22, 2017 12:53 am (PST) . Posted by:
"Zainul Ulum" zainul_ulum
Maturnuwun Mas Kid,
Penjelasannya Padat dan jelas.
Sepertinga saya akan menggunakan back end berupa access database (accdb) dengan stored procedure.
belum mempertimbangkan ke MySQL atau yang lain karena IT admin tidak mengijinkan saya untuk install program baru
Thanks,
-zainul
#dikirim_pakai_mail.yahoo.com_tanpa_pulsa#
--------------------------------------------
On Wed, 20/12/17, 'Mr. Kid' mr.nmkid@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
Subject: Re: [belajar-excel] Share Workbook yang ada excel table-nya
To: "BeExcel" <belajar-excel@yahoogroups.com>
Date: Wednesday, 20 December, 2017, 10:57 PM
Wa'alaikumussalam
wr wb
mas Zainul,
By design :
Excel workbook ketika dibuka selalu
berusaha untuk Exclusive (memberi hak write ke seorang user
saja)
Fitur shared workbook
:Fitur ini berusaha untuk memberi hak
Exclusive kepada lebih dari seorang user. Tetapi, fitur ini
memberi batasan ketika ada lebih dari seorang user yang akan
mengubah isi cells (sila lihat di menu Share Workbook tab
Advanced bagian Conflicting blabla). Cells yang diubah bisa
jadi masih kosong (blank cells) maupun sudah ada
isinya.Artinya, shared workbook cukup beresiko
untuk dimanfaatkan dalam proses penyimpanan data, karena
diusahakan sebisa mungkin data yang disimpan dapat terjaga
utuh. Sedangkan fitur ini memungkinkan terjadinya kondisi
data yang benar (hasil input user A) akan terubah oleh data
yang benar lainnya (hasil input user B), sehingga data akan
kehilangan records yang benar.
Aplikasi entri data
:Pada umumnya, sistem data akan membentuk
setidaknya 2 layer, yaitu : 1. Back end data; 2.
Interface.Back end data bisa di text file, Excel
file, database (direkomendasikan)
Interface bisa berupa add in, xlsm
atau xlsb file, desktop application lainnya, dan web base
app (biasanya akan terbentuk 3 layer [three tier])
Back end data dengan Text
file dan Excel :Hak akses terhadap dua format
file ini adalah Exclusive. Jadi, proses penulisan data ke
back end harus dibuatkan sendiri
antriannya.
Back end data dengan database
: (apapun database-nya, mulai dari MS Access, SQL
Server, Oracle, MySQL, dsb yang berupa DBMS)Hak
akses terhadap database adalah shared dengan management
share write dan read yang sudah baik. Jadi tidak perlu repot
membuatkan antrian proses penulisan data.
Kasus Back End Data dengan Excel
: (misal diatur)1. back end data dengan Excel
bernama myData.xlsx (TIDAK shared workbook)
2. interface berupa add-in atau xlsm
atau xlsb (direkomendasikan), TETAPI membuka back end
myData.xlsx hanya sesuai keperluan saja, yaitu saat akan
menulis data dan saat akan membaca data
saja * Open - write - save - close atau
Open - read - close :: jangan sampai menunggu respon
dari user, apalagi user langsung entri atau edit di
myData.xlsx
Prosedur antrian penulisan data bisa
sebagai berikut : 'deklarasi variabel
proses
dim wbkApp as
workbook, rngInput as range, wbkDB as workbook, shtDT as
worksheet
'init records di interface yang akan ditulis ke back
end
set wbkAPP =
thisworkbook set
rngInput=wbkapp.sheets("area input
data").range("a2:c17")
'cek
antrianCOBA_BUKA: set
wbkdb=workbooks.open( wbkapp.path &
"\myData.xlsx" ) if
wbkdb.readonly then
wbkdb.close false goto
COBA_BUKA endif
'proses tulis [kalau
sampai di baris ini, berarti back end data telah menyerahkan
hak write secara exclusive kepada wbkApp melalui
wbkDB set
shtdt=wbkdb.sheets("DATA") 'misal nama
sheet lokasi penulisan adalah 'DATA'
rnginput.copy shtdt.cells(
shtdt.rows.count , "A"
).end(xlup).offset(1).pastespecial xlpastevalues
wbkdb.close true
'save n close wbkdb
'pesan selesai kepada
user msgbox
"Selesai.",vbinformation,"Tulis ke
xlDBFile"
Catatan :
Pada proses di atas, file
myData.xlsx bisa berisi excel table, excel query table,
excel pivot table, dan sebagainya. Tapi, penulisan data
tetap di suatu range (jika range tepat dibawah Excel Table,
maka Excel Table akan autoresize barisnya).
Obrolan
:Penggunaan database (dbms) sebagai back end
sangat dianjurkan. Proses penulisan data bisa dengan banyak
cara.
Secara umum, urutan proses
penulisan data adalah open connection - execute Insert atau
Update query - Close connection
Varian proses execute insert atau
update query bisa jadi dengan set setiap nilai field lalu
diakhir commit. Tapi saya kurang suka cara ini, terlalu
banyak baris script-nya dan kurang cepat untuk penulisan
records yang banyak sekaligus.
Excel
Table bisa dimanfaatkan untuk menyusun bunyi query insert
atau update di sebuah kolom dalam Excel Table (kolom ini
bisa di-hide). Lalu execute dilakukan dengan loop seluruh
isi kolom tersebut.Untuk records yang sangat
banyak, tentu hal ini akan memakan waktu dalam melakukan
loop (BUKAN pada eksekusi query-nya).
Data yang sangat banyak biasanya
akan menggunakan DBMS yang besar, seperti SQL Server (edisi
Express bisa 10GB tanpa trik, dan bisa dijadikan multi
database jika data lebih dari 10GB).Dengan
DBMS seperti SQL Server, akan ada lebih banyak opsi dalam
penulisan data, mulai dari pass through query (saya kurang
suka cara ini, karena terlalu lambat untuk ukuran kerja
sebuah DBMS sekelas SQL Server), programming dengan Stored
Precedure (SP), dan sebagainya.
Input data di Excel, database
di SQL Server, jumlah records cukup banyak (misal sekitar
200K records), dengan membuat SP di dalam database dan SP
dieksekusi oleh Excel, maka proses penulisan data bisa cuma
beberapa detik saja (relatif terhadap spesifikasi komputer
ya). Sedangkan dengan loop execute query insert bisa sekitar
1 sampai 2 menit.
Wassalamu'alaikum wr
wbKid
2017-12-20 12:51 GMT+07:00
zainul_ulum@yahoo.com
[belajar-excel] <belajar-excel@yahoogroups.com>:
Dear Be-excel,Saya mulai thread dari
jawaban Mas Kid mengenai shared workbook.
Latar belakang:
Saya membuat aplikasi vba excel
dalam bentuk addin (extensi xlam) untuk otomatisasi sebuah
file excel yang saya pakai sebagai database
(excel-database). Pada file excel-database tersebut terdiri
dari beberapa sheet yang berisi data berupa excel
table.
Seiring
dengan perkembangan penambahan data tiap hari, saya
berencana menge-set excel-database tersebut menjadi
multi-user dengan setting shared workbook tetapi saat diset
sebagai shared workbook, program excel menginformasikan
bahwa tool shared workbook tidak bisa digunakan kalo
terdapat object excel table dalam workbook.
Pertanyaan / bahan
diskusi:1. Apakah ada cara lain agar bisa
sharing workbook yang ada object excel table
nya?2. Jika nomer #1 tidak bisa, saya berencana
mengkonversi excel-database tersebut ke microsoft access
(*.accdb) , tetapi proses input dan output tetap di
excel.saya telah membuat vba code sederhana untuk
connect ke access
sbb:'=============================
========Option ExplicitConst
sProvider As String =
"Microsoft.ACE.OLEDB.12.0"Dim
sConnString As StringDim cnn As
ADODB.Connection
Private Function
CanConnectAccess(DbFile As String, rtnErr As String) As
Boolean sConnString =
"Provider=" & sProvider & ";"
& _ "Data Source=" &
DbFile & ";" & _
"Persist Security Info=False;"
'create a new connection to access
database CanConnectAccess =
True rtnErr = vbNullString
Set cnn = New
ADODB.Connection On Error Resume
Next cnn.Open sConnString If
Err..Number Then rtnErr =
Err.Description CanConnectAccess =
False Err.Clear End
IfEnd
Function'=============================
=dari vba code di atas, bagian mana yang perlu
dirubah agar database access bisa untuk multi
user?
Terimkasih
banyak sebelumnya. Mohon maaf jika terlalu
panjang.
Wassalamu'alaikum wr
wb.-zainul
#yiv3560235441 #yiv3560235441 --
#yiv3560235441ygrp-mkp {
border:1px solid #d8d8d8;font-family:Arial;margin:10px
0;padding:0 10px;}
#yiv3560235441 #yiv3560235441ygrp-mkp hr {
border:1px solid #d8d8d8;}
#yiv3560235441 #yiv3560235441ygrp-mkp #yiv3560235441hd {
color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px
0;}
#yiv3560235441 #yiv3560235441ygrp-mkp #yiv3560235441ads {
margin-bottom:10px;}
#yiv3560235441 #yiv3560235441ygrp-mkp .yiv3560235441ad {
padding:0 0;}
#yiv3560235441 #yiv3560235441ygrp-mkp .yiv3560235441ad p {
margin:0;}
#yiv3560235441 #yiv3560235441ygrp-mkp .yiv3560235441ad a {
color:#0000ff;text-decoration:none;}
#yiv3560235441 #yiv3560235441ygrp-sponsor
#yiv3560235441ygrp-lc {
font-family:Arial;}
#yiv3560235441 #yiv3560235441ygrp-sponsor
#yiv3560235441ygrp-lc #yiv3560235441hd {
margin:10px
0px;font-weight:700;font-size:78%;line-height:122%;}
#yiv3560235441 #yiv3560235441ygrp-sponsor
#yiv3560235441ygrp-lc .yiv3560235441ad {
margin-bottom:10px;padding:0 0;}
#yiv3560235441 #yiv3560235441actions {
font-family:Verdana;font-size:11px;padding:10px 0;}
#yiv3560235441 #yiv3560235441activity {
background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}
#yiv3560235441 #yiv3560235441activity span {
font-weight:700;}
#yiv3560235441 #yiv3560235441activity span:first-child {
text-transform:uppercase;}
#yiv3560235441 #yiv3560235441activity span a {
color:#5085b6;text-decoration:none;}
#yiv3560235441 #yiv3560235441activity span span {
color:#ff7900;}
#yiv3560235441 #yiv3560235441activity span
.yiv3560235441underline {
text-decoration:underline;}
#yiv3560235441 .yiv3560235441attach {
clear:both;display:table;font-family:Arial;font-size:12px;padding:10px
0;width:400px;}
#yiv3560235441 .yiv3560235441attach div a {
text-decoration:none;}
#yiv3560235441 .yiv3560235441attach img {
border:none;padding-right:5px;}
#yiv3560235441 .yiv3560235441attach label {
display:block;margin-bottom:5px;}
#yiv3560235441 .yiv3560235441attach label a {
text-decoration:none;}
#yiv3560235441 blockquote {
margin:0 0 0 4px;}
#yiv3560235441 .yiv3560235441bold {
font-family:Arial;font-size:13px;font-weight:700;}
#yiv3560235441 .yiv3560235441bold a {
text-decoration:none;}
#yiv3560235441 dd.yiv3560235441last p a {
font-family:Verdana;font-weight:700;}
#yiv3560235441 dd.yiv3560235441last p span {
margin-right:10px;font-family:Verdana;font-weight:700;}
#yiv3560235441 dd.yiv3560235441last p
span.yiv3560235441yshortcuts {
margin-right:0;}
#yiv3560235441 div.yiv3560235441attach-table div div a {
text-decoration:none;}
#yiv3560235441 div.yiv3560235441attach-table {
width:400px;}
#yiv3560235441 div.yiv3560235441file-title a, #yiv3560235441
div.yiv3560235441file-title a:active, #yiv3560235441
div.yiv3560235441file-title a:hover, #yiv3560235441
div.yiv3560235441file-title a:visited {
text-decoration:none;}
#yiv3560235441 div.yiv3560235441photo-title a,
#yiv3560235441 div.yiv3560235441photo-title a:active,
#yiv3560235441 div.yiv3560235441photo-title a:hover,
#yiv3560235441 div.yiv3560235441photo-title a:visited {
text-decoration:none;}
#yiv3560235441 div#yiv3560235441ygrp-mlmsg
#yiv3560235441ygrp-msg p a span.yiv3560235441yshortcuts {
font-family:Verdana;font-size:10px;font-weight:normal;}
#yiv3560235441 .yiv3560235441green {
color:#628c2a;}
#yiv3560235441 .yiv3560235441MsoNormal {
margin:0 0 0 0;}
#yiv3560235441 o {
font-size:0;}
#yiv3560235441 #yiv3560235441photos div {
float:left;width:72px;}
#yiv3560235441 #yiv3560235441photos div div {
border:1px solid
#666666;min-height:62px;overflow:hidden;width:62px;}
#yiv3560235441 #yiv3560235441photos div label {
color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}
#yiv3560235441 #yiv3560235441reco-category {
font-size:77%;}
#yiv3560235441 #yiv3560235441reco-desc {
font-size:77%;}
#yiv3560235441 .yiv3560235441replbq {
margin:4px;}
#yiv3560235441 #yiv3560235441ygrp-actbar div a:first-child {
margin-right:2px;padding-right:5px;}
#yiv3560235441 #yiv3560235441ygrp-mlmsg {
font-size:13px;font-family:Arial, helvetica, clean,
sans-serif;}
#yiv3560235441 #yiv3560235441ygrp-mlmsg table {
font-size:inherit;font:100%;}
#yiv3560235441 #yiv3560235441ygrp-mlmsg select,
#yiv3560235441 input, #yiv3560235441 textarea {
font:99% Arial, Helvetica, clean, sans-serif;}
#yiv3560235441 #yiv3560235441ygrp-mlmsg pre, #yiv3560235441
code {
font:115% monospace;}
#yiv3560235441 #yiv3560235441ygrp-mlmsg * {
line-height:1.22em;}
#yiv3560235441 #yiv3560235441ygrp-mlmsg #yiv3560235441logo {
padding-bottom:10px;}
#yiv3560235441 #yiv3560235441ygrp-msg p a {
font-family:Verdana;}
#yiv3560235441 #yiv3560235441ygrp-msg
p#yiv3560235441attach-count span {
color:#1E66AE;font-weight:700;}
#yiv3560235441 #yiv3560235441ygrp-reco
#yiv3560235441reco-head {
color:#ff7900;font-weight:700;}
#yiv3560235441 #yiv3560235441ygrp-reco {
margin-bottom:20px;padding:0px;}
#yiv3560235441 #yiv3560235441ygrp-sponsor #yiv3560235441ov
li a {
font-size:130%;text-decoration:none;}
#yiv3560235441 #yiv3560235441ygrp-sponsor #yiv3560235441ov
li {
font-size:77%;list-style-type:square;padding:6px 0;}
#yiv3560235441 #yiv3560235441ygrp-sponsor #yiv3560235441ov
ul {
margin:0;padding:0 0 0 8px;}
#yiv3560235441 #yiv3560235441ygrp-text {
font-family:Georgia;}
#yiv3560235441 #yiv3560235441ygrp-text p {
margin:0 0 1em 0;}
#yiv3560235441 #yiv3560235441ygrp-text tt {
font-size:120%;}
#yiv3560235441 #yiv3560235441ygrp-vital ul li:last-child {
border-right:none !important;
}
#yiv3560235441
Penjelasannya Padat dan jelas.
Sepertinga saya akan menggunakan back end berupa access database (accdb) dengan stored procedure.
belum mempertimbangkan ke MySQL atau yang lain karena IT admin tidak mengijinkan saya untuk install program baru
Thanks,
-zainul
#dikirim_pakai_mail.yahoo.com_tanpa_pulsa#
--------------------------------------------
On Wed, 20/12/17, 'Mr. Kid' mr.nmkid@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
Subject: Re: [belajar-excel] Share Workbook yang ada excel table-nya
To: "BeExcel" <belajar-excel@yahoogroups.com>
Date: Wednesday, 20 December, 2017, 10:57 PM
Wa'alaikumussalam
wr wb
mas Zainul,
By design :
Excel workbook ketika dibuka selalu
berusaha untuk Exclusive (memberi hak write ke seorang user
saja)
Fitur shared workbook
:Fitur ini berusaha untuk memberi hak
Exclusive kepada lebih dari seorang user. Tetapi, fitur ini
memberi batasan ketika ada lebih dari seorang user yang akan
mengubah isi cells (sila lihat di menu Share Workbook tab
Advanced bagian Conflicting blabla). Cells yang diubah bisa
jadi masih kosong (blank cells) maupun sudah ada
isinya.Artinya, shared workbook cukup beresiko
untuk dimanfaatkan dalam proses penyimpanan data, karena
diusahakan sebisa mungkin data yang disimpan dapat terjaga
utuh. Sedangkan fitur ini memungkinkan terjadinya kondisi
data yang benar (hasil input user A) akan terubah oleh data
yang benar lainnya (hasil input user B), sehingga data akan
kehilangan records yang benar.
Aplikasi entri data
:Pada umumnya, sistem data akan membentuk
setidaknya 2 layer, yaitu : 1. Back end data; 2.
Interface.Back end data bisa di text file, Excel
file, database (direkomendasikan)
Interface bisa berupa add in, xlsm
atau xlsb file, desktop application lainnya, dan web base
app (biasanya akan terbentuk 3 layer [three tier])
Back end data dengan Text
file dan Excel :Hak akses terhadap dua format
file ini adalah Exclusive. Jadi, proses penulisan data ke
back end harus dibuatkan sendiri
antriannya.
Back end data dengan database
: (apapun database-nya, mulai dari MS Access, SQL
Server, Oracle, MySQL, dsb yang berupa DBMS)Hak
akses terhadap database adalah shared dengan management
share write dan read yang sudah baik. Jadi tidak perlu repot
membuatkan antrian proses penulisan data.
Kasus Back End Data dengan Excel
: (misal diatur)1. back end data dengan Excel
bernama myData.xlsx (TIDAK shared workbook)
2. interface berupa add-in atau xlsm
atau xlsb (direkomendasikan), TETAPI membuka back end
myData.xlsx hanya sesuai keperluan saja, yaitu saat akan
menulis data dan saat akan membaca data
saja * Open - write - save - close atau
Open - read - close :: jangan sampai menunggu respon
dari user, apalagi user langsung entri atau edit di
myData.xlsx
Prosedur antrian penulisan data bisa
sebagai berikut : 'deklarasi variabel
proses
dim wbkApp as
workbook, rngInput as range, wbkDB as workbook, shtDT as
worksheet
'init records di interface yang akan ditulis ke back
end
set wbkAPP =
thisworkbook set
rngInput=wbkapp.sheets("area input
data").range("a2:c17")
'cek
antrianCOBA_BUKA: set
wbkdb=workbooks.open( wbkapp.path &
"\myData.xlsx" ) if
wbkdb.readonly then
wbkdb.close false goto
COBA_BUKA endif
'proses tulis [kalau
sampai di baris ini, berarti back end data telah menyerahkan
hak write secara exclusive kepada wbkApp melalui
wbkDB set
shtdt=wbkdb.sheets("DATA") 'misal nama
sheet lokasi penulisan adalah 'DATA'
rnginput.copy shtdt.cells(
shtdt.rows.count , "A"
).end(xlup).offset(1).pastespecial xlpastevalues
wbkdb.close true
'save n close wbkdb
'pesan selesai kepada
user msgbox
"Selesai.",vbinformation,"Tulis ke
xlDBFile"
Catatan :
Pada proses di atas, file
myData.xlsx bisa berisi excel table, excel query table,
excel pivot table, dan sebagainya. Tapi, penulisan data
tetap di suatu range (jika range tepat dibawah Excel Table,
maka Excel Table akan autoresize barisnya).
Obrolan
:Penggunaan database (dbms) sebagai back end
sangat dianjurkan. Proses penulisan data bisa dengan banyak
cara.
Secara umum, urutan proses
penulisan data adalah open connection - execute Insert atau
Update query - Close connection
Varian proses execute insert atau
update query bisa jadi dengan set setiap nilai field lalu
diakhir commit. Tapi saya kurang suka cara ini, terlalu
banyak baris script-nya dan kurang cepat untuk penulisan
records yang banyak sekaligus.
Excel
Table bisa dimanfaatkan untuk menyusun bunyi query insert
atau update di sebuah kolom dalam Excel Table (kolom ini
bisa di-hide). Lalu execute dilakukan dengan loop seluruh
isi kolom tersebut.Untuk records yang sangat
banyak, tentu hal ini akan memakan waktu dalam melakukan
loop (BUKAN pada eksekusi query-nya).
Data yang sangat banyak biasanya
akan menggunakan DBMS yang besar, seperti SQL Server (edisi
Express bisa 10GB tanpa trik, dan bisa dijadikan multi
database jika data lebih dari 10GB).Dengan
DBMS seperti SQL Server, akan ada lebih banyak opsi dalam
penulisan data, mulai dari pass through query (saya kurang
suka cara ini, karena terlalu lambat untuk ukuran kerja
sebuah DBMS sekelas SQL Server), programming dengan Stored
Precedure (SP), dan sebagainya.
Input data di Excel, database
di SQL Server, jumlah records cukup banyak (misal sekitar
200K records), dengan membuat SP di dalam database dan SP
dieksekusi oleh Excel, maka proses penulisan data bisa cuma
beberapa detik saja (relatif terhadap spesifikasi komputer
ya). Sedangkan dengan loop execute query insert bisa sekitar
1 sampai 2 menit.
Wassalamu'alaikum wr
wbKid
2017-12-20 12:51 GMT+07:00
zainul_ulum@yahoo.com
[belajar-excel] <belajar-excel@yahoogroups.com>:
Dear Be-excel,Saya mulai thread dari
jawaban Mas Kid mengenai shared workbook.
Latar belakang:
Saya membuat aplikasi vba excel
dalam bentuk addin (extensi xlam) untuk otomatisasi sebuah
file excel yang saya pakai sebagai database
(excel-database)
dari beberapa sheet yang berisi data berupa excel
table.
Seiring
dengan perkembangan penambahan data tiap hari, saya
berencana menge-set excel-database tersebut menjadi
multi-user dengan setting shared workbook tetapi saat diset
sebagai shared workbook, program excel menginformasikan
bahwa tool shared workbook tidak bisa digunakan kalo
terdapat object excel table dalam workbook.
Pertanyaan / bahan
diskusi:1. Apakah ada cara lain agar bisa
sharing workbook yang ada object excel table
nya?2. Jika nomer #1 tidak bisa, saya berencana
mengkonversi excel-database tersebut ke microsoft access
(*.accdb) , tetapi proses input dan output tetap di
excel.saya telah membuat vba code sederhana untuk
connect ke access
sbb:'===
========Option ExplicitConst
sProvider As String =
"Microsoft.
sConnString As StringDim cnn As
ADODB.Connection
Private Function
CanConnectAccess(
Boolean sConnString =
"Provider=
& _ "Data Source=" &
DbFile & ";" & _
"Persist Security Info=False;"
'create a new connection to access
database CanConnectAccess =
True rtnErr = vbNullString
Set cnn = New
ADODB.Connection On Error Resume
Next cnn.Open sConnString If
Err..Number Then rtnErr =
Err.Description CanConnectAccess =
False Err.Clear End
IfEnd
Function'
=dari vba code di atas, bagian mana yang perlu
dirubah agar database access bisa untuk multi
user?
Terimkasih
banyak sebelumnya. Mohon maaf jika terlalu
panjang.
Wassalamu'
wb.-zainul
#yiv3560235441 #yiv3560235441 --
#yiv3560235441ygrp-
border:1px solid #d8d8d8;font-
0;padding:0 10px;}
#yiv3560235441 #yiv3560235441ygrp-
border:1px solid #d8d8d8;}
#yiv3560235441 #yiv3560235441ygrp-
color:#628c2a;
0;}
#yiv3560235441 #yiv3560235441ygrp-
margin-bottom:
#yiv3560235441 #yiv3560235441ygrp-
padding:0 0;}
#yiv3560235441 #yiv3560235441ygrp-
margin:0;}
#yiv3560235441 #yiv3560235441ygrp-
color:#0000ff;
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441ygrp-
font-family:
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441ygrp-
margin:10px
0px;font-weight:
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441ygrp-
margin-bottom:
#yiv3560235441 #yiv3560235441actio
font-family:
#yiv3560235441 #yiv3560235441activ
background-color:
#yiv3560235441 #yiv3560235441activ
font-weight:
#yiv3560235441 #yiv3560235441activ
text-transform:
#yiv3560235441 #yiv3560235441activ
color:#5085b6;
#yiv3560235441 #yiv3560235441activ
color:#ff7900;
#yiv3560235441 #yiv3560235441activ
.yiv3560235441under
text-decoration:
#yiv3560235441 .yiv3560235441attac
clear:both;display:
0;width:400px;
#yiv3560235441 .yiv3560235441attac
text-decoration:
#yiv3560235441 .yiv3560235441attac
border:none;
#yiv3560235441 .yiv3560235441attac
display:block;
#yiv3560235441 .yiv3560235441attac
text-decoration:
#yiv3560235441 blockquote {
margin:0 0 0 4px;}
#yiv3560235441 .yiv3560235441bold {
font-family:
#yiv3560235441 .yiv3560235441bold a {
text-decoration:
#yiv3560235441 dd.yiv3560235441las
font-family:
#yiv3560235441 dd.yiv3560235441las
margin-right:
#yiv3560235441 dd.yiv3560235441las
span.yiv3560235441y
margin-right:
#yiv3560235441 div.yiv3560235441at
text-decoration:
#yiv3560235441 div.yiv3560235441at
width:400px;
#yiv3560235441 div.yiv3560235441fi
div.yiv3560235441fi
div.yiv3560235441fi
div.yiv3560235441fi
text-decoration:
#yiv3560235441 div.yiv3560235441ph
#yiv3560235441 div.yiv3560235441ph
#yiv3560235441 div.yiv3560235441ph
#yiv3560235441 div.yiv3560235441ph
text-decoration:
#yiv3560235441 div#yiv3560235441yg
#yiv3560235441ygrp-
font-family:
#yiv3560235441 .yiv3560235441green {
color:#628c2a;
#yiv3560235441 .yiv3560235441MsoNo
margin:0 0 0 0;}
#yiv3560235441 o {
font-size:0;
#yiv3560235441 #yiv3560235441photo
float:left;width:
#yiv3560235441 #yiv3560235441photo
border:1px solid
#666666;min-
#yiv3560235441 #yiv3560235441photo
color:#666666;
#yiv3560235441 #yiv3560235441reco-
font-size:77%
#yiv3560235441 #yiv3560235441reco-
font-size:77%
#yiv3560235441 .yiv3560235441replb
margin:4px;}
#yiv3560235441 #yiv3560235441ygrp-
margin-right:
#yiv3560235441 #yiv3560235441ygrp-
font-size:13px;
sans-serif;}
#yiv3560235441 #yiv3560235441ygrp-
font-size:inherit;
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441 input, #yiv3560235441 textarea {
font:99% Arial, Helvetica, clean, sans-serif;}
#yiv3560235441 #yiv3560235441ygrp-
code {
font:115% monospace;}
#yiv3560235441 #yiv3560235441ygrp-
line-height:
#yiv3560235441 #yiv3560235441ygrp-
padding-bottom:
#yiv3560235441 #yiv3560235441ygrp-
font-family:
#yiv3560235441 #yiv3560235441ygrp-
p#yiv3560235441atta
color:#1E66AE;
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441reco-
color:#ff7900;
#yiv3560235441 #yiv3560235441ygrp-
margin-bottom:
#yiv3560235441 #yiv3560235441ygrp-
li a {
font-size:130%
#yiv3560235441 #yiv3560235441ygrp-
li {
font-size:77%
#yiv3560235441 #yiv3560235441ygrp-
ul {
margin:0;padding:
#yiv3560235441 #yiv3560235441ygrp-
font-family:
#yiv3560235441 #yiv3560235441ygrp-
margin:0 0 1em 0;}
#yiv3560235441 #yiv3560235441ygrp-
font-size:120%
#yiv3560235441 #yiv3560235441ygrp-
border-right:
}
#yiv3560235441
Fri Dec 22, 2017 1:02 am (PST) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Mas Zainul,
Sepertinya kalau pakai Access, langsung Execute query saja.
Saya tahunya, produk MS yang punya Stored Procedure adalah MS SQL Server.
Metode dalam SP yang menggunakan Bulk Insert dari text file (supaya cepat
untuk data yang banyak) membutuhkan sharing folder disisi server.
Jadi, client (user) melakukan save text file ke komputer server.
Wassalam,
Kid
2017-12-22 15:53 GMT+07:00 Zainul Ulum zainul_ulum@yahoo.com
[belajar-excel] <belajar-excel@yahoogroups.com>:
>
>
> Maturnuwun Mas Kid,
> Penjelasannya Padat dan jelas.
>
> Sepertinga saya akan menggunakan back end berupa access database (accdb)
> dengan stored procedure.
> belum mempertimbangkan ke MySQL atau yang lain karena IT admin tidak
> mengijinkan saya untuk install program baru
>
> Thanks,
> -zainul
>
> #dikirim_pakai_mail.yahoo.com_tanpa_pulsa#
>
> --------------------------------------------
> On Wed, 20/12/17, 'Mr. Kid' mr.nmkid@gmail.com [belajar-excel] <
> belajar-excel@yahoogroups.com> wrote:
>
> Subject: Re: [belajar-excel] Share Workbook yang ada excel table-nya
> To: "BeExcel" <belajar-excel@yahoogroups.com>
> Date: Wednesday, 20 December, 2017, 10:57 PM
>
>
>
>
>
>
>
>
>
>
>
>
> Wa'alaikumussalam
> wr wb
> mas Zainul,
>
> By design :
> Excel workbook ketika dibuka selalu
> berusaha untuk Exclusive (memberi hak write ke seorang user
> saja)
>
> Fitur shared workbook
> :Fitur ini berusaha untuk memberi hak
> Exclusive kepada lebih dari seorang user. Tetapi, fitur ini
> memberi batasan ketika ada lebih dari seorang user yang akan
> mengubah isi cells (sila lihat di menu Share Workbook tab
> Advanced bagian Conflicting blabla). Cells yang diubah bisa
> jadi masih kosong (blank cells) maupun sudah ada
> isinya.Artinya, shared workbook cukup beresiko
> untuk dimanfaatkan dalam proses penyimpanan data, karena
> diusahakan sebisa mungkin data yang disimpan dapat terjaga
> utuh. Sedangkan fitur ini memungkinkan terjadinya kondisi
> data yang benar (hasil input user A) akan terubah oleh data
> yang benar lainnya (hasil input user B), sehingga data akan
> kehilangan records yang benar.
> Aplikasi entri data
> :Pada umumnya, sistem data akan membentuk
> setidaknya 2 layer, yaitu : 1. Back end data; 2.
> Interface.Back end data bisa di text file, Excel
> file, database (direkomendasikan)
> Interface bisa berupa add in, xlsm
> atau xlsb file, desktop application lainnya, dan web base
> app (biasanya akan terbentuk 3 layer [three tier])
>
> Back end data dengan Text
> file dan Excel :Hak akses terhadap dua format
> file ini adalah Exclusive. Jadi, proses penulisan data ke
> back end harus dibuatkan sendiri
> antriannya.
> Back end data dengan database
> : (apapun database-nya, mulai dari MS Access, SQL
> Server, Oracle, MySQL, dsb yang berupa DBMS)Hak
> akses terhadap database adalah shared dengan management
> share write dan read yang sudah baik. Jadi tidak perlu repot
> membuatkan antrian proses penulisan data.
> Kasus Back End Data dengan Excel
> : (misal diatur)1. back end data dengan Excel
> bernama myData.xlsx (TIDAK shared workbook)
> 2. interface berupa add-in atau xlsm
> atau xlsb (direkomendasikan), TETAPI membuka back end
> myData.xlsx hanya sesuai keperluan saja, yaitu saat akan
> menulis data dan saat akan membaca data
> saja * Open - write - save - close atau
> Open - read - close :: jangan sampai menunggu respon
> dari user, apalagi user langsung entri atau edit di
> myData.xlsx
>
> Prosedur antrian penulisan data bisa
> sebagai berikut : 'deklarasi variabel
> proses
> dim wbkApp as
> workbook, rngInput as range, wbkDB as workbook, shtDT as
> worksheet
>
> 'init records di interface yang akan ditulis ke back
> end
> set wbkAPP =
> thisworkbook set
> rngInput=wbkapp.sheets("area input
> data").range("a2:c17")
>
> 'cek
> antrianCOBA_BUKA: set
>
> wbkdb=workbooks.open( wbkapp.path &
> "\myData.xlsx" ) if
> wbkdb.readonly then
> wbkdb.close false goto
> COBA_BUKA endif
> 'proses tulis [kalau
> sampai di baris ini, berarti back end data telah menyerahkan
> hak write secara exclusive kepada wbkApp melalui
> wbkDB set
> shtdt=wbkdb.sheets("DATA") 'misal nama
> sheet lokasi penulisan adalah 'DATA'
>
> rnginput.copy shtdt.cells(
> shtdt.rows.count , "A"
> ).end(xlup).offset(1).pastespecial xlpastevalues
> wbkdb.close true
> 'save n close wbkdb
>
> 'pesan selesai kepada
> user msgbox
> "Selesai.",vbinformation,"Tulis ke
> xlDBFile"
>
> Catatan :
> Pada proses di atas, file
> myData.xlsx bisa berisi excel table, excel query table,
> excel pivot table, dan sebagainya. Tapi, penulisan data
> tetap di suatu range (jika range tepat dibawah Excel Table,
> maka Excel Table akan autoresize barisnya).
>
>
> Obrolan
> :Penggunaan database (dbms) sebagai back end
> sangat dianjurkan. Proses penulisan data bisa dengan banyak
> cara.
> Secara umum, urutan proses
> penulisan data adalah open connection - execute Insert atau
> Update query - Close connection
> Varian proses execute insert atau
> update query bisa jadi dengan set setiap nilai field lalu
> diakhir commit. Tapi saya kurang suka cara ini, terlalu
> banyak baris script-nya dan kurang cepat untuk penulisan
> records yang banyak sekaligus.
>
> Excel
> Table bisa dimanfaatkan untuk menyusun bunyi query insert
> atau update di sebuah kolom dalam Excel Table (kolom ini
> bisa di-hide). Lalu execute dilakukan dengan loop seluruh
> isi kolom tersebut.Untuk records yang sangat
> banyak, tentu hal ini akan memakan waktu dalam melakukan
> loop (BUKAN pada eksekusi query-nya).
> Data yang sangat banyak biasanya
> akan menggunakan DBMS yang besar, seperti SQL Server (edisi
> Express bisa 10GB tanpa trik, dan bisa dijadikan multi
> database jika data lebih dari 10GB).Dengan
> DBMS seperti SQL Server, akan ada lebih banyak opsi dalam
> penulisan data, mulai dari pass through query (saya kurang
> suka cara ini, karena terlalu lambat untuk ukuran kerja
> sebuah DBMS sekelas SQL Server), programming dengan Stored
> Precedure (SP), dan sebagainya.
>
> Input data di Excel, database
> di SQL Server, jumlah records cukup banyak (misal sekitar
> 200K records), dengan membuat SP di dalam database dan SP
> dieksekusi oleh Excel, maka proses penulisan data bisa cuma
> beberapa detik saja (relatif terhadap spesifikasi komputer
> ya). Sedangkan dengan loop execute query insert bisa sekitar
> 1 sampai 2 menit.
> Wassalamu'alaikum wr
> wbKid
>
>
> 2017-12-20 12:51 GMT+07:00
> zainul_ulum@yahoo.com
> [belajar-excel] <belajar-excel@yahoogroups.com>:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Dear Be-excel,Saya mulai thread dari
> jawaban Mas Kid mengenai shared workbook.
> Latar belakang:
> Saya membuat aplikasi vba excel
> dalam bentuk addin (extensi xlam) untuk otomatisasi sebuah
> file excel yang saya pakai sebagai database
> (excel-database). Pada file excel-database tersebut terdiri
> dari beberapa sheet yang berisi data berupa excel
> table.
> Seiring
> dengan perkembangan penambahan data tiap hari, saya
> berencana menge-set excel-database tersebut menjadi
> multi-user dengan setting shared workbook tetapi saat diset
> sebagai shared workbook, program excel menginformasikan
> bahwa tool shared workbook tidak bisa digunakan kalo
> terdapat object excel table dalam workbook.
> Pertanyaan / bahan
> diskusi:1. Apakah ada cara lain agar bisa
> sharing workbook yang ada object excel table
> nya?2. Jika nomer #1 tidak bisa, saya berencana
> mengkonversi excel-database tersebut ke microsoft access
> (*.accdb) , tetapi proses input dan output tetap di
> excel.saya telah membuat vba code sederhana untuk
> connect ke access
> sbb:'=============================
> ========Option ExplicitConst
> sProvider As String =
> "Microsoft.ACE.OLEDB.12.0"Dim
> sConnString As StringDim cnn As
> ADODB.Connection
> Private Function
> CanConnectAccess(DbFile As String, rtnErr As String) As
> Boolean sConnString =
> "Provider=" & sProvider & ";"
> & _ "Data Source=" &
> DbFile & ";" & _
> "Persist Security Info=False;"
> 'create a new connection to access
> database CanConnectAccess =
> True rtnErr = vbNullString
> Set cnn = New
> ADODB.Connection On Error Resume
> Next cnn.Open sConnString If
> Err..Number Then rtnErr =
> Err.Description CanConnectAccess =
> False Err.Clear End
> IfEnd
> Function'=============================
> =dari vba code di atas, bagian mana yang perlu
> dirubah agar database access bisa untuk multi
> user?
> Terimkasih
> banyak sebelumnya. Mohon maaf jika terlalu
> panjang.
> Wassalamu'alaikum wr
> wb.-zainul
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> #yiv3560235441 #yiv3560235441 --
> #yiv3560235441ygrp-mkp {
> border:1px solid #d8d8d8;font-family:Arial;margin:10px
> 0;padding:0 10px;}
>
> #yiv3560235441 #yiv3560235441ygrp-mkp hr {
> border:1px solid #d8d8d8;}
>
> #yiv3560235441 #yiv3560235441ygrp-mkp #yiv3560235441hd {
> color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px
> 0;}
>
> #yiv3560235441 #yiv3560235441ygrp-mkp #yiv3560235441ads {
> margin-bottom:10px;}
>
> #yiv3560235441 #yiv3560235441ygrp-mkp .yiv3560235441ad {
> padding:0 0;}
>
> #yiv3560235441 #yiv3560235441ygrp-mkp .yiv3560235441ad p {
> margin:0;}
>
> #yiv3560235441 #yiv3560235441ygrp-mkp .yiv3560235441ad a {
> color:#0000ff;text-decoration:none;}
> #yiv3560235441 #yiv3560235441ygrp-sponsor
> #yiv3560235441ygrp-lc {
> font-family:Arial;}
>
> #yiv3560235441 #yiv3560235441ygrp-sponsor
> #yiv3560235441ygrp-lc #yiv3560235441hd {
> margin:10px
> 0px;font-weight:700;font-size:78%;line-height:122%;}
>
> #yiv3560235441 #yiv3560235441ygrp-sponsor
> #yiv3560235441ygrp-lc .yiv3560235441ad {
> margin-bottom:10px;padding:0 0;}
>
> #yiv3560235441 #yiv3560235441actions {
> font-family:Verdana;font-size:11px;padding:10px 0;}
>
> #yiv3560235441 #yiv3560235441activity {
> background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;
> padding:10px;}
>
> #yiv3560235441 #yiv3560235441activity span {
> font-weight:700;}
>
> #yiv3560235441 #yiv3560235441activity span:first-child {
> text-transform:uppercase;}
>
> #yiv3560235441 #yiv3560235441activity span a {
> color:#5085b6;text-decoration:none;}
>
> #yiv3560235441 #yiv3560235441activity span span {
> color:#ff7900;}
>
> #yiv3560235441 #yiv3560235441activity span
> .yiv3560235441underline {
> text-decoration:underline;}
>
> #yiv3560235441 .yiv3560235441attach {
> clear:both;display:table;font-family:Arial;font-size:12px;padding:10px
> 0;width:400px;}
>
> #yiv3560235441 .yiv3560235441attach div a {
> text-decoration:none;}
>
> #yiv3560235441 .yiv3560235441attach img {
> border:none;padding-right:5px;}
>
> #yiv3560235441 .yiv3560235441attach label {
> display:block;margin-bottom:5px;}
>
> #yiv3560235441 .yiv3560235441attach label a {
> text-decoration:none;}
>
> #yiv3560235441 blockquote {
> margin:0 0 0 4px;}
>
> #yiv3560235441 .yiv3560235441bold {
> font-family:Arial;font-size:13px;font-weight:700;}
>
> #yiv3560235441 .yiv3560235441bold a {
> text-decoration:none;}
>
> #yiv3560235441 dd.yiv3560235441last p a {
> font-family:Verdana;font-weight:700;}
>
> #yiv3560235441 dd.yiv3560235441last p span {
> margin-right:10px;font-family:Verdana;font-weight:700;}
>
> #yiv3560235441 dd.yiv3560235441last p
> span.yiv3560235441yshortcuts {
> margin-right:0;}
>
> #yiv3560235441 div.yiv3560235441attach-table div div a {
> text-decoration:none;}
>
> #yiv3560235441 div.yiv3560235441attach-table {
> width:400px;}
>
> #yiv3560235441 div.yiv3560235441file-title a, #yiv3560235441
> div.yiv3560235441file-title a:active, #yiv3560235441
> div.yiv3560235441file-title a:hover, #yiv3560235441
> div.yiv3560235441file-title a:visited {
> text-decoration:none;}
>
> #yiv3560235441 div.yiv3560235441photo-title a,
> #yiv3560235441 div.yiv3560235441photo-title a:active,
> #yiv3560235441 div.yiv3560235441photo-title a:hover,
> #yiv3560235441 div.yiv3560235441photo-title a:visited {
> text-decoration:none;}
>
> #yiv3560235441 div#yiv3560235441ygrp-mlmsg
> #yiv3560235441ygrp-msg p a span.yiv3560235441yshortcuts {
> font-family:Verdana;font-size:10px;font-weight:normal;}
>
> #yiv3560235441 .yiv3560235441green {
> color:#628c2a;}
>
> #yiv3560235441 .yiv3560235441MsoNormal {
> margin:0 0 0 0;}
>
> #yiv3560235441 o {
> font-size:0;}
>
> #yiv3560235441 #yiv3560235441photos div {
> float:left;width:72px;}
>
> #yiv3560235441 #yiv3560235441photos div div {
> border:1px solid
> #666666;min-height:62px;overflow:hidden;width:62px;}
>
> #yiv3560235441 #yiv3560235441photos div label {
> color:#666666;font-size:10px;overflow:hidden;text-align:
> center;white-space:nowrap;width:64px;}
>
> #yiv3560235441 #yiv3560235441reco-category {
> font-size:77%;}
>
> #yiv3560235441 #yiv3560235441reco-desc {
> font-size:77%;}
>
> #yiv3560235441 .yiv3560235441replbq {
> margin:4px;}
>
> #yiv3560235441 #yiv3560235441ygrp-actbar div a:first-child {
> margin-right:2px;padding-right:5px;}
>
> #yiv3560235441 #yiv3560235441ygrp-mlmsg {
> font-size:13px;font-family:Arial, helvetica, clean,
> sans-serif;}
>
> #yiv3560235441 #yiv3560235441ygrp-mlmsg table {
> font-size:inherit;font:100%;}
>
> #yiv3560235441 #yiv3560235441ygrp-mlmsg select,
> #yiv3560235441 input, #yiv3560235441 textarea {
> font:99% Arial, Helvetica, clean, sans-serif;}
>
> #yiv3560235441 #yiv3560235441ygrp-mlmsg pre, #yiv3560235441
> code {
> font:115% monospace;}
>
> #yiv3560235441 #yiv3560235441ygrp-mlmsg * {
> line-height:1.22em;}
>
> #yiv3560235441 #yiv3560235441ygrp-mlmsg #yiv3560235441logo {
> padding-bottom:10px;}
>
>
> #yiv3560235441 #yiv3560235441ygrp-msg p a {
> font-family:Verdana;}
>
> #yiv3560235441 #yiv3560235441ygrp-msg
> p#yiv3560235441attach-count span {
> color:#1E66AE;font-weight:700;}
>
> #yiv3560235441 #yiv3560235441ygrp-reco
> #yiv3560235441reco-head {
> color:#ff7900;font-weight:700;}
>
> #yiv3560235441 #yiv3560235441ygrp-reco {
> margin-bottom:20px;padding:0px;}
>
> #yiv3560235441 #yiv3560235441ygrp-sponsor #yiv3560235441ov
> li a {
> font-size:130%;text-decoration:none;}
>
> #yiv3560235441 #yiv3560235441ygrp-sponsor #yiv3560235441ov
> li {
> font-size:77%;list-style-type:square;padding:6px 0;}
>
> #yiv3560235441 #yiv3560235441ygrp-sponsor #yiv3560235441ov
> ul {
> margin:0;padding:0 0 0 8px;}
>
> #yiv3560235441 #yiv3560235441ygrp-text {
> font-family:Georgia;}
>
> #yiv3560235441 #yiv3560235441ygrp-text p {
> margin:0 0 1em 0;}
>
> #yiv3560235441 #yiv3560235441ygrp-text tt {
> font-size:120%;}
>
> #yiv3560235441 #yiv3560235441ygrp-vital ul li:last-child {
> border-right:none !important;
> }
> #yiv3560235441
>
>
>
Sepertinya kalau pakai Access, langsung Execute query saja.
Saya tahunya, produk MS yang punya Stored Procedure adalah MS SQL Server.
Metode dalam SP yang menggunakan Bulk Insert dari text file (supaya cepat
untuk data yang banyak) membutuhkan sharing folder disisi server.
Jadi, client (user) melakukan save text file ke komputer server.
Wassalam,
Kid
2017-12-22 15:53 GMT+07:00 Zainul Ulum zainul_ulum@yahoo.com
[belajar-excel] <belajar-excel@yahoogroups.com>:
>
>
> Maturnuwun Mas Kid,
> Penjelasannya Padat dan jelas.
>
> Sepertinga saya akan menggunakan back end berupa access database (accdb)
> dengan stored procedure.
> belum mempertimbangkan ke MySQL atau yang lain karena IT admin tidak
> mengijinkan saya untuk install program baru
>
> Thanks,
> -zainul
>
> #dikirim_pakai_mail.yahoo.com_tanpa_pulsa#
>
> --------------------------------------------
> On Wed, 20/12/17, 'Mr. Kid' mr.nmkid@gmail.com [belajar-excel] <
> belajar-excel@yahoogroups.com> wrote:
>
> Subject: Re: [belajar-excel] Share Workbook yang ada excel table-nya
> To: "BeExcel" <belajar-excel@yahoogroups.com>
> Date: Wednesday, 20 December, 2017, 10:57 PM
>
>
>
>
>
>
>
>
>
>
>
>
> Wa'alaikumussalam
> wr wb
> mas Zainul,
>
> By design :
> Excel workbook ketika dibuka selalu
> berusaha untuk Exclusive (memberi hak write ke seorang user
> saja)
>
> Fitur shared workbook
> :Fitur ini berusaha untuk memberi hak
> Exclusive kepada lebih dari seorang user. Tetapi, fitur ini
> memberi batasan ketika ada lebih dari seorang user yang akan
> mengubah isi cells (sila lihat di menu Share Workbook tab
> Advanced bagian Conflicting blabla). Cells yang diubah bisa
> jadi masih kosong (blank cells) maupun sudah ada
> isinya.Artinya, shared workbook cukup beresiko
> untuk dimanfaatkan dalam proses penyimpanan data, karena
> diusahakan sebisa mungkin data yang disimpan dapat terjaga
> utuh. Sedangkan fitur ini memungkinkan terjadinya kondisi
> data yang benar (hasil input user A) akan terubah oleh data
> yang benar lainnya (hasil input user B), sehingga data akan
> kehilangan records yang benar.
> Aplikasi entri data
> :Pada umumnya, sistem data akan membentuk
> setidaknya 2 layer, yaitu : 1. Back end data; 2.
> Interface.Back end data bisa di text file, Excel
> file, database (direkomendasikan)
> Interface bisa berupa add in, xlsm
> atau xlsb file, desktop application lainnya, dan web base
> app (biasanya akan terbentuk 3 layer [three tier])
>
> Back end data dengan Text
> file dan Excel :Hak akses terhadap dua format
> file ini adalah Exclusive. Jadi, proses penulisan data ke
> back end harus dibuatkan sendiri
> antriannya.
> Back end data dengan database
> : (apapun database-nya, mulai dari MS Access, SQL
> Server, Oracle, MySQL, dsb yang berupa DBMS)Hak
> akses terhadap database adalah shared dengan management
> share write dan read yang sudah baik. Jadi tidak perlu repot
> membuatkan antrian proses penulisan data.
> Kasus Back End Data dengan Excel
> : (misal diatur)1. back end data dengan Excel
> bernama myData.xlsx (TIDAK shared workbook)
> 2. interface berupa add-in atau xlsm
> atau xlsb (direkomendasikan), TETAPI membuka back end
> myData.xlsx hanya sesuai keperluan saja, yaitu saat akan
> menulis data dan saat akan membaca data
> saja * Open - write - save - close atau
> Open - read - close :: jangan sampai menunggu respon
> dari user, apalagi user langsung entri atau edit di
> myData.xlsx
>
> Prosedur antrian penulisan data bisa
> sebagai berikut : 'deklarasi variabel
> proses
> dim wbkApp as
> workbook, rngInput as range, wbkDB as workbook, shtDT as
> worksheet
>
> 'init records di interface yang akan ditulis ke back
> end
> set wbkAPP =
> thisworkbook set
> rngInput=wbkapp.sheets("area input
> data").range("a2:c17")
>
> 'cek
> antrianCOBA_BUKA: set
>
> wbkdb=workbooks.open( wbkapp.path &
> "\myData.xlsx" ) if
> wbkdb.readonly then
> wbkdb.close false goto
> COBA_BUKA endif
> 'proses tulis [kalau
> sampai di baris ini, berarti back end data telah menyerahkan
> hak write secara exclusive kepada wbkApp melalui
> wbkDB set
> shtdt=wbkdb.sheets("DATA") 'misal nama
> sheet lokasi penulisan adalah 'DATA'
>
> rnginput.copy shtdt.cells(
> shtdt.rows.count , "A"
> ).end(xlup).offset(1).pastespecial xlpastevalues
> wbkdb.close true
> 'save n close wbkdb
>
> 'pesan selesai kepada
> user msgbox
> "Selesai.",vbinformation,"Tulis ke
> xlDBFile"
>
> Catatan :
> Pada proses di atas, file
> myData.xlsx bisa berisi excel table, excel query table,
> excel pivot table, dan sebagainya. Tapi, penulisan data
> tetap di suatu range (jika range tepat dibawah Excel Table,
> maka Excel Table akan autoresize barisnya).
>
>
> Obrolan
> :Penggunaan database (dbms) sebagai back end
> sangat dianjurkan. Proses penulisan data bisa dengan banyak
> cara.
> Secara umum, urutan proses
> penulisan data adalah open connection - execute Insert atau
> Update query - Close connection
> Varian proses execute insert atau
> update query bisa jadi dengan set setiap nilai field lalu
> diakhir commit. Tapi saya kurang suka cara ini, terlalu
> banyak baris script-nya dan kurang cepat untuk penulisan
> records yang banyak sekaligus.
>
> Excel
> Table bisa dimanfaatkan untuk menyusun bunyi query insert
> atau update di sebuah kolom dalam Excel Table (kolom ini
> bisa di-hide). Lalu execute dilakukan dengan loop seluruh
> isi kolom tersebut.Untuk records yang sangat
> banyak, tentu hal ini akan memakan waktu dalam melakukan
> loop (BUKAN pada eksekusi query-nya).
> Data yang sangat banyak biasanya
> akan menggunakan DBMS yang besar, seperti SQL Server (edisi
> Express bisa 10GB tanpa trik, dan bisa dijadikan multi
> database jika data lebih dari 10GB).Dengan
> DBMS seperti SQL Server, akan ada lebih banyak opsi dalam
> penulisan data, mulai dari pass through query (saya kurang
> suka cara ini, karena terlalu lambat untuk ukuran kerja
> sebuah DBMS sekelas SQL Server), programming dengan Stored
> Precedure (SP), dan sebagainya.
>
> Input data di Excel, database
> di SQL Server, jumlah records cukup banyak (misal sekitar
> 200K records), dengan membuat SP di dalam database dan SP
> dieksekusi oleh Excel, maka proses penulisan data bisa cuma
> beberapa detik saja (relatif terhadap spesifikasi komputer
> ya). Sedangkan dengan loop execute query insert bisa sekitar
> 1 sampai 2 menit.
> Wassalamu'alaikum wr
> wbKid
>
>
> 2017-12-20 12:51 GMT+07:00
> zainul_ulum@yahoo.com
> [belajar-excel] <belajar-excel@yahoogroups.com>:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Dear Be-excel,Saya mulai thread dari
> jawaban Mas Kid mengenai shared workbook.
> Latar belakang:
> Saya membuat aplikasi vba excel
> dalam bentuk addin (extensi xlam) untuk otomatisasi sebuah
> file excel yang saya pakai sebagai database
> (excel-database)
> dari beberapa sheet yang berisi data berupa excel
> table.
> Seiring
> dengan perkembangan penambahan data tiap hari, saya
> berencana menge-set excel-database tersebut menjadi
> multi-user dengan setting shared workbook tetapi saat diset
> sebagai shared workbook, program excel menginformasikan
> bahwa tool shared workbook tidak bisa digunakan kalo
> terdapat object excel table dalam workbook.
> Pertanyaan / bahan
> diskusi:1. Apakah ada cara lain agar bisa
> sharing workbook yang ada object excel table
> nya?2. Jika nomer #1 tidak bisa, saya berencana
> mengkonversi excel-database tersebut ke microsoft access
> (*.accdb) , tetapi proses input dan output tetap di
> excel.saya telah membuat vba code sederhana untuk
> connect ke access
> sbb:'===
> ========Option ExplicitConst
> sProvider As String =
> "Microsoft.
> sConnString As StringDim cnn As
> ADODB.Connection
> Private Function
> CanConnectAccess(
> Boolean sConnString =
> "Provider=
> & _ "Data Source=" &
> DbFile & ";" & _
> "Persist Security Info=False;"
> 'create a new connection to access
> database CanConnectAccess =
> True rtnErr = vbNullString
> Set cnn = New
> ADODB.Connection On Error Resume
> Next cnn.Open sConnString If
> Err..Number Then rtnErr =
> Err.Description CanConnectAccess =
> False Err.Clear End
> IfEnd
> Function'
> =dari vba code di atas, bagian mana yang perlu
> dirubah agar database access bisa untuk multi
> user?
> Terimkasih
> banyak sebelumnya. Mohon maaf jika terlalu
> panjang.
> Wassalamu'
> wb.-zainul
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> #yiv3560235441 #yiv3560235441 --
> #yiv3560235441ygrp-
> border:1px solid #d8d8d8;font-
> 0;padding:0 10px;}
>
> #yiv3560235441 #yiv3560235441ygrp-
> border:1px solid #d8d8d8;}
>
> #yiv3560235441 #yiv3560235441ygrp-
> color:#628c2a;
> 0;}
>
> #yiv3560235441 #yiv3560235441ygrp-
> margin-bottom:
>
> #yiv3560235441 #yiv3560235441ygrp-
> padding:0 0;}
>
> #yiv3560235441 #yiv3560235441ygrp-
> margin:0;}
>
> #yiv3560235441 #yiv3560235441ygrp-
> color:#0000ff;
> #yiv3560235441 #yiv3560235441ygrp-
> #yiv3560235441ygrp-
> font-family:
>
> #yiv3560235441 #yiv3560235441ygrp-
> #yiv3560235441ygrp-
> margin:10px
> 0px;font-weight:
>
> #yiv3560235441 #yiv3560235441ygrp-
> #yiv3560235441ygrp-
> margin-bottom:
>
> #yiv3560235441 #yiv3560235441actio
> font-family:
>
> #yiv3560235441 #yiv3560235441activ
> background-color:
> padding:10px;
>
> #yiv3560235441 #yiv3560235441activ
> font-weight:
>
> #yiv3560235441 #yiv3560235441activ
> text-transform:
>
> #yiv3560235441 #yiv3560235441activ
> color:#5085b6;
>
> #yiv3560235441 #yiv3560235441activ
> color:#ff7900;
>
> #yiv3560235441 #yiv3560235441activ
> .yiv3560235441under
> text-decoration:
>
> #yiv3560235441 .yiv3560235441attac
> clear:both;display:
> 0;width:400px;
>
> #yiv3560235441 .yiv3560235441attac
> text-decoration:
>
> #yiv3560235441 .yiv3560235441attac
> border:none;
>
> #yiv3560235441 .yiv3560235441attac
> display:block;
>
> #yiv3560235441 .yiv3560235441attac
> text-decoration:
>
> #yiv3560235441 blockquote {
> margin:0 0 0 4px;}
>
> #yiv3560235441 .yiv3560235441bold {
> font-family:
>
> #yiv3560235441 .yiv3560235441bold a {
> text-decoration:
>
> #yiv3560235441 dd.yiv3560235441las
> font-family:
>
> #yiv3560235441 dd.yiv3560235441las
> margin-right:
>
> #yiv3560235441 dd.yiv3560235441las
> span.yiv3560235441y
> margin-right:
>
> #yiv3560235441 div.yiv3560235441at
> text-decoration:
>
> #yiv3560235441 div.yiv3560235441at
> width:400px;
>
> #yiv3560235441 div.yiv3560235441fi
> div.yiv3560235441fi
> div.yiv3560235441fi
> div.yiv3560235441fi
> text-decoration:
>
> #yiv3560235441 div.yiv3560235441ph
> #yiv3560235441 div.yiv3560235441ph
> #yiv3560235441 div.yiv3560235441ph
> #yiv3560235441 div.yiv3560235441ph
> text-decoration:
>
> #yiv3560235441 div#yiv3560235441yg
> #yiv3560235441ygrp-
> font-family:
>
> #yiv3560235441 .yiv3560235441green {
> color:#628c2a;
>
> #yiv3560235441 .yiv3560235441MsoNo
> margin:0 0 0 0;}
>
> #yiv3560235441 o {
> font-size:0;
>
> #yiv3560235441 #yiv3560235441photo
> float:left;width:
>
> #yiv3560235441 #yiv3560235441photo
> border:1px solid
> #666666;min-
>
> #yiv3560235441 #yiv3560235441photo
> color:#666666;
> center;white-
>
> #yiv3560235441 #yiv3560235441reco-
> font-size:77%
>
> #yiv3560235441 #yiv3560235441reco-
> font-size:77%
>
> #yiv3560235441 .yiv3560235441replb
> margin:4px;}
>
> #yiv3560235441 #yiv3560235441ygrp-
> margin-right:
>
> #yiv3560235441 #yiv3560235441ygrp-
> font-size:13px;
> sans-serif;}
>
> #yiv3560235441 #yiv3560235441ygrp-
> font-size:inherit;
>
> #yiv3560235441 #yiv3560235441ygrp-
> #yiv3560235441 input, #yiv3560235441 textarea {
> font:99% Arial, Helvetica, clean, sans-serif;}
>
> #yiv3560235441 #yiv3560235441ygrp-
> code {
> font:115% monospace;}
>
> #yiv3560235441 #yiv3560235441ygrp-
> line-height:
>
> #yiv3560235441 #yiv3560235441ygrp-
> padding-bottom:
>
>
> #yiv3560235441 #yiv3560235441ygrp-
> font-family:
>
> #yiv3560235441 #yiv3560235441ygrp-
> p#yiv3560235441atta
> color:#1E66AE;
>
> #yiv3560235441 #yiv3560235441ygrp-
> #yiv3560235441reco-
> color:#ff7900;
>
> #yiv3560235441 #yiv3560235441ygrp-
> margin-bottom:
>
> #yiv3560235441 #yiv3560235441ygrp-
> li a {
> font-size:130%
>
> #yiv3560235441 #yiv3560235441ygrp-
> li {
> font-size:77%
>
> #yiv3560235441 #yiv3560235441ygrp-
> ul {
> margin:0;padding:
>
> #yiv3560235441 #yiv3560235441ygrp-
> font-family:
>
> #yiv3560235441 #yiv3560235441ygrp-
> margin:0 0 1em 0;}
>
> #yiv3560235441 #yiv3560235441ygrp-
> font-size:120%
>
> #yiv3560235441 #yiv3560235441ygrp-
> border-right:
> }
> #yiv3560235441
>
>
>
Fri Dec 22, 2017 1:17 am (PST) . Posted by:
"Zainul Ulum" zainul_ulum
Terimakasih infonya mas Kid,
jika tidak ada fasilitas stored procedure di access, berarti harus building query.
Untuk query yang panjang, biasanya saya menggunakan bantuan vba di excel kemudian di execute query menggunakan function sbb:
'=================
Private Function CanOpenRecordSet(sSql As String, rsRtn As ADODB.Recordset, rtnErr As String) As Boolean
Dim rs As New ADODB.Recordset
CanOpenRecordSet = True
On Error Resume Next
'Set rs = cnn.Execute(sSql)
rs.Open sSql, cnn, adOpenKeyset, adLockReadOnly
Set rsRtn = rs
If Err.Number Or rsRtn.RecordCount < 0 Then
CanOpenRecordSet = False
rtnErr = Err.Description
Err.Clear
Exit Function
End If
End Function
'===================================
Lebih cepat atau ekfektif mana antara:
1. Running sql di vba seperti contoh di atas
ataukah
2. Running di vba tapi sql sudah menjadi object query di access.
Wassalam,
-zainul
#dikirim_pakai_mail.yahoo.com_tanpa_pulsa#
--------------------------------------------
On Fri, 22/12/17, 'Mr. Kid' mr.nmkid@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
Subject: Re: [belajar-excel] Share Workbook yang ada excel table-nya
To: "BeExcel" <belajar-excel@yahoogroups.com>
Date: Friday, 22 December, 2017, 4:01 PM
Mas
Zainul,
Sepertinya kalau pakai
Access, langsung Execute query saja.Saya tahunya,
produk MS yang punya Stored Procedure adalah MS SQL
Server.Metode dalam SP yang menggunakan Bulk
Insert dari text file (supaya cepat untuk data yang banyak)
membutuhkan sharing folder disisi server.Jadi,
client (user) melakukan save text file ke komputer
server.
Wassalam,
Kid
2017-12-22 15:53 GMT+07:00
Zainul Ulum zainul_ulum@yahoo.com
[belajar-excel] <belajar-excel@yahoogroups.com>:
Maturnuwun Mas Kid,
Penjelasannya Padat dan jelas.
Sepertinga saya akan menggunakan back end berupa access
database (accdb) dengan stored procedure.
belum mempertimbangkan ke MySQL atau yang lain karena IT
admin tidak mengijinkan saya untuk install program baru
Thanks,
-zainul
#dikirim_pakai_mail.yahoo.com_ tanpa_pulsa#
------------------------------ --------------
On Wed, 20/12/17, 'Mr. Kid' mr.nmkid@gmail.com
[belajar-excel] <belajar-excel@yahoogroups.com
> wrote:
Subject: Re: [belajar-excel] Share Workbook yang ada excel
table-nya
To: "BeExcel" <belajar-excel@yahoogroups.com
>
Date: Wednesday, 20 December, 2017, 10:57 PM
Wa'alaikumussalam
wr wb
mas Zainul,
By design :
Excel workbook ketika dibuka selalu
berusaha untuk Exclusive (memberi hak write ke seorang
user
saja)
Fitur shared workbook
:Fitur ini berusaha untuk memberi hak
Exclusive kepada lebih dari seorang user. Tetapi, fitur
ini
memberi batasan ketika ada lebih dari seorang user yang
akan
mengubah isi cells (sila lihat di menu Share Workbook
tab
Advanced bagian Conflicting blabla). Cells yang diubah
bisa
jadi masih kosong (blank cells) maupun sudah ada
isinya.Artinya, shared workbook cukup beresiko
untuk dimanfaatkan dalam proses penyimpanan data, karena
diusahakan sebisa mungkin data yang disimpan dapat
terjaga
utuh. Sedangkan fitur ini memungkinkan terjadinya
kondisi
data yang benar (hasil input user A) akan terubah oleh
data
yang benar lainnya (hasil input user B), sehingga data
akan
kehilangan records yang benar.
Aplikasi entri data
:Pada umumnya, sistem data akan membentuk
setidaknya 2 layer, yaitu : 1. Back end data; 2.
Interface.Back end data bisa di text file, Excel
file, database (direkomendasikan)
Interface bisa berupa add in, xlsm
atau xlsb file, desktop application lainnya, dan web
base
app (biasanya akan terbentuk 3 layer [three tier])
Back end data dengan Text
file dan Excel :Hak akses terhadap dua format
file ini adalah Exclusive. Jadi, proses penulisan data
ke
back end harus dibuatkan sendiri
antriannya.
Back end data dengan database
: (apapun database-nya, mulai dari MS Access, SQL
Server, Oracle, MySQL, dsb yang berupa DBMS)Hak
akses terhadap database adalah shared dengan management
share write dan read yang sudah baik. Jadi tidak perlu
repot
membuatkan antrian proses penulisan data.
Kasus Back End Data dengan Excel
: (misal diatur)1. back end data dengan Excel
bernama myData.xlsx (TIDAK shared workbook)
2. interface berupa add-in atau xlsm
atau xlsb (direkomendasikan), TETAPI membuka back end
myData.xlsx hanya sesuai keperluan saja, yaitu saat akan
menulis data dan saat akan membaca data
saja * Open - write - save - close atau
Open - read - close :: jangan sampai menunggu respon
dari user, apalagi user langsung entri atau edit di
myData.xlsx
Prosedur antrian penulisan data bisa
sebagai berikut : 'deklarasi variabel
proses
dim wbkApp as
workbook, rngInput as range, wbkDB as workbook, shtDT as
worksheet
'init records di interface yang akan ditulis ke back
end
set wbkAPP =
thisworkbook set
rngInput=wbkapp.sheets("area input
data").range("a2:c17")
'cek
antrianCOBA_BUKA: set
wbkdb=workbooks.open( wbkapp.path &
"\myData.xlsx" ) if
wbkdb.readonly then
wbkdb.close false goto
COBA_BUKA endif
'proses tulis [kalau
sampai di baris ini, berarti back end data telah
menyerahkan
hak write secara exclusive kepada wbkApp melalui
wbkDB set
shtdt=wbkdb.sheets("DATA") 'misal
nama
sheet lokasi penulisan adalah 'DATA'
rnginput.copy shtdt.cells(
shtdt.rows.count , "A"
).end(xlup).offset(1). pastespecial xlpastevalues
wbkdb.close true
'save n close wbkdb
'pesan selesai kepada
user msgbox
"Selesai.",vbinformation," Tulis ke
xlDBFile"
Catatan :
Pada proses di atas, file
myData.xlsx bisa berisi excel table, excel query table,
excel pivot table, dan sebagainya. Tapi, penulisan data
tetap di suatu range (jika range tepat dibawah Excel
Table,
maka Excel Table akan autoresize barisnya).
Obrolan
:Penggunaan database (dbms) sebagai back end
sangat dianjurkan. Proses penulisan data bisa dengan
banyak
cara.
Secara umum, urutan proses
penulisan data adalah open connection - execute Insert
atau
Update query - Close connection
Varian proses execute insert atau
update query bisa jadi dengan set setiap nilai field
lalu
diakhir commit. Tapi saya kurang suka cara ini, terlalu
banyak baris script-nya dan kurang cepat untuk penulisan
records yang banyak sekaligus.
Excel
Table bisa dimanfaatkan untuk menyusun bunyi query
insert
atau update di sebuah kolom dalam Excel Table (kolom ini
bisa di-hide). Lalu execute dilakukan dengan loop
seluruh
isi kolom tersebut.Untuk records yang sangat
banyak, tentu hal ini akan memakan waktu dalam melakukan
loop (BUKAN pada eksekusi query-nya).
Data yang sangat banyak biasanya
akan menggunakan DBMS yang besar, seperti SQL Server
(edisi
Express bisa 10GB tanpa trik, dan bisa dijadikan multi
database jika data lebih dari 10GB).Dengan
DBMS seperti SQL Server, akan ada lebih banyak opsi
dalam
penulisan data, mulai dari pass through query (saya
kurang
suka cara ini, karena terlalu lambat untuk ukuran kerja
sebuah DBMS sekelas SQL Server), programming dengan
Stored
Precedure (SP), dan sebagainya.
Input data di Excel, database
di SQL Server, jumlah records cukup banyak (misal
sekitar
200K records), dengan membuat SP di dalam database dan
SP
dieksekusi oleh Excel, maka proses penulisan data bisa
cuma
beberapa detik saja (relatif terhadap spesifikasi
komputer
ya). Sedangkan dengan loop execute query insert bisa
sekitar
1 sampai 2 menit.
Wassalamu'alaikum wr
wbKid
2017-12-20 12:51 GMT+07:00
zainul_ulum@yahoo.com
[belajar-excel] <belajar-excel@yahoogroups.com
>:
Dear Be-excel,Saya mulai thread dari
jawaban Mas Kid mengenai shared workbook.
Latar belakang:
Saya membuat aplikasi vba excel
dalam bentuk addin (extensi xlam) untuk otomatisasi
sebuah
file excel yang saya pakai sebagai database
(excel-database). Pada file excel-database tersebut
terdiri
dari beberapa sheet yang berisi data berupa excel
table.
Seiring
dengan perkembangan penambahan data tiap hari, saya
berencana menge-set excel-database tersebut menjadi
multi-user dengan setting shared workbook tetapi saat
diset
sebagai shared workbook, program excel menginformasikan
bahwa tool shared workbook tidak bisa digunakan kalo
terdapat object excel table dalam workbook.
Pertanyaan / bahan
diskusi:1. Apakah ada cara lain agar bisa
sharing workbook yang ada object excel table
nya?2. Jika nomer #1 tidak bisa, saya berencana
mengkonversi excel-database tersebut ke microsoft access
(*.accdb) , tetapi proses input dan output tetap di
excel.saya telah membuat vba code sederhana untuk
connect ke access
sbb:'========================= ====
========Option ExplicitConst
sProvider As String =
"Microsoft.ACE.OLEDB.12.0"Dim
sConnString As StringDim cnn As
ADODB.Connection
Private Function
CanConnectAccess(DbFile As String, rtnErr As String) As
Boolean sConnString =
"Provider=" & sProvider &
";"
& _ "Data Source=" &
DbFile & ";" & _
"Persist Security Info=False;"
'create a new connection to access
database CanConnectAccess =
True rtnErr = vbNullString
Set cnn = New
ADODB.Connection On Error Resume
Next cnn.Open sConnString If
Err..Number Then rtnErr =
Err.Description CanConnectAccess =
False Err.Clear End
IfEnd
Function'===================== ========
=dari vba code di atas, bagian mana yang perlu
dirubah agar database access bisa untuk multi
user?
Terimkasih
banyak sebelumnya. Mohon maaf jika terlalu
panjang.
Wassalamu'alaikum wr
wb.-zainul
#yiv3560235441 #yiv3560235441 --
#yiv3560235441ygrp-mkp {
border:1px solid #d8d8d8;font-family:Arial; margin:10px
0;padding:0 10px;}
#yiv3560235441 #yiv3560235441ygrp-mkp hr {
border:1px solid #d8d8d8;}
#yiv3560235441 #yiv3560235441ygrp-mkp #yiv3560235441hd {
color:#628c2a;font-size:85%; font-weight:700;line-height:
122%;margin:10px
0;}
#yiv3560235441 #yiv3560235441ygrp-mkp #yiv3560235441ads
{
margin-bottom:10px;}
#yiv3560235441 #yiv3560235441ygrp-mkp .yiv3560235441ad {
padding:0 0;}
#yiv3560235441 #yiv3560235441ygrp-mkp .yiv3560235441ad p
{
margin:0;}
#yiv3560235441 #yiv3560235441ygrp-mkp .yiv3560235441ad a
{
color:#0000ff;text-decoration: none;}
#yiv3560235441 #yiv3560235441ygrp-sponsor
#yiv3560235441ygrp-lc {
font-family:Arial;}
#yiv3560235441 #yiv3560235441ygrp-sponsor
#yiv3560235441ygrp-lc #yiv3560235441hd {
margin:10px
0px;font-weight:700;font-size: 78%;line-height:122%;}
#yiv3560235441 #yiv3560235441ygrp-sponsor
#yiv3560235441ygrp-lc .yiv3560235441ad {
margin-bottom:10px;padding:0 0;}
#yiv3560235441 #yiv3560235441actions {
font-family:Verdana;font-size: 11px;padding:10px 0;}
#yiv3560235441 #yiv3560235441activity {
background-color:#e0ecee; float:left;font-family:
Verdana;font-size:10px; padding:10px;}
#yiv3560235441 #yiv3560235441activity span {
font-weight:700;}
#yiv3560235441 #yiv3560235441activity span:first-child {
text-transform:uppercase;}
#yiv3560235441 #yiv3560235441activity span a {
color:#5085b6;text-decoration: none;}
#yiv3560235441 #yiv3560235441activity span span {
color:#ff7900;}
#yiv3560235441 #yiv3560235441activity span
.yiv3560235441underline {
text-decoration:underline;}
#yiv3560235441 .yiv3560235441attach {
clear:both;display:table;font- family:Arial;font-size:12px;
padding:10px
0;width:400px;}
#yiv3560235441 .yiv3560235441attach div a {
text-decoration:none;}
#yiv3560235441 .yiv3560235441attach img {
border:none;padding-right:5px; }
#yiv3560235441 .yiv3560235441attach label {
display:block;margin-bottom: 5px;}
#yiv3560235441 .yiv3560235441attach label a {
text-decoration:none;}
#yiv3560235441 blockquote {
margin:0 0 0 4px;}
#yiv3560235441 .yiv3560235441bold {
font-family:Arial;font-size: 13px;font-weight:700;}
#yiv3560235441 .yiv3560235441bold a {
text-decoration:none;}
#yiv3560235441 dd.yiv3560235441last p a {
font-family:Verdana;font- weight:700;}
#yiv3560235441 dd.yiv3560235441last p span {
margin-right:10px;font-family: Verdana;font-weight:700;}
#yiv3560235441 dd.yiv3560235441last p
span.yiv3560235441yshortcuts {
margin-right:0;}
#yiv3560235441 div.yiv3560235441attach-table div div a {
text-decoration:none;}
#yiv3560235441 div.yiv3560235441attach-table {
width:400px;}
#yiv3560235441 div.yiv3560235441file-title a,
#yiv3560235441
div.yiv3560235441file-title a:active, #yiv3560235441
div.yiv3560235441file-title a:hover, #yiv3560235441
div.yiv3560235441file-title a:visited {
text-decoration:none;}
#yiv3560235441 div.yiv3560235441photo-title a,
#yiv3560235441 div.yiv3560235441photo-title a:active,
#yiv3560235441 div.yiv3560235441photo-title a:hover,
#yiv3560235441 div.yiv3560235441photo-title a:visited {
text-decoration:none;}
#yiv3560235441 div#yiv3560235441ygrp-mlmsg
#yiv3560235441ygrp-msg p a span.yiv3560235441yshortcuts
{
font-family:Verdana;font-size: 10px;font-weight:normal;}
#yiv3560235441 .yiv3560235441green {
color:#628c2a;}
#yiv3560235441 .yiv3560235441MsoNormal {
margin:0 0 0 0;}
#yiv3560235441 o {
font-size:0;}
#yiv3560235441 #yiv3560235441photos div {
float:left;width:72px;}
#yiv3560235441 #yiv3560235441photos div div {
border:1px solid
#666666;min-height:62px; overflow:hidden;width:62px;}
#yiv3560235441 #yiv3560235441photos div label {
color:#666666;font-size:10px; overflow:hidden;text-align:
center;white-space:nowrap; width:64px;}
#yiv3560235441 #yiv3560235441reco-category {
font-size:77%;}
#yiv3560235441 #yiv3560235441reco-desc {
font-size:77%;}
#yiv3560235441 .yiv3560235441replbq {
margin:4px;}
#yiv3560235441 #yiv3560235441ygrp-actbar div a:first-child
{
margin-right:2px;padding- right:5px;}
#yiv3560235441 #yiv3560235441ygrp-mlmsg {
font-size:13px;font-family: Arial, helvetica, clean,
sans-serif;}
#yiv3560235441 #yiv3560235441ygrp-mlmsg table {
font-size:inherit;font:100%;}
#yiv3560235441 #yiv3560235441ygrp-mlmsg select,
#yiv3560235441 input, #yiv3560235441 textarea {
font:99% Arial, Helvetica, clean, sans-serif;}
#yiv3560235441 #yiv3560235441ygrp-mlmsg pre,
#yiv3560235441
code {
font:115% monospace;}
#yiv3560235441 #yiv3560235441ygrp-mlmsg * {
line-height:1.22em;}
#yiv3560235441 #yiv3560235441ygrp-mlmsg #yiv3560235441logo
{
padding-bottom:10px;}
#yiv3560235441 #yiv3560235441ygrp-msg p a {
font-family:Verdana;}
#yiv3560235441 #yiv3560235441ygrp-msg
p#yiv3560235441attach-count span {
color:#1E66AE;font-weight:700; }
#yiv3560235441 #yiv3560235441ygrp-reco
#yiv3560235441reco-head {
color:#ff7900;font-weight:700; }
#yiv3560235441 #yiv3560235441ygrp-reco {
margin-bottom:20px;padding: 0px;}
#yiv3560235441 #yiv3560235441ygrp-sponsor
#yiv3560235441ov
li a {
font-size:130%;text- decoration:none;}
#yiv3560235441 #yiv3560235441ygrp-sponsor
#yiv3560235441ov
li {
font-size:77%;list-style-type: square;padding:6px 0;}
#yiv3560235441 #yiv3560235441ygrp-sponsor
#yiv3560235441ov
ul {
margin:0;padding:0 0 0 8px;}
#yiv3560235441 #yiv3560235441ygrp-text {
font-family:Georgia;}
#yiv3560235441 #yiv3560235441ygrp-text p {
margin:0 0 1em 0;}
#yiv3560235441 #yiv3560235441ygrp-text tt {
font-size:120%;}
#yiv3560235441 #yiv3560235441ygrp-vital ul li:last-child
{
border-right:none !important;
}
#yiv3560235441
#yiv1901667967 #yiv1901667967 --
#yiv1901667967ygrp-mkp {
border:1px solid #d8d8d8;font-family:Arial;margin:10px
0;padding:0 10px;}
#yiv1901667967 #yiv1901667967ygrp-mkp hr {
border:1px solid #d8d8d8;}
#yiv1901667967 #yiv1901667967ygrp-mkp #yiv1901667967hd {
color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px
0;}
#yiv1901667967 #yiv1901667967ygrp-mkp #yiv1901667967ads {
margin-bottom:10px;}
#yiv1901667967 #yiv1901667967ygrp-mkp .yiv1901667967ad {
padding:0 0;}
#yiv1901667967 #yiv1901667967ygrp-mkp .yiv1901667967ad p {
margin:0;}
#yiv1901667967 #yiv1901667967ygrp-mkp .yiv1901667967ad a {
color:#0000ff;text-decoration:none;}
#yiv1901667967 #yiv1901667967ygrp-sponsor
#yiv1901667967ygrp-lc {
font-family:Arial;}
#yiv1901667967 #yiv1901667967ygrp-sponsor
#yiv1901667967ygrp-lc #yiv1901667967hd {
margin:10px
0px;font-weight:700;font-size:78%;line-height:122%;}
#yiv1901667967 #yiv1901667967ygrp-sponsor
#yiv1901667967ygrp-lc .yiv1901667967ad {
margin-bottom:10px;padding:0 0;}
#yiv1901667967 #yiv1901667967actions {
font-family:Verdana;font-size:11px;padding:10px 0;}
#yiv1901667967 #yiv1901667967activity {
background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}
#yiv1901667967 #yiv1901667967activity span {
font-weight:700;}
#yiv1901667967 #yiv1901667967activity span:first-child {
text-transform:uppercase;}
#yiv1901667967 #yiv1901667967activity span a {
color:#5085b6;text-decoration:none;}
#yiv1901667967 #yiv1901667967activity span span {
color:#ff7900;}
#yiv1901667967 #yiv1901667967activity span
.yiv1901667967underline {
text-decoration:underline;}
#yiv1901667967 .yiv1901667967attach {
clear:both;display:table;font-family:Arial;font-size:12px;padding:10px
0;width:400px;}
#yiv1901667967 .yiv1901667967attach div a {
text-decoration:none;}
#yiv1901667967 .yiv1901667967attach img {
border:none;padding-right:5px;}
#yiv1901667967 .yiv1901667967attach label {
display:block;margin-bottom:
jika tidak ada fasilitas stored procedure di access, berarti harus building query.
Untuk query yang panjang, biasanya saya menggunakan bantuan vba di excel kemudian di execute query menggunakan function sbb:
'=================
Private Function CanOpenRecordSet(sSql As String, rsRtn As ADODB.Recordset, rtnErr As String) As Boolean
Dim rs As New ADODB.Recordset
CanOpenRecordSet = True
On Error Resume Next
'Set rs = cnn.Execute(sSql)
rs.Open sSql, cnn, adOpenKeyset, adLockReadOnly
Set rsRtn = rs
If Err.Number Or rsRtn.RecordCount < 0 Then
CanOpenRecordSet = False
rtnErr = Err.Description
Err.Clear
Exit Function
End If
End Function
'===================================
Lebih cepat atau ekfektif mana antara:
1. Running sql di vba seperti contoh di atas
ataukah
2. Running di vba tapi sql sudah menjadi object query di access.
Wassalam,
-zainul
#dikirim_pakai_mail.yahoo.com_tanpa_pulsa#
--------------------------------------------
On Fri, 22/12/17, 'Mr. Kid' mr.nmkid@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
Subject: Re: [belajar-excel] Share Workbook yang ada excel table-nya
To: "BeExcel" <belajar-excel@yahoogroups.com>
Date: Friday, 22 December, 2017, 4:01 PM
Mas
Zainul,
Sepertinya kalau pakai
Access, langsung Execute query saja.Saya tahunya,
produk MS yang punya Stored Procedure adalah MS SQL
Server.Metode dalam SP yang menggunakan Bulk
Insert dari text file (supaya cepat untuk data yang banyak)
membutuhkan sharing folder disisi server.Jadi,
client (user) melakukan save text file ke komputer
server.
Wassalam,
Kid
2017-12-22 15:53 GMT+07:00
Zainul Ulum zainul_ulum@yahoo.com
[belajar-excel] <belajar-excel@yahoogroups.com>:
Maturnuwun Mas Kid,
Penjelasannya Padat dan jelas.
Sepertinga saya akan menggunakan back end berupa access
database (accdb) dengan stored procedure.
belum mempertimbangkan ke MySQL atau yang lain karena IT
admin tidak mengijinkan saya untuk install program baru
Thanks,
-zainul
#dikirim_pakai_mail.yahoo.com_ tanpa_pulsa#
------------------------------ --------------
On Wed, 20/12/17, 'Mr. Kid' mr.nmkid@gmail.com
[belajar-excel] <belajar-excel@yahoogroups.com
> wrote:
Subject: Re: [belajar-excel] Share Workbook yang ada excel
table-nya
To: "BeExcel" <belajar-excel@yahoogroups.com
>
Date: Wednesday, 20 December, 2017, 10:57 PM
Wa'alaikumussalam
wr wb
mas Zainul,
By design :
Excel workbook ketika dibuka selalu
berusaha untuk Exclusive (memberi hak write ke seorang
user
saja)
Fitur shared workbook
:Fitur ini berusaha untuk memberi hak
Exclusive kepada lebih dari seorang user. Tetapi, fitur
ini
memberi batasan ketika ada lebih dari seorang user yang
akan
mengubah isi cells (sila lihat di menu Share Workbook
tab
Advanced bagian Conflicting blabla). Cells yang diubah
bisa
jadi masih kosong (blank cells) maupun sudah ada
isinya.Artinya, shared workbook cukup beresiko
untuk dimanfaatkan dalam proses penyimpanan data, karena
diusahakan sebisa mungkin data yang disimpan dapat
terjaga
utuh. Sedangkan fitur ini memungkinkan terjadinya
kondisi
data yang benar (hasil input user A) akan terubah oleh
data
yang benar lainnya (hasil input user B), sehingga data
akan
kehilangan records yang benar.
Aplikasi entri data
:Pada umumnya, sistem data akan membentuk
setidaknya 2 layer, yaitu : 1. Back end data; 2.
Interface.Back end data bisa di text file, Excel
file, database (direkomendasikan)
Interface bisa berupa add in, xlsm
atau xlsb file, desktop application lainnya, dan web
base
app (biasanya akan terbentuk 3 layer [three tier])
Back end data dengan Text
file dan Excel :Hak akses terhadap dua format
file ini adalah Exclusive. Jadi, proses penulisan data
ke
back end harus dibuatkan sendiri
antriannya.
Back end data dengan database
: (apapun database-nya, mulai dari MS Access, SQL
Server, Oracle, MySQL, dsb yang berupa DBMS)Hak
akses terhadap database adalah shared dengan management
share write dan read yang sudah baik. Jadi tidak perlu
repot
membuatkan antrian proses penulisan data.
Kasus Back End Data dengan Excel
: (misal diatur)1. back end data dengan Excel
bernama myData.xlsx (TIDAK shared workbook)
2. interface berupa add-in atau xlsm
atau xlsb (direkomendasikan), TETAPI membuka back end
myData.xlsx hanya sesuai keperluan saja, yaitu saat akan
menulis data dan saat akan membaca data
saja * Open - write - save - close atau
Open - read - close :: jangan sampai menunggu respon
dari user, apalagi user langsung entri atau edit di
myData.xlsx
Prosedur antrian penulisan data bisa
sebagai berikut : 'deklarasi variabel
proses
dim wbkApp as
workbook, rngInput as range, wbkDB as workbook, shtDT as
worksheet
'init records di interface yang akan ditulis ke back
end
set wbkAPP =
thisworkbook set
rngInput=wbkapp.sheets("area input
data").range("a2:c17")
'cek
antrianCOBA_BUKA: set
wbkdb=workbooks.open( wbkapp.path &
"\myData.xlsx" ) if
wbkdb.readonly then
wbkdb.close false goto
COBA_BUKA endif
'proses tulis [kalau
sampai di baris ini, berarti back end data telah
menyerahkan
hak write secara exclusive kepada wbkApp melalui
wbkDB set
shtdt=wbkdb.sheets("DATA") 'misal
nama
sheet lokasi penulisan adalah 'DATA'
rnginput.copy shtdt.cells(
shtdt.rows.count , "A"
).end(xlup).offset(1). pastespecial xlpastevalues
wbkdb.close true
'save n close wbkdb
'pesan selesai kepada
user msgbox
"Selesai.",vbinformation," Tulis ke
xlDBFile"
Catatan :
Pada proses di atas, file
myData.xlsx bisa berisi excel table, excel query table,
excel pivot table, dan sebagainya. Tapi, penulisan data
tetap di suatu range (jika range tepat dibawah Excel
Table,
maka Excel Table akan autoresize barisnya).
Obrolan
:Penggunaan database (dbms) sebagai back end
sangat dianjurkan. Proses penulisan data bisa dengan
banyak
cara.
Secara umum, urutan proses
penulisan data adalah open connection - execute Insert
atau
Update query - Close connection
Varian proses execute insert atau
update query bisa jadi dengan set setiap nilai field
lalu
diakhir commit. Tapi saya kurang suka cara ini, terlalu
banyak baris script-nya dan kurang cepat untuk penulisan
records yang banyak sekaligus.
Excel
Table bisa dimanfaatkan untuk menyusun bunyi query
insert
atau update di sebuah kolom dalam Excel Table (kolom ini
bisa di-hide). Lalu execute dilakukan dengan loop
seluruh
isi kolom tersebut.Untuk records yang sangat
banyak, tentu hal ini akan memakan waktu dalam melakukan
loop (BUKAN pada eksekusi query-nya).
Data yang sangat banyak biasanya
akan menggunakan DBMS yang besar, seperti SQL Server
(edisi
Express bisa 10GB tanpa trik, dan bisa dijadikan multi
database jika data lebih dari 10GB).Dengan
DBMS seperti SQL Server, akan ada lebih banyak opsi
dalam
penulisan data, mulai dari pass through query (saya
kurang
suka cara ini, karena terlalu lambat untuk ukuran kerja
sebuah DBMS sekelas SQL Server), programming dengan
Stored
Precedure (SP), dan sebagainya.
Input data di Excel, database
di SQL Server, jumlah records cukup banyak (misal
sekitar
200K records), dengan membuat SP di dalam database dan
SP
dieksekusi oleh Excel, maka proses penulisan data bisa
cuma
beberapa detik saja (relatif terhadap spesifikasi
komputer
ya). Sedangkan dengan loop execute query insert bisa
sekitar
1 sampai 2 menit.
Wassalamu'alaikum wr
wbKid
2017-12-20 12:51 GMT+07:00
zainul_ulum@yahoo.com
[belajar-excel] <belajar-excel@yahoogroups.com
>:
Dear Be-excel,Saya mulai thread dari
jawaban Mas Kid mengenai shared workbook.
Latar belakang:
Saya membuat aplikasi vba excel
dalam bentuk addin (extensi xlam) untuk otomatisasi
sebuah
file excel yang saya pakai sebagai database
(excel-database)
terdiri
dari beberapa sheet yang berisi data berupa excel
table.
Seiring
dengan perkembangan penambahan data tiap hari, saya
berencana menge-set excel-database tersebut menjadi
multi-user dengan setting shared workbook tetapi saat
diset
sebagai shared workbook, program excel menginformasikan
bahwa tool shared workbook tidak bisa digunakan kalo
terdapat object excel table dalam workbook.
Pertanyaan / bahan
diskusi:1. Apakah ada cara lain agar bisa
sharing workbook yang ada object excel table
nya?2. Jika nomer #1 tidak bisa, saya berencana
mengkonversi excel-database tersebut ke microsoft access
(*.accdb) , tetapi proses input dan output tetap di
excel.saya telah membuat vba code sederhana untuk
connect ke access
sbb:'===
========Option ExplicitConst
sProvider As String =
"Microsoft.
sConnString As StringDim cnn As
ADODB.Connection
Private Function
CanConnectAccess(
Boolean sConnString =
"Provider=
";"
& _ "Data Source=" &
DbFile & ";" & _
"Persist Security Info=False;"
'create a new connection to access
database CanConnectAccess =
True rtnErr = vbNullString
Set cnn = New
ADODB.Connection On Error Resume
Next cnn.Open sConnString If
Err..Number Then rtnErr =
Err.Description CanConnectAccess =
False Err.Clear End
IfEnd
Function'
=dari vba code di atas, bagian mana yang perlu
dirubah agar database access bisa untuk multi
user?
Terimkasih
banyak sebelumnya. Mohon maaf jika terlalu
panjang.
Wassalamu'
wb.-zainul
#yiv3560235441 #yiv3560235441 --
#yiv3560235441ygrp-
border:1px solid #d8d8d8;font-
0;padding:0 10px;}
#yiv3560235441 #yiv3560235441ygrp-
border:1px solid #d8d8d8;}
#yiv3560235441 #yiv3560235441ygrp-
color:#628c2a;
122%;margin:
0;}
#yiv3560235441 #yiv3560235441ygrp-
{
margin-bottom:
#yiv3560235441 #yiv3560235441ygrp-
padding:0 0;}
#yiv3560235441 #yiv3560235441ygrp-
{
margin:0;}
#yiv3560235441 #yiv3560235441ygrp-
{
color:#0000ff;
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441ygrp-
font-family:
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441ygrp-
margin:10px
0px;font-weight:
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441ygrp-
margin-bottom:
#yiv3560235441 #yiv3560235441actio
font-family:
#yiv3560235441 #yiv3560235441activ
background-color:
Verdana;font-
#yiv3560235441 #yiv3560235441activ
font-weight:
#yiv3560235441 #yiv3560235441activ
text-transform:
#yiv3560235441 #yiv3560235441activ
color:#5085b6;
#yiv3560235441 #yiv3560235441activ
color:#ff7900;
#yiv3560235441 #yiv3560235441activ
.yiv3560235441under
text-decoration:
#yiv3560235441 .yiv3560235441attac
clear:both;display:
padding:10px
0;width:400px;
#yiv3560235441 .yiv3560235441attac
text-decoration:
#yiv3560235441 .yiv3560235441attac
border:none;
#yiv3560235441 .yiv3560235441attac
display:block;
#yiv3560235441 .yiv3560235441attac
text-decoration:
#yiv3560235441 blockquote {
margin:0 0 0 4px;}
#yiv3560235441 .yiv3560235441bold {
font-family:
#yiv3560235441 .yiv3560235441bold a {
text-decoration:
#yiv3560235441 dd.yiv3560235441las
font-family:
#yiv3560235441 dd.yiv3560235441las
margin-right:
#yiv3560235441 dd.yiv3560235441las
span.yiv3560235441y
margin-right:
#yiv3560235441 div.yiv3560235441at
text-decoration:
#yiv3560235441 div.yiv3560235441at
width:400px;
#yiv3560235441 div.yiv3560235441fi
#yiv3560235441
div.yiv3560235441fi
div.yiv3560235441fi
div.yiv3560235441fi
text-decoration:
#yiv3560235441 div.yiv3560235441ph
#yiv3560235441 div.yiv3560235441ph
#yiv3560235441 div.yiv3560235441ph
#yiv3560235441 div.yiv3560235441ph
text-decoration:
#yiv3560235441 div#yiv3560235441yg
#yiv3560235441ygrp-
{
font-family:
#yiv3560235441 .yiv3560235441green {
color:#628c2a;
#yiv3560235441 .yiv3560235441MsoNo
margin:0 0 0 0;}
#yiv3560235441 o {
font-size:0;
#yiv3560235441 #yiv3560235441photo
float:left;width:
#yiv3560235441 #yiv3560235441photo
border:1px solid
#666666;min-
#yiv3560235441 #yiv3560235441photo
color:#666666;
center;white-
#yiv3560235441 #yiv3560235441reco-
font-size:77%
#yiv3560235441 #yiv3560235441reco-
font-size:77%
#yiv3560235441 .yiv3560235441replb
margin:4px;}
#yiv3560235441 #yiv3560235441ygrp-
{
margin-right:
#yiv3560235441 #yiv3560235441ygrp-
font-size:13px;
sans-serif;}
#yiv3560235441 #yiv3560235441ygrp-
font-size:inherit;
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441 input, #yiv3560235441 textarea {
font:99% Arial, Helvetica, clean, sans-serif;}
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441
code {
font:115% monospace;}
#yiv3560235441 #yiv3560235441ygrp-
line-height:
#yiv3560235441 #yiv3560235441ygrp-
{
padding-bottom:
#yiv3560235441 #yiv3560235441ygrp-
font-family:
#yiv3560235441 #yiv3560235441ygrp-
p#yiv3560235441atta
color:#1E66AE;
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441reco-
color:#ff7900;
#yiv3560235441 #yiv3560235441ygrp-
margin-bottom:
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441ov
li a {
font-size:130%
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441ov
li {
font-size:77%
#yiv3560235441 #yiv3560235441ygrp-
#yiv3560235441ov
ul {
margin:0;padding:
#yiv3560235441 #yiv3560235441ygrp-
font-family:
#yiv3560235441 #yiv3560235441ygrp-
margin:0 0 1em 0;}
#yiv3560235441 #yiv3560235441ygrp-
font-size:120%
#yiv3560235441 #yiv3560235441ygrp-
{
border-right:
}
#yiv3560235441
#yiv1901667967 #yiv1901667967 --
#yiv1901667967ygrp-
border:1px solid #d8d8d8;font-
0;padding:0 10px;}
#yiv1901667967 #yiv1901667967ygrp-
border:1px solid #d8d8d8;}
#yiv1901667967 #yiv1901667967ygrp-
color:#628c2a;
0;}
#yiv1901667967 #yiv1901667967ygrp-
margin-bottom:
#yiv1901667967 #yiv1901667967ygrp-
padding:0 0;}
#yiv1901667967 #yiv1901667967ygrp-
margin:0;}
#yiv1901667967 #yiv1901667967ygrp-
color:#0000ff;
#yiv1901667967 #yiv1901667967ygrp-
#yiv1901667967ygrp-
font-family:
#yiv1901667967 #yiv1901667967ygrp-
#yiv1901667967ygrp-
margin:10px
0px;font-weight:
#yiv1901667967 #yiv1901667967ygrp-
#yiv1901667967ygrp-
margin-bottom:
#yiv1901667967 #yiv1901667967actio
font-family:
#yiv1901667967 #yiv1901667967activ
background-color:
#yiv1901667967 #yiv1901667967activ
font-weight:
#yiv1901667967 #yiv1901667967activ
text-transform:
#yiv1901667967 #yiv1901667967activ
color:#5085b6;
#yiv1901667967 #yiv1901667967activ
color:#ff7900;
#yiv1901667967 #yiv1901667967activ
.yiv1901667967under
text-decoration:
#yiv1901667967 .yiv1901667967attac
clear:both;display:
0;width:400px;
#yiv1901667967 .yiv1901667967attac
text-decoration:
#yiv1901667967 .yiv1901667967attac
border:none;
#yiv1901667967 .yiv1901667967attac
display:block;